{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204775632aa85571d95e9309f3f9148abc53e3e9be45813ecc600517e9a999f14364736f6c63430008110033",
    "sourceMap": "525:68513:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;525:68513:14;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204775632aa85571d95e9309f3f9148abc53e3e9be45813ecc600517e9a999f14364736f6c63430008110033",
    "sourceMap": "525:68513:14:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The original console.sol uses `int` and `uint` for computing function selectors, but it should use `int256` and `uint256`. This modified version fixes that. This version is recommended over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`. Reference: https://github.com/NomicFoundation/hardhat/issues/2178\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console2.sol\":\"console2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x225cc1ec33efd35c90e78aec0792ed9751cd6217e646271172421e96e2e2cc0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c6adbd216e40ca2387835b8618c82e7153cb826023d38943bbb0c2e992644aa\",\"dweb:/ipfs/QmZeejwEkm7iH9NHih7dPbuNqivuFn27EkgJesgByzS9wD\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.17+commit.8df45f5f"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/console2.sol": "console2"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/console2.sol": {
        "keccak256": "0x225cc1ec33efd35c90e78aec0792ed9751cd6217e646271172421e96e2e2cc0f",
        "urls": [
          "bzz-raw://6c6adbd216e40ca2387835b8618c82e7153cb826023d38943bbb0c2e992644aa",
          "dweb:/ipfs/QmZeejwEkm7iH9NHih7dPbuNqivuFn27EkgJesgByzS9wD"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/console2.sol",
    "id": 24445,
    "exportedSymbols": {
      "console2": [
        24444
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:69006:14",
    "nodes": [
      {
        "id": 16381,
        "nodeType": "PragmaDirective",
        "src": "32:32:14",
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".22",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 24444,
        "nodeType": "ContractDefinition",
        "src": "525:68513:14",
        "nodes": [
          {
            "id": 16388,
            "nodeType": "VariableDeclaration",
            "src": "548:86:14",
            "constant": true,
            "mutability": "constant",
            "name": "CONSOLE_ADDRESS",
            "nameLocation": "565:15:14",
            "scope": 24444,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 16383,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "548:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "307830303030303030303030303030303030303036333646366537333646366336353265366336663637",
                  "id": 16386,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "591:42:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "value": "0x000000000000000000636F6e736F6c652e6c6f67"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 16385,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "583:7:14",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 16384,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "583:7:14",
                  "typeDescriptions": {}
                }
              },
              "id": 16387,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "583:51:14",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 16404,
            "nodeType": "FunctionDefinition",
            "src": "641:376:14",
            "body": {
              "id": 16403,
              "nodeType": "Block",
              "src": "701:316:14",
              "statements": [
                {
                  "assignments": [
                    16394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16394,
                      "mutability": "mutable",
                      "name": "payloadLength",
                      "nameLocation": "719:13:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 16403,
                      "src": "711:21:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 16393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 16397,
                  "initialValue": {
                    "expression": {
                      "id": 16395,
                      "name": "payload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16390,
                      "src": "735:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 16396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "743:6:14",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "735:14:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "711:38:14"
                },
                {
                  "assignments": [
                    16399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16399,
                      "mutability": "mutable",
                      "name": "consoleAddress",
                      "nameLocation": "767:14:14",
                      "nodeType": "VariableDeclaration",
                      "scope": 16403,
                      "src": "759:22:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 16398,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "759:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 16401,
                  "initialValue": {
                    "id": 16400,
                    "name": "CONSOLE_ADDRESS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16388,
                    "src": "784:15:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "759:40:14"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "861:150:14",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "875:36:14",
                        "value": {
                          "arguments": [
                            {
                              "name": "payload",
                              "nodeType": "YulIdentifier",
                              "src": "899:7:14"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "908:2:14",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "895:3:14"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "895:16:14"
                        },
                        "variables": [
                          {
                            "name": "payloadStart",
                            "nodeType": "YulTypedName",
                            "src": "879:12:14",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "924:77:14",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [],
                              "functionName": {
                                "name": "gas",
                                "nodeType": "YulIdentifier",
                                "src": "944:3:14"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "944:5:14"
                            },
                            {
                              "name": "consoleAddress",
                              "nodeType": "YulIdentifier",
                              "src": "951:14:14"
                            },
                            {
                              "name": "payloadStart",
                              "nodeType": "YulIdentifier",
                              "src": "967:12:14"
                            },
                            {
                              "name": "payloadLength",
                              "nodeType": "YulIdentifier",
                              "src": "981:13:14"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "996:1:14",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "999:1:14",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "staticcall",
                            "nodeType": "YulIdentifier",
                            "src": "933:10:14"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "933:68:14"
                        },
                        "variables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "928:1:14",
                            "type": ""
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 16399,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "951:14:14",
                      "valueSize": 1
                    },
                    {
                      "declaration": 16390,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "899:7:14",
                      "valueSize": 1
                    },
                    {
                      "declaration": 16394,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "981:13:14",
                      "valueSize": 1
                    }
                  ],
                  "id": 16402,
                  "nodeType": "InlineAssembly",
                  "src": "852:159:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_sendLogPayload",
            "nameLocation": "650:15:14",
            "parameters": {
              "id": 16391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16390,
                  "mutability": "mutable",
                  "name": "payload",
                  "nameLocation": "679:7:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16404,
                  "src": "666:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 16389,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "666:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "665:22:14"
            },
            "returnParameters": {
              "id": 16392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "701:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 16415,
            "nodeType": "FunctionDefinition",
            "src": "1023:95:14",
            "body": {
              "id": 16414,
              "nodeType": "Block",
              "src": "1052:66:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672829",
                            "id": 16410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1102:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                              "typeString": "literal_string \"log()\""
                            },
                            "value": "log()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                              "typeString": "literal_string \"log()\""
                            }
                          ],
                          "expression": {
                            "id": 16408,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1078:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1082:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1078:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1078:32:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16407,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1062:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1062:49:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16413,
                  "nodeType": "ExpressionStatement",
                  "src": "1062:49:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "1032:3:14",
            "parameters": {
              "id": 16405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1035:2:14"
            },
            "returnParameters": {
              "id": 16406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1052:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16429,
            "nodeType": "FunctionDefinition",
            "src": "1124:117:14",
            "body": {
              "id": 16428,
              "nodeType": "Block",
              "src": "1165:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728696e7432353629",
                            "id": 16423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1215:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d5b6cb95ba2d00a93cd4ffa61ec07ef4bb1694f20c02a3cccb170a38df81ef8",
                              "typeString": "literal_string \"log(int256)\""
                            },
                            "value": "log(int256)"
                          },
                          {
                            "id": 16424,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16417,
                            "src": "1230:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2d5b6cb95ba2d00a93cd4ffa61ec07ef4bb1694f20c02a3cccb170a38df81ef8",
                              "typeString": "literal_string \"log(int256)\""
                            },
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 16421,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1191:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1195:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1191:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1191:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16420,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1175:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1175:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16427,
                  "nodeType": "ExpressionStatement",
                  "src": "1175:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logInt",
            "nameLocation": "1133:6:14",
            "parameters": {
              "id": 16418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16417,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1147:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16429,
                  "src": "1140:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 16416,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1140:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1139:11:14"
            },
            "returnParameters": {
              "id": 16419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1165:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16443,
            "nodeType": "FunctionDefinition",
            "src": "1247:120:14",
            "body": {
              "id": 16442,
              "nodeType": "Block",
              "src": "1290:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e7432353629",
                            "id": 16437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1340:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f82c50f1848136e6c140b186ea0c768b7deda5efffe42c25e96336a90b26c744",
                              "typeString": "literal_string \"log(uint256)\""
                            },
                            "value": "log(uint256)"
                          },
                          {
                            "id": 16438,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16431,
                            "src": "1356:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f82c50f1848136e6c140b186ea0c768b7deda5efffe42c25e96336a90b26c744",
                              "typeString": "literal_string \"log(uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16435,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1316:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1320:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1316:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1316:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16434,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1300:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1300:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16441,
                  "nodeType": "ExpressionStatement",
                  "src": "1300:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logUint",
            "nameLocation": "1256:7:14",
            "parameters": {
              "id": 16432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16431,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1272:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16443,
                  "src": "1264:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16430,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1263:12:14"
            },
            "returnParameters": {
              "id": 16433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1290:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16457,
            "nodeType": "FunctionDefinition",
            "src": "1373:127:14",
            "body": {
              "id": 16456,
              "nodeType": "Block",
              "src": "1424:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e6729",
                            "id": 16451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1474:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            "value": "log(string)"
                          },
                          {
                            "id": 16452,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16445,
                            "src": "1489:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16449,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1450:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1454:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1450:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1450:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16448,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1434:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1434:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16455,
                  "nodeType": "ExpressionStatement",
                  "src": "1434:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logString",
            "nameLocation": "1382:9:14",
            "parameters": {
              "id": 16446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16445,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1406:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16457,
                  "src": "1392:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1392:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1391:18:14"
            },
            "returnParameters": {
              "id": 16447,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1424:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16471,
            "nodeType": "FunctionDefinition",
            "src": "1506:114:14",
            "body": {
              "id": 16470,
              "nodeType": "Block",
              "src": "1546:74:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c29",
                            "id": 16465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1596:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            "value": "log(bool)"
                          },
                          {
                            "id": 16466,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16459,
                            "src": "1609:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16463,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1572:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1576:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1572:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1572:40:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16462,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1556:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1556:57:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16469,
                  "nodeType": "ExpressionStatement",
                  "src": "1556:57:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBool",
            "nameLocation": "1515:7:14",
            "parameters": {
              "id": 16460,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16459,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1528:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16471,
                  "src": "1523:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16458,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1523:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1522:9:14"
            },
            "returnParameters": {
              "id": 16461,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1546:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16485,
            "nodeType": "FunctionDefinition",
            "src": "1626:123:14",
            "body": {
              "id": 16484,
              "nodeType": "Block",
              "src": "1672:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286164647265737329",
                            "id": 16479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1722:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            "value": "log(address)"
                          },
                          {
                            "id": 16480,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16473,
                            "src": "1738:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16477,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1698:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1702:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1698:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1698:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16476,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1682:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1682:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16483,
                  "nodeType": "ExpressionStatement",
                  "src": "1682:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logAddress",
            "nameLocation": "1635:10:14",
            "parameters": {
              "id": 16474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16473,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1654:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16485,
                  "src": "1646:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1646:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1645:12:14"
            },
            "returnParameters": {
              "id": 16475,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1672:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16499,
            "nodeType": "FunctionDefinition",
            "src": "1755:124:14",
            "body": {
              "id": 16498,
              "nodeType": "Block",
              "src": "1804:75:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728627974657329",
                            "id": 16493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1854:12:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                              "typeString": "literal_string \"log(bytes)\""
                            },
                            "value": "log(bytes)"
                          },
                          {
                            "id": 16494,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16487,
                            "src": "1868:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                              "typeString": "literal_string \"log(bytes)\""
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 16491,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1830:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1834:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1830:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1830:41:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16490,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1814:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1814:58:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16497,
                  "nodeType": "ExpressionStatement",
                  "src": "1814:58:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes",
            "nameLocation": "1764:8:14",
            "parameters": {
              "id": 16488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16487,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1786:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16499,
                  "src": "1773:15:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 16486,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1773:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1772:17:14"
            },
            "returnParameters": {
              "id": 16489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1804:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16513,
            "nodeType": "FunctionDefinition",
            "src": "1885:120:14",
            "body": {
              "id": 16512,
              "nodeType": "Block",
              "src": "1929:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733129",
                            "id": 16507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1979:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                              "typeString": "literal_string \"log(bytes1)\""
                            },
                            "value": "log(bytes1)"
                          },
                          {
                            "id": 16508,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16501,
                            "src": "1994:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                              "typeString": "literal_string \"log(bytes1)\""
                            },
                            {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          ],
                          "expression": {
                            "id": 16505,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1955:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1959:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1955:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1955:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16504,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "1939:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1939:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16511,
                  "nodeType": "ExpressionStatement",
                  "src": "1939:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes1",
            "nameLocation": "1894:9:14",
            "parameters": {
              "id": 16502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16501,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1911:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16513,
                  "src": "1904:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes1",
                    "typeString": "bytes1"
                  },
                  "typeName": {
                    "id": 16500,
                    "name": "bytes1",
                    "nodeType": "ElementaryTypeName",
                    "src": "1904:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1903:11:14"
            },
            "returnParameters": {
              "id": 16503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1929:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16527,
            "nodeType": "FunctionDefinition",
            "src": "2011:120:14",
            "body": {
              "id": 16526,
              "nodeType": "Block",
              "src": "2055:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733229",
                            "id": 16521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2105:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                              "typeString": "literal_string \"log(bytes2)\""
                            },
                            "value": "log(bytes2)"
                          },
                          {
                            "id": 16522,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16515,
                            "src": "2120:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                              "typeString": "literal_string \"log(bytes2)\""
                            },
                            {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          ],
                          "expression": {
                            "id": 16519,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2081:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2085:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2081:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2081:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16518,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2065:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2065:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16525,
                  "nodeType": "ExpressionStatement",
                  "src": "2065:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes2",
            "nameLocation": "2020:9:14",
            "parameters": {
              "id": 16516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16515,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2037:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16527,
                  "src": "2030:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 16514,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "2030:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2029:11:14"
            },
            "returnParameters": {
              "id": 16517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2055:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16541,
            "nodeType": "FunctionDefinition",
            "src": "2137:120:14",
            "body": {
              "id": 16540,
              "nodeType": "Block",
              "src": "2181:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733329",
                            "id": 16535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2231:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                              "typeString": "literal_string \"log(bytes3)\""
                            },
                            "value": "log(bytes3)"
                          },
                          {
                            "id": 16536,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16529,
                            "src": "2246:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes3",
                              "typeString": "bytes3"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                              "typeString": "literal_string \"log(bytes3)\""
                            },
                            {
                              "typeIdentifier": "t_bytes3",
                              "typeString": "bytes3"
                            }
                          ],
                          "expression": {
                            "id": 16533,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2207:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2211:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2207:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2207:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16532,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2191:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2191:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16539,
                  "nodeType": "ExpressionStatement",
                  "src": "2191:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes3",
            "nameLocation": "2146:9:14",
            "parameters": {
              "id": 16530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16529,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2163:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16541,
                  "src": "2156:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes3",
                    "typeString": "bytes3"
                  },
                  "typeName": {
                    "id": 16528,
                    "name": "bytes3",
                    "nodeType": "ElementaryTypeName",
                    "src": "2156:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes3",
                      "typeString": "bytes3"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2155:11:14"
            },
            "returnParameters": {
              "id": 16531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2181:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16555,
            "nodeType": "FunctionDefinition",
            "src": "2263:120:14",
            "body": {
              "id": 16554,
              "nodeType": "Block",
              "src": "2307:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733429",
                            "id": 16549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2357:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                              "typeString": "literal_string \"log(bytes4)\""
                            },
                            "value": "log(bytes4)"
                          },
                          {
                            "id": 16550,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16543,
                            "src": "2372:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                              "typeString": "literal_string \"log(bytes4)\""
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 16547,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2333:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2337:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2333:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2333:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16546,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2317:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2317:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16553,
                  "nodeType": "ExpressionStatement",
                  "src": "2317:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes4",
            "nameLocation": "2272:9:14",
            "parameters": {
              "id": 16544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16543,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2289:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16555,
                  "src": "2282:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 16542,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2282:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2281:11:14"
            },
            "returnParameters": {
              "id": 16545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2307:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16569,
            "nodeType": "FunctionDefinition",
            "src": "2389:120:14",
            "body": {
              "id": 16568,
              "nodeType": "Block",
              "src": "2433:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733529",
                            "id": 16563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2483:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                              "typeString": "literal_string \"log(bytes5)\""
                            },
                            "value": "log(bytes5)"
                          },
                          {
                            "id": 16564,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16557,
                            "src": "2498:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes5",
                              "typeString": "bytes5"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                              "typeString": "literal_string \"log(bytes5)\""
                            },
                            {
                              "typeIdentifier": "t_bytes5",
                              "typeString": "bytes5"
                            }
                          ],
                          "expression": {
                            "id": 16561,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2459:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2463:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2459:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2459:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16560,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2443:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2443:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16567,
                  "nodeType": "ExpressionStatement",
                  "src": "2443:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes5",
            "nameLocation": "2398:9:14",
            "parameters": {
              "id": 16558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16557,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2415:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16569,
                  "src": "2408:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  },
                  "typeName": {
                    "id": 16556,
                    "name": "bytes5",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2407:11:14"
            },
            "returnParameters": {
              "id": 16559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2433:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16583,
            "nodeType": "FunctionDefinition",
            "src": "2515:120:14",
            "body": {
              "id": 16582,
              "nodeType": "Block",
              "src": "2559:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733629",
                            "id": 16577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2609:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                              "typeString": "literal_string \"log(bytes6)\""
                            },
                            "value": "log(bytes6)"
                          },
                          {
                            "id": 16578,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16571,
                            "src": "2624:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes6",
                              "typeString": "bytes6"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                              "typeString": "literal_string \"log(bytes6)\""
                            },
                            {
                              "typeIdentifier": "t_bytes6",
                              "typeString": "bytes6"
                            }
                          ],
                          "expression": {
                            "id": 16575,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2585:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2589:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2585:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2585:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16574,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2569:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2569:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16581,
                  "nodeType": "ExpressionStatement",
                  "src": "2569:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes6",
            "nameLocation": "2524:9:14",
            "parameters": {
              "id": 16572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16571,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2541:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16583,
                  "src": "2534:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes6",
                    "typeString": "bytes6"
                  },
                  "typeName": {
                    "id": 16570,
                    "name": "bytes6",
                    "nodeType": "ElementaryTypeName",
                    "src": "2534:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes6",
                      "typeString": "bytes6"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2533:11:14"
            },
            "returnParameters": {
              "id": 16573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2559:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16597,
            "nodeType": "FunctionDefinition",
            "src": "2641:120:14",
            "body": {
              "id": 16596,
              "nodeType": "Block",
              "src": "2685:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733729",
                            "id": 16591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2735:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                              "typeString": "literal_string \"log(bytes7)\""
                            },
                            "value": "log(bytes7)"
                          },
                          {
                            "id": 16592,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16585,
                            "src": "2750:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes7",
                              "typeString": "bytes7"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                              "typeString": "literal_string \"log(bytes7)\""
                            },
                            {
                              "typeIdentifier": "t_bytes7",
                              "typeString": "bytes7"
                            }
                          ],
                          "expression": {
                            "id": 16589,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2711:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2715:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2711:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2711:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16588,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2695:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2695:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16595,
                  "nodeType": "ExpressionStatement",
                  "src": "2695:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes7",
            "nameLocation": "2650:9:14",
            "parameters": {
              "id": 16586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16585,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2667:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16597,
                  "src": "2660:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes7",
                    "typeString": "bytes7"
                  },
                  "typeName": {
                    "id": 16584,
                    "name": "bytes7",
                    "nodeType": "ElementaryTypeName",
                    "src": "2660:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes7",
                      "typeString": "bytes7"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2659:11:14"
            },
            "returnParameters": {
              "id": 16587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2685:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16611,
            "nodeType": "FunctionDefinition",
            "src": "2767:120:14",
            "body": {
              "id": 16610,
              "nodeType": "Block",
              "src": "2811:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733829",
                            "id": 16605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2861:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                              "typeString": "literal_string \"log(bytes8)\""
                            },
                            "value": "log(bytes8)"
                          },
                          {
                            "id": 16606,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16599,
                            "src": "2876:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                              "typeString": "literal_string \"log(bytes8)\""
                            },
                            {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          ],
                          "expression": {
                            "id": 16603,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2837:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2841:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2837:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2837:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16602,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2821:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2821:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16609,
                  "nodeType": "ExpressionStatement",
                  "src": "2821:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes8",
            "nameLocation": "2776:9:14",
            "parameters": {
              "id": 16600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16599,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2793:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16611,
                  "src": "2786:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 16598,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2786:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2785:11:14"
            },
            "returnParameters": {
              "id": 16601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2811:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16625,
            "nodeType": "FunctionDefinition",
            "src": "2893:120:14",
            "body": {
              "id": 16624,
              "nodeType": "Block",
              "src": "2937:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733929",
                            "id": 16619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2987:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                              "typeString": "literal_string \"log(bytes9)\""
                            },
                            "value": "log(bytes9)"
                          },
                          {
                            "id": 16620,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16613,
                            "src": "3002:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes9",
                              "typeString": "bytes9"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                              "typeString": "literal_string \"log(bytes9)\""
                            },
                            {
                              "typeIdentifier": "t_bytes9",
                              "typeString": "bytes9"
                            }
                          ],
                          "expression": {
                            "id": 16617,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2963:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2967:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2963:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2963:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16616,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "2947:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2947:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16623,
                  "nodeType": "ExpressionStatement",
                  "src": "2947:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes9",
            "nameLocation": "2902:9:14",
            "parameters": {
              "id": 16614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16613,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2919:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16625,
                  "src": "2912:9:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes9",
                    "typeString": "bytes9"
                  },
                  "typeName": {
                    "id": 16612,
                    "name": "bytes9",
                    "nodeType": "ElementaryTypeName",
                    "src": "2912:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes9",
                      "typeString": "bytes9"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2911:11:14"
            },
            "returnParameters": {
              "id": 16615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2937:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16639,
            "nodeType": "FunctionDefinition",
            "src": "3019:123:14",
            "body": {
              "id": 16638,
              "nodeType": "Block",
              "src": "3065:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313029",
                            "id": 16633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3115:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                              "typeString": "literal_string \"log(bytes10)\""
                            },
                            "value": "log(bytes10)"
                          },
                          {
                            "id": 16634,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16627,
                            "src": "3131:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes10",
                              "typeString": "bytes10"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                              "typeString": "literal_string \"log(bytes10)\""
                            },
                            {
                              "typeIdentifier": "t_bytes10",
                              "typeString": "bytes10"
                            }
                          ],
                          "expression": {
                            "id": 16631,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3091:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3095:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3091:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3091:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16630,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3075:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3075:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16637,
                  "nodeType": "ExpressionStatement",
                  "src": "3075:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes10",
            "nameLocation": "3028:10:14",
            "parameters": {
              "id": 16628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16627,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3047:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16639,
                  "src": "3039:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes10",
                    "typeString": "bytes10"
                  },
                  "typeName": {
                    "id": 16626,
                    "name": "bytes10",
                    "nodeType": "ElementaryTypeName",
                    "src": "3039:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes10",
                      "typeString": "bytes10"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3038:12:14"
            },
            "returnParameters": {
              "id": 16629,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3065:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16653,
            "nodeType": "FunctionDefinition",
            "src": "3148:123:14",
            "body": {
              "id": 16652,
              "nodeType": "Block",
              "src": "3194:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313129",
                            "id": 16647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3244:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                              "typeString": "literal_string \"log(bytes11)\""
                            },
                            "value": "log(bytes11)"
                          },
                          {
                            "id": 16648,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16641,
                            "src": "3260:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes11",
                              "typeString": "bytes11"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                              "typeString": "literal_string \"log(bytes11)\""
                            },
                            {
                              "typeIdentifier": "t_bytes11",
                              "typeString": "bytes11"
                            }
                          ],
                          "expression": {
                            "id": 16645,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3220:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3224:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3220:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3220:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16644,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3204:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3204:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16651,
                  "nodeType": "ExpressionStatement",
                  "src": "3204:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes11",
            "nameLocation": "3157:10:14",
            "parameters": {
              "id": 16642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16641,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3176:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16653,
                  "src": "3168:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes11",
                    "typeString": "bytes11"
                  },
                  "typeName": {
                    "id": 16640,
                    "name": "bytes11",
                    "nodeType": "ElementaryTypeName",
                    "src": "3168:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes11",
                      "typeString": "bytes11"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3167:12:14"
            },
            "returnParameters": {
              "id": 16643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3194:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16667,
            "nodeType": "FunctionDefinition",
            "src": "3277:123:14",
            "body": {
              "id": 16666,
              "nodeType": "Block",
              "src": "3323:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313229",
                            "id": 16661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3373:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                              "typeString": "literal_string \"log(bytes12)\""
                            },
                            "value": "log(bytes12)"
                          },
                          {
                            "id": 16662,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16655,
                            "src": "3389:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                              "typeString": "literal_string \"log(bytes12)\""
                            },
                            {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          ],
                          "expression": {
                            "id": 16659,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3349:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3353:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3349:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3349:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16658,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3333:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3333:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16665,
                  "nodeType": "ExpressionStatement",
                  "src": "3333:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes12",
            "nameLocation": "3286:10:14",
            "parameters": {
              "id": 16656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16655,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3305:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16667,
                  "src": "3297:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 16654,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "3297:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3296:12:14"
            },
            "returnParameters": {
              "id": 16657,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3323:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16681,
            "nodeType": "FunctionDefinition",
            "src": "3406:123:14",
            "body": {
              "id": 16680,
              "nodeType": "Block",
              "src": "3452:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313329",
                            "id": 16675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3502:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                              "typeString": "literal_string \"log(bytes13)\""
                            },
                            "value": "log(bytes13)"
                          },
                          {
                            "id": 16676,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16669,
                            "src": "3518:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes13",
                              "typeString": "bytes13"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                              "typeString": "literal_string \"log(bytes13)\""
                            },
                            {
                              "typeIdentifier": "t_bytes13",
                              "typeString": "bytes13"
                            }
                          ],
                          "expression": {
                            "id": 16673,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3478:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3482:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3478:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3478:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16672,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3462:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3462:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16679,
                  "nodeType": "ExpressionStatement",
                  "src": "3462:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes13",
            "nameLocation": "3415:10:14",
            "parameters": {
              "id": 16670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16669,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3434:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16681,
                  "src": "3426:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes13",
                    "typeString": "bytes13"
                  },
                  "typeName": {
                    "id": 16668,
                    "name": "bytes13",
                    "nodeType": "ElementaryTypeName",
                    "src": "3426:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes13",
                      "typeString": "bytes13"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3425:12:14"
            },
            "returnParameters": {
              "id": 16671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3452:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16695,
            "nodeType": "FunctionDefinition",
            "src": "3535:123:14",
            "body": {
              "id": 16694,
              "nodeType": "Block",
              "src": "3581:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313429",
                            "id": 16689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3631:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                              "typeString": "literal_string \"log(bytes14)\""
                            },
                            "value": "log(bytes14)"
                          },
                          {
                            "id": 16690,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16683,
                            "src": "3647:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes14",
                              "typeString": "bytes14"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                              "typeString": "literal_string \"log(bytes14)\""
                            },
                            {
                              "typeIdentifier": "t_bytes14",
                              "typeString": "bytes14"
                            }
                          ],
                          "expression": {
                            "id": 16687,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3607:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3611:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3607:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3607:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16686,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3591:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3591:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16693,
                  "nodeType": "ExpressionStatement",
                  "src": "3591:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes14",
            "nameLocation": "3544:10:14",
            "parameters": {
              "id": 16684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16683,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3563:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16695,
                  "src": "3555:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes14",
                    "typeString": "bytes14"
                  },
                  "typeName": {
                    "id": 16682,
                    "name": "bytes14",
                    "nodeType": "ElementaryTypeName",
                    "src": "3555:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes14",
                      "typeString": "bytes14"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3554:12:14"
            },
            "returnParameters": {
              "id": 16685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3581:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16709,
            "nodeType": "FunctionDefinition",
            "src": "3664:123:14",
            "body": {
              "id": 16708,
              "nodeType": "Block",
              "src": "3710:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313529",
                            "id": 16703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3760:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                              "typeString": "literal_string \"log(bytes15)\""
                            },
                            "value": "log(bytes15)"
                          },
                          {
                            "id": 16704,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16697,
                            "src": "3776:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes15",
                              "typeString": "bytes15"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                              "typeString": "literal_string \"log(bytes15)\""
                            },
                            {
                              "typeIdentifier": "t_bytes15",
                              "typeString": "bytes15"
                            }
                          ],
                          "expression": {
                            "id": 16701,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3736:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3740:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3736:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3736:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16700,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3720:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3720:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16707,
                  "nodeType": "ExpressionStatement",
                  "src": "3720:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes15",
            "nameLocation": "3673:10:14",
            "parameters": {
              "id": 16698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16697,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3692:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16709,
                  "src": "3684:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes15",
                    "typeString": "bytes15"
                  },
                  "typeName": {
                    "id": 16696,
                    "name": "bytes15",
                    "nodeType": "ElementaryTypeName",
                    "src": "3684:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes15",
                      "typeString": "bytes15"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3683:12:14"
            },
            "returnParameters": {
              "id": 16699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3710:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16723,
            "nodeType": "FunctionDefinition",
            "src": "3793:123:14",
            "body": {
              "id": 16722,
              "nodeType": "Block",
              "src": "3839:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313629",
                            "id": 16717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3889:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                              "typeString": "literal_string \"log(bytes16)\""
                            },
                            "value": "log(bytes16)"
                          },
                          {
                            "id": 16718,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16711,
                            "src": "3905:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes16",
                              "typeString": "bytes16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                              "typeString": "literal_string \"log(bytes16)\""
                            },
                            {
                              "typeIdentifier": "t_bytes16",
                              "typeString": "bytes16"
                            }
                          ],
                          "expression": {
                            "id": 16715,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3865:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3869:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3865:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3865:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16714,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3849:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3849:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16721,
                  "nodeType": "ExpressionStatement",
                  "src": "3849:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes16",
            "nameLocation": "3802:10:14",
            "parameters": {
              "id": 16712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16711,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3821:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16723,
                  "src": "3813:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 16710,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3813:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3812:12:14"
            },
            "returnParameters": {
              "id": 16713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3839:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16737,
            "nodeType": "FunctionDefinition",
            "src": "3922:123:14",
            "body": {
              "id": 16736,
              "nodeType": "Block",
              "src": "3968:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313729",
                            "id": 16731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4018:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                              "typeString": "literal_string \"log(bytes17)\""
                            },
                            "value": "log(bytes17)"
                          },
                          {
                            "id": 16732,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16725,
                            "src": "4034:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes17",
                              "typeString": "bytes17"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                              "typeString": "literal_string \"log(bytes17)\""
                            },
                            {
                              "typeIdentifier": "t_bytes17",
                              "typeString": "bytes17"
                            }
                          ],
                          "expression": {
                            "id": 16729,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3994:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3998:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3994:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3994:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16728,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "3978:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3978:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16735,
                  "nodeType": "ExpressionStatement",
                  "src": "3978:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes17",
            "nameLocation": "3931:10:14",
            "parameters": {
              "id": 16726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16725,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3950:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16737,
                  "src": "3942:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes17",
                    "typeString": "bytes17"
                  },
                  "typeName": {
                    "id": 16724,
                    "name": "bytes17",
                    "nodeType": "ElementaryTypeName",
                    "src": "3942:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes17",
                      "typeString": "bytes17"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3941:12:14"
            },
            "returnParameters": {
              "id": 16727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3968:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16751,
            "nodeType": "FunctionDefinition",
            "src": "4051:123:14",
            "body": {
              "id": 16750,
              "nodeType": "Block",
              "src": "4097:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313829",
                            "id": 16745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4147:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                              "typeString": "literal_string \"log(bytes18)\""
                            },
                            "value": "log(bytes18)"
                          },
                          {
                            "id": 16746,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16739,
                            "src": "4163:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes18",
                              "typeString": "bytes18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                              "typeString": "literal_string \"log(bytes18)\""
                            },
                            {
                              "typeIdentifier": "t_bytes18",
                              "typeString": "bytes18"
                            }
                          ],
                          "expression": {
                            "id": 16743,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4123:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4127:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4123:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4123:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16742,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4107:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4107:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16749,
                  "nodeType": "ExpressionStatement",
                  "src": "4107:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes18",
            "nameLocation": "4060:10:14",
            "parameters": {
              "id": 16740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16739,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4079:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16751,
                  "src": "4071:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes18",
                    "typeString": "bytes18"
                  },
                  "typeName": {
                    "id": 16738,
                    "name": "bytes18",
                    "nodeType": "ElementaryTypeName",
                    "src": "4071:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes18",
                      "typeString": "bytes18"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4070:12:14"
            },
            "returnParameters": {
              "id": 16741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4097:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16765,
            "nodeType": "FunctionDefinition",
            "src": "4180:123:14",
            "body": {
              "id": 16764,
              "nodeType": "Block",
              "src": "4226:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313929",
                            "id": 16759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4276:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                              "typeString": "literal_string \"log(bytes19)\""
                            },
                            "value": "log(bytes19)"
                          },
                          {
                            "id": 16760,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16753,
                            "src": "4292:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes19",
                              "typeString": "bytes19"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                              "typeString": "literal_string \"log(bytes19)\""
                            },
                            {
                              "typeIdentifier": "t_bytes19",
                              "typeString": "bytes19"
                            }
                          ],
                          "expression": {
                            "id": 16757,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4252:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4256:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4252:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4252:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16756,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4236:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4236:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16763,
                  "nodeType": "ExpressionStatement",
                  "src": "4236:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes19",
            "nameLocation": "4189:10:14",
            "parameters": {
              "id": 16754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16753,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4208:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16765,
                  "src": "4200:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes19",
                    "typeString": "bytes19"
                  },
                  "typeName": {
                    "id": 16752,
                    "name": "bytes19",
                    "nodeType": "ElementaryTypeName",
                    "src": "4200:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes19",
                      "typeString": "bytes19"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4199:12:14"
            },
            "returnParameters": {
              "id": 16755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4226:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16779,
            "nodeType": "FunctionDefinition",
            "src": "4309:123:14",
            "body": {
              "id": 16778,
              "nodeType": "Block",
              "src": "4355:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323029",
                            "id": 16773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4405:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                              "typeString": "literal_string \"log(bytes20)\""
                            },
                            "value": "log(bytes20)"
                          },
                          {
                            "id": 16774,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16767,
                            "src": "4421:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                              "typeString": "literal_string \"log(bytes20)\""
                            },
                            {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          ],
                          "expression": {
                            "id": 16771,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4381:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4385:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4381:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4381:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16770,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4365:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4365:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16777,
                  "nodeType": "ExpressionStatement",
                  "src": "4365:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes20",
            "nameLocation": "4318:10:14",
            "parameters": {
              "id": 16768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16767,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4337:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16779,
                  "src": "4329:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 16766,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "4329:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4328:12:14"
            },
            "returnParameters": {
              "id": 16769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4355:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16793,
            "nodeType": "FunctionDefinition",
            "src": "4438:123:14",
            "body": {
              "id": 16792,
              "nodeType": "Block",
              "src": "4484:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323129",
                            "id": 16787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4534:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                              "typeString": "literal_string \"log(bytes21)\""
                            },
                            "value": "log(bytes21)"
                          },
                          {
                            "id": 16788,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16781,
                            "src": "4550:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes21",
                              "typeString": "bytes21"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                              "typeString": "literal_string \"log(bytes21)\""
                            },
                            {
                              "typeIdentifier": "t_bytes21",
                              "typeString": "bytes21"
                            }
                          ],
                          "expression": {
                            "id": 16785,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4510:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4514:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4510:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4510:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16784,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4494:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4494:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16791,
                  "nodeType": "ExpressionStatement",
                  "src": "4494:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes21",
            "nameLocation": "4447:10:14",
            "parameters": {
              "id": 16782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16781,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4466:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16793,
                  "src": "4458:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes21",
                    "typeString": "bytes21"
                  },
                  "typeName": {
                    "id": 16780,
                    "name": "bytes21",
                    "nodeType": "ElementaryTypeName",
                    "src": "4458:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes21",
                      "typeString": "bytes21"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4457:12:14"
            },
            "returnParameters": {
              "id": 16783,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4484:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16807,
            "nodeType": "FunctionDefinition",
            "src": "4567:123:14",
            "body": {
              "id": 16806,
              "nodeType": "Block",
              "src": "4613:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323229",
                            "id": 16801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4663:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                              "typeString": "literal_string \"log(bytes22)\""
                            },
                            "value": "log(bytes22)"
                          },
                          {
                            "id": 16802,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16795,
                            "src": "4679:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes22",
                              "typeString": "bytes22"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                              "typeString": "literal_string \"log(bytes22)\""
                            },
                            {
                              "typeIdentifier": "t_bytes22",
                              "typeString": "bytes22"
                            }
                          ],
                          "expression": {
                            "id": 16799,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4639:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4643:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4639:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4639:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16798,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4623:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4623:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16805,
                  "nodeType": "ExpressionStatement",
                  "src": "4623:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes22",
            "nameLocation": "4576:10:14",
            "parameters": {
              "id": 16796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16795,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4595:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16807,
                  "src": "4587:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes22",
                    "typeString": "bytes22"
                  },
                  "typeName": {
                    "id": 16794,
                    "name": "bytes22",
                    "nodeType": "ElementaryTypeName",
                    "src": "4587:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes22",
                      "typeString": "bytes22"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4586:12:14"
            },
            "returnParameters": {
              "id": 16797,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4613:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16821,
            "nodeType": "FunctionDefinition",
            "src": "4696:123:14",
            "body": {
              "id": 16820,
              "nodeType": "Block",
              "src": "4742:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323329",
                            "id": 16815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4792:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                              "typeString": "literal_string \"log(bytes23)\""
                            },
                            "value": "log(bytes23)"
                          },
                          {
                            "id": 16816,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16809,
                            "src": "4808:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes23",
                              "typeString": "bytes23"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                              "typeString": "literal_string \"log(bytes23)\""
                            },
                            {
                              "typeIdentifier": "t_bytes23",
                              "typeString": "bytes23"
                            }
                          ],
                          "expression": {
                            "id": 16813,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4768:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4772:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4768:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4768:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16812,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4752:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4752:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16819,
                  "nodeType": "ExpressionStatement",
                  "src": "4752:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes23",
            "nameLocation": "4705:10:14",
            "parameters": {
              "id": 16810,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16809,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4724:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16821,
                  "src": "4716:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes23",
                    "typeString": "bytes23"
                  },
                  "typeName": {
                    "id": 16808,
                    "name": "bytes23",
                    "nodeType": "ElementaryTypeName",
                    "src": "4716:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes23",
                      "typeString": "bytes23"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4715:12:14"
            },
            "returnParameters": {
              "id": 16811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4742:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16835,
            "nodeType": "FunctionDefinition",
            "src": "4825:123:14",
            "body": {
              "id": 16834,
              "nodeType": "Block",
              "src": "4871:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323429",
                            "id": 16829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4921:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                              "typeString": "literal_string \"log(bytes24)\""
                            },
                            "value": "log(bytes24)"
                          },
                          {
                            "id": 16830,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16823,
                            "src": "4937:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes24",
                              "typeString": "bytes24"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                              "typeString": "literal_string \"log(bytes24)\""
                            },
                            {
                              "typeIdentifier": "t_bytes24",
                              "typeString": "bytes24"
                            }
                          ],
                          "expression": {
                            "id": 16827,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4897:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4901:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4897:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4897:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16826,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "4881:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4881:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16833,
                  "nodeType": "ExpressionStatement",
                  "src": "4881:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes24",
            "nameLocation": "4834:10:14",
            "parameters": {
              "id": 16824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16823,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4853:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16835,
                  "src": "4845:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes24",
                    "typeString": "bytes24"
                  },
                  "typeName": {
                    "id": 16822,
                    "name": "bytes24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4845:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes24",
                      "typeString": "bytes24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4844:12:14"
            },
            "returnParameters": {
              "id": 16825,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4871:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16849,
            "nodeType": "FunctionDefinition",
            "src": "4954:123:14",
            "body": {
              "id": 16848,
              "nodeType": "Block",
              "src": "5000:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323529",
                            "id": 16843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5050:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                              "typeString": "literal_string \"log(bytes25)\""
                            },
                            "value": "log(bytes25)"
                          },
                          {
                            "id": 16844,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16837,
                            "src": "5066:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes25",
                              "typeString": "bytes25"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                              "typeString": "literal_string \"log(bytes25)\""
                            },
                            {
                              "typeIdentifier": "t_bytes25",
                              "typeString": "bytes25"
                            }
                          ],
                          "expression": {
                            "id": 16841,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5026:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5030:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5026:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5026:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16840,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5010:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5010:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16847,
                  "nodeType": "ExpressionStatement",
                  "src": "5010:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes25",
            "nameLocation": "4963:10:14",
            "parameters": {
              "id": 16838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16837,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4982:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16849,
                  "src": "4974:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes25",
                    "typeString": "bytes25"
                  },
                  "typeName": {
                    "id": 16836,
                    "name": "bytes25",
                    "nodeType": "ElementaryTypeName",
                    "src": "4974:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes25",
                      "typeString": "bytes25"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4973:12:14"
            },
            "returnParameters": {
              "id": 16839,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5000:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16863,
            "nodeType": "FunctionDefinition",
            "src": "5083:123:14",
            "body": {
              "id": 16862,
              "nodeType": "Block",
              "src": "5129:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323629",
                            "id": 16857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5179:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                              "typeString": "literal_string \"log(bytes26)\""
                            },
                            "value": "log(bytes26)"
                          },
                          {
                            "id": 16858,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16851,
                            "src": "5195:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes26",
                              "typeString": "bytes26"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                              "typeString": "literal_string \"log(bytes26)\""
                            },
                            {
                              "typeIdentifier": "t_bytes26",
                              "typeString": "bytes26"
                            }
                          ],
                          "expression": {
                            "id": 16855,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5155:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5159:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5155:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5155:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16854,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5139:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5139:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16861,
                  "nodeType": "ExpressionStatement",
                  "src": "5139:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes26",
            "nameLocation": "5092:10:14",
            "parameters": {
              "id": 16852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16851,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5111:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16863,
                  "src": "5103:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes26",
                    "typeString": "bytes26"
                  },
                  "typeName": {
                    "id": 16850,
                    "name": "bytes26",
                    "nodeType": "ElementaryTypeName",
                    "src": "5103:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes26",
                      "typeString": "bytes26"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5102:12:14"
            },
            "returnParameters": {
              "id": 16853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5129:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16877,
            "nodeType": "FunctionDefinition",
            "src": "5212:123:14",
            "body": {
              "id": 16876,
              "nodeType": "Block",
              "src": "5258:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323729",
                            "id": 16871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5308:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                              "typeString": "literal_string \"log(bytes27)\""
                            },
                            "value": "log(bytes27)"
                          },
                          {
                            "id": 16872,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16865,
                            "src": "5324:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes27",
                              "typeString": "bytes27"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                              "typeString": "literal_string \"log(bytes27)\""
                            },
                            {
                              "typeIdentifier": "t_bytes27",
                              "typeString": "bytes27"
                            }
                          ],
                          "expression": {
                            "id": 16869,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5284:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5288:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5284:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5284:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16868,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5268:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5268:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16875,
                  "nodeType": "ExpressionStatement",
                  "src": "5268:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes27",
            "nameLocation": "5221:10:14",
            "parameters": {
              "id": 16866,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16865,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5240:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16877,
                  "src": "5232:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes27",
                    "typeString": "bytes27"
                  },
                  "typeName": {
                    "id": 16864,
                    "name": "bytes27",
                    "nodeType": "ElementaryTypeName",
                    "src": "5232:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes27",
                      "typeString": "bytes27"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5231:12:14"
            },
            "returnParameters": {
              "id": 16867,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5258:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16891,
            "nodeType": "FunctionDefinition",
            "src": "5341:123:14",
            "body": {
              "id": 16890,
              "nodeType": "Block",
              "src": "5387:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323829",
                            "id": 16885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5437:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                              "typeString": "literal_string \"log(bytes28)\""
                            },
                            "value": "log(bytes28)"
                          },
                          {
                            "id": 16886,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16879,
                            "src": "5453:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes28",
                              "typeString": "bytes28"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                              "typeString": "literal_string \"log(bytes28)\""
                            },
                            {
                              "typeIdentifier": "t_bytes28",
                              "typeString": "bytes28"
                            }
                          ],
                          "expression": {
                            "id": 16883,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5413:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5417:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5413:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5413:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16882,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5397:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5397:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16889,
                  "nodeType": "ExpressionStatement",
                  "src": "5397:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes28",
            "nameLocation": "5350:10:14",
            "parameters": {
              "id": 16880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16879,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5369:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16891,
                  "src": "5361:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes28",
                    "typeString": "bytes28"
                  },
                  "typeName": {
                    "id": 16878,
                    "name": "bytes28",
                    "nodeType": "ElementaryTypeName",
                    "src": "5361:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes28",
                      "typeString": "bytes28"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5360:12:14"
            },
            "returnParameters": {
              "id": 16881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5387:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16905,
            "nodeType": "FunctionDefinition",
            "src": "5470:123:14",
            "body": {
              "id": 16904,
              "nodeType": "Block",
              "src": "5516:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323929",
                            "id": 16899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5566:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                              "typeString": "literal_string \"log(bytes29)\""
                            },
                            "value": "log(bytes29)"
                          },
                          {
                            "id": 16900,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16893,
                            "src": "5582:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes29",
                              "typeString": "bytes29"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                              "typeString": "literal_string \"log(bytes29)\""
                            },
                            {
                              "typeIdentifier": "t_bytes29",
                              "typeString": "bytes29"
                            }
                          ],
                          "expression": {
                            "id": 16897,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5542:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5546:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5542:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5542:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16896,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5526:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5526:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16903,
                  "nodeType": "ExpressionStatement",
                  "src": "5526:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes29",
            "nameLocation": "5479:10:14",
            "parameters": {
              "id": 16894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16893,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5498:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16905,
                  "src": "5490:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes29",
                    "typeString": "bytes29"
                  },
                  "typeName": {
                    "id": 16892,
                    "name": "bytes29",
                    "nodeType": "ElementaryTypeName",
                    "src": "5490:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes29",
                      "typeString": "bytes29"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5489:12:14"
            },
            "returnParameters": {
              "id": 16895,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5516:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16919,
            "nodeType": "FunctionDefinition",
            "src": "5599:123:14",
            "body": {
              "id": 16918,
              "nodeType": "Block",
              "src": "5645:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333029",
                            "id": 16913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5695:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                              "typeString": "literal_string \"log(bytes30)\""
                            },
                            "value": "log(bytes30)"
                          },
                          {
                            "id": 16914,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16907,
                            "src": "5711:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes30",
                              "typeString": "bytes30"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                              "typeString": "literal_string \"log(bytes30)\""
                            },
                            {
                              "typeIdentifier": "t_bytes30",
                              "typeString": "bytes30"
                            }
                          ],
                          "expression": {
                            "id": 16911,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5671:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5675:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5671:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5671:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16910,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5655:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5655:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16917,
                  "nodeType": "ExpressionStatement",
                  "src": "5655:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes30",
            "nameLocation": "5608:10:14",
            "parameters": {
              "id": 16908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16907,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5627:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16919,
                  "src": "5619:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes30",
                    "typeString": "bytes30"
                  },
                  "typeName": {
                    "id": 16906,
                    "name": "bytes30",
                    "nodeType": "ElementaryTypeName",
                    "src": "5619:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes30",
                      "typeString": "bytes30"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5618:12:14"
            },
            "returnParameters": {
              "id": 16909,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5645:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16933,
            "nodeType": "FunctionDefinition",
            "src": "5728:123:14",
            "body": {
              "id": 16932,
              "nodeType": "Block",
              "src": "5774:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333129",
                            "id": 16927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5824:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                              "typeString": "literal_string \"log(bytes31)\""
                            },
                            "value": "log(bytes31)"
                          },
                          {
                            "id": 16928,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16921,
                            "src": "5840:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes31",
                              "typeString": "bytes31"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                              "typeString": "literal_string \"log(bytes31)\""
                            },
                            {
                              "typeIdentifier": "t_bytes31",
                              "typeString": "bytes31"
                            }
                          ],
                          "expression": {
                            "id": 16925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5800:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5804:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5800:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5800:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16924,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5784:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5784:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16931,
                  "nodeType": "ExpressionStatement",
                  "src": "5784:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes31",
            "nameLocation": "5737:10:14",
            "parameters": {
              "id": 16922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16921,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5756:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16933,
                  "src": "5748:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes31",
                    "typeString": "bytes31"
                  },
                  "typeName": {
                    "id": 16920,
                    "name": "bytes31",
                    "nodeType": "ElementaryTypeName",
                    "src": "5748:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes31",
                      "typeString": "bytes31"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5747:12:14"
            },
            "returnParameters": {
              "id": 16923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5774:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16947,
            "nodeType": "FunctionDefinition",
            "src": "5857:123:14",
            "body": {
              "id": 16946,
              "nodeType": "Block",
              "src": "5903:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333229",
                            "id": 16941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5953:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                              "typeString": "literal_string \"log(bytes32)\""
                            },
                            "value": "log(bytes32)"
                          },
                          {
                            "id": 16942,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16935,
                            "src": "5969:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                              "typeString": "literal_string \"log(bytes32)\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 16939,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5929:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5933:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5929:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5929:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16938,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "5913:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5913:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16945,
                  "nodeType": "ExpressionStatement",
                  "src": "5913:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes32",
            "nameLocation": "5866:10:14",
            "parameters": {
              "id": 16936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16935,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5885:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16947,
                  "src": "5877:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5877:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5876:12:14"
            },
            "returnParameters": {
              "id": 16937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5903:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16961,
            "nodeType": "FunctionDefinition",
            "src": "5986:116:14",
            "body": {
              "id": 16960,
              "nodeType": "Block",
              "src": "6025:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e7432353629",
                            "id": 16955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6075:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f82c50f1848136e6c140b186ea0c768b7deda5efffe42c25e96336a90b26c744",
                              "typeString": "literal_string \"log(uint256)\""
                            },
                            "value": "log(uint256)"
                          },
                          {
                            "id": 16956,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16949,
                            "src": "6091:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f82c50f1848136e6c140b186ea0c768b7deda5efffe42c25e96336a90b26c744",
                              "typeString": "literal_string \"log(uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16953,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6051:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6055:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6051:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6051:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16952,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6035:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6035:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16959,
                  "nodeType": "ExpressionStatement",
                  "src": "6035:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "5995:3:14",
            "parameters": {
              "id": 16950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16949,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6007:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16961,
                  "src": "5999:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16948,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5999:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5998:12:14"
            },
            "returnParameters": {
              "id": 16951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6025:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16975,
            "nodeType": "FunctionDefinition",
            "src": "6108:121:14",
            "body": {
              "id": 16974,
              "nodeType": "Block",
              "src": "6153:76:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e6729",
                            "id": 16969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6203:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            "value": "log(string)"
                          },
                          {
                            "id": 16970,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16963,
                            "src": "6218:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16967,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6179:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6183:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6179:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6179:42:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16966,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6163:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6163:59:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16973,
                  "nodeType": "ExpressionStatement",
                  "src": "6163:59:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6117:3:14",
            "parameters": {
              "id": 16964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16963,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6135:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16975,
                  "src": "6121:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16962,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6121:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6120:18:14"
            },
            "returnParameters": {
              "id": 16965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6153:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16989,
            "nodeType": "FunctionDefinition",
            "src": "6235:110:14",
            "body": {
              "id": 16988,
              "nodeType": "Block",
              "src": "6271:74:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c29",
                            "id": 16983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6321:11:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            "value": "log(bool)"
                          },
                          {
                            "id": 16984,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16977,
                            "src": "6334:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16981,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6297:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6301:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6297:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6297:40:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16980,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6281:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6281:57:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16987,
                  "nodeType": "ExpressionStatement",
                  "src": "6281:57:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6244:3:14",
            "parameters": {
              "id": 16978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16977,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6253:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 16989,
                  "src": "6248:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6248:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6247:9:14"
            },
            "returnParameters": {
              "id": 16979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6271:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17003,
            "nodeType": "FunctionDefinition",
            "src": "6351:116:14",
            "body": {
              "id": 17002,
              "nodeType": "Block",
              "src": "6390:77:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286164647265737329",
                            "id": 16997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6440:14:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            "value": "log(address)"
                          },
                          {
                            "id": 16998,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16991,
                            "src": "6456:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16995,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6416:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6420:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6416:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6416:43:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16994,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6400:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6400:60:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17001,
                  "nodeType": "ExpressionStatement",
                  "src": "6400:60:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6360:3:14",
            "parameters": {
              "id": 16992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16991,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6372:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17003,
                  "src": "6364:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16990,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6364:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6363:12:14"
            },
            "returnParameters": {
              "id": 16993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6390:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17020,
            "nodeType": "FunctionDefinition",
            "src": "6473:140:14",
            "body": {
              "id": 17019,
              "nodeType": "Block",
              "src": "6524:89:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e7432353629",
                            "id": 17013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6574:22:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f666715aa6b8e8ce32bd39173f51eea0643fdd246a826c4756c2f168022b6eb5",
                              "typeString": "literal_string \"log(uint256,uint256)\""
                            },
                            "value": "log(uint256,uint256)"
                          },
                          {
                            "id": 17014,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17005,
                            "src": "6598:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17015,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17007,
                            "src": "6602:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f666715aa6b8e8ce32bd39173f51eea0643fdd246a826c4756c2f168022b6eb5",
                              "typeString": "literal_string \"log(uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17011,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6550:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6554:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6550:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6550:55:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17010,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6534:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6534:72:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17018,
                  "nodeType": "ExpressionStatement",
                  "src": "6534:72:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6482:3:14",
            "parameters": {
              "id": 17008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17005,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6494:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17020,
                  "src": "6486:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17004,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6486:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17007,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6506:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17020,
                  "src": "6498:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17006,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6498:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6485:24:14"
            },
            "returnParameters": {
              "id": 17009,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6524:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17037,
            "nodeType": "FunctionDefinition",
            "src": "6619:145:14",
            "body": {
              "id": 17036,
              "nodeType": "Block",
              "src": "6676:88:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e6729",
                            "id": 17030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6726:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_643fd0df4c7dfb004c6169012c8aec390bd7246941d7fe467022f10f2da987c3",
                              "typeString": "literal_string \"log(uint256,string)\""
                            },
                            "value": "log(uint256,string)"
                          },
                          {
                            "id": 17031,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17022,
                            "src": "6749:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17032,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17024,
                            "src": "6753:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_643fd0df4c7dfb004c6169012c8aec390bd7246941d7fe467022f10f2da987c3",
                              "typeString": "literal_string \"log(uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17028,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6702:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6706:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6702:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6702:54:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17027,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6686:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6686:71:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17035,
                  "nodeType": "ExpressionStatement",
                  "src": "6686:71:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6628:3:14",
            "parameters": {
              "id": 17025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17022,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6640:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17037,
                  "src": "6632:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17021,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6632:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17024,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6658:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17037,
                  "src": "6644:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17023,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6644:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6631:30:14"
            },
            "returnParameters": {
              "id": 17026,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6676:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17054,
            "nodeType": "FunctionDefinition",
            "src": "6770:134:14",
            "body": {
              "id": 17053,
              "nodeType": "Block",
              "src": "6818:86:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c29",
                            "id": 17047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6868:19:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1c9d7eb3a75db315653a5c0996fcea52a2b2692643ce8ace4d8b12bb9da6c1f2",
                              "typeString": "literal_string \"log(uint256,bool)\""
                            },
                            "value": "log(uint256,bool)"
                          },
                          {
                            "id": 17048,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17039,
                            "src": "6889:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17049,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17041,
                            "src": "6893:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1c9d7eb3a75db315653a5c0996fcea52a2b2692643ce8ace4d8b12bb9da6c1f2",
                              "typeString": "literal_string \"log(uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17045,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6844:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6848:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6844:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6844:52:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17044,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6828:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6828:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17052,
                  "nodeType": "ExpressionStatement",
                  "src": "6828:69:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6779:3:14",
            "parameters": {
              "id": 17042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17039,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6791:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17054,
                  "src": "6783:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6783:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17041,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6800:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17054,
                  "src": "6795:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17040,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6795:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6782:21:14"
            },
            "returnParameters": {
              "id": 17043,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6818:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17071,
            "nodeType": "FunctionDefinition",
            "src": "6910:140:14",
            "body": {
              "id": 17070,
              "nodeType": "Block",
              "src": "6961:89:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c6164647265737329",
                            "id": 17064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7011:22:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_69276c86d20522c49707664308d424b84905ef92219f3146bcaacedc72eaed27",
                              "typeString": "literal_string \"log(uint256,address)\""
                            },
                            "value": "log(uint256,address)"
                          },
                          {
                            "id": 17065,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17056,
                            "src": "7035:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17066,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17058,
                            "src": "7039:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_69276c86d20522c49707664308d424b84905ef92219f3146bcaacedc72eaed27",
                              "typeString": "literal_string \"log(uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17062,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6987:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6991:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6987:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6987:55:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17061,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "6971:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6971:72:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17069,
                  "nodeType": "ExpressionStatement",
                  "src": "6971:72:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6919:3:14",
            "parameters": {
              "id": 17059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17056,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6931:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17071,
                  "src": "6923:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6923:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17058,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6943:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17071,
                  "src": "6935:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17057,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6935:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6922:24:14"
            },
            "returnParameters": {
              "id": 17060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6961:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17088,
            "nodeType": "FunctionDefinition",
            "src": "7056:145:14",
            "body": {
              "id": 17087,
              "nodeType": "Block",
              "src": "7113:88:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e7432353629",
                            "id": 17081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7163:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e",
                              "typeString": "literal_string \"log(string,uint256)\""
                            },
                            "value": "log(string,uint256)"
                          },
                          {
                            "id": 17082,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17073,
                            "src": "7186:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17083,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17075,
                            "src": "7190:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b60e72ccf6d57ab53eb84d7e94a9545806ed7f93c4d5673f11a64f03471e584e",
                              "typeString": "literal_string \"log(string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17079,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7139:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7143:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7139:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7139:54:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17078,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7123:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7123:71:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17086,
                  "nodeType": "ExpressionStatement",
                  "src": "7123:71:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7065:3:14",
            "parameters": {
              "id": 17076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17073,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7083:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "7069:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17072,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7069:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17075,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7095:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "7087:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17074,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7087:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7068:30:14"
            },
            "returnParameters": {
              "id": 17077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7113:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17105,
            "nodeType": "FunctionDefinition",
            "src": "7207:150:14",
            "body": {
              "id": 17104,
              "nodeType": "Block",
              "src": "7270:87:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e6729",
                            "id": 17098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7320:20:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                              "typeString": "literal_string \"log(string,string)\""
                            },
                            "value": "log(string,string)"
                          },
                          {
                            "id": 17099,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17090,
                            "src": "7342:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17100,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17092,
                            "src": "7346:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                              "typeString": "literal_string \"log(string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17096,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7296:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7300:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7296:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7296:53:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17095,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7280:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7280:70:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17103,
                  "nodeType": "ExpressionStatement",
                  "src": "7280:70:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7216:3:14",
            "parameters": {
              "id": 17093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17090,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7234:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17105,
                  "src": "7220:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17089,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7220:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17092,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7252:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17105,
                  "src": "7238:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17091,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7238:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7219:36:14"
            },
            "returnParameters": {
              "id": 17094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7270:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17122,
            "nodeType": "FunctionDefinition",
            "src": "7363:139:14",
            "body": {
              "id": 17121,
              "nodeType": "Block",
              "src": "7417:85:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c29",
                            "id": 17115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7467:18:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                              "typeString": "literal_string \"log(string,bool)\""
                            },
                            "value": "log(string,bool)"
                          },
                          {
                            "id": 17116,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17107,
                            "src": "7487:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17117,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17109,
                            "src": "7491:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                              "typeString": "literal_string \"log(string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17113,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7443:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7447:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7443:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7443:51:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17112,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7427:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7427:68:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17120,
                  "nodeType": "ExpressionStatement",
                  "src": "7427:68:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7372:3:14",
            "parameters": {
              "id": 17110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17107,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7390:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17122,
                  "src": "7376:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17106,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7376:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17109,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7399:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17122,
                  "src": "7394:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17108,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7394:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7375:27:14"
            },
            "returnParameters": {
              "id": 17111,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7417:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17139,
            "nodeType": "FunctionDefinition",
            "src": "7508:145:14",
            "body": {
              "id": 17138,
              "nodeType": "Block",
              "src": "7565:88:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c6164647265737329",
                            "id": 17132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7615:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                              "typeString": "literal_string \"log(string,address)\""
                            },
                            "value": "log(string,address)"
                          },
                          {
                            "id": 17133,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17124,
                            "src": "7638:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17134,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17126,
                            "src": "7642:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                              "typeString": "literal_string \"log(string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17130,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7591:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7595:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7591:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7591:54:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17129,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7575:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7575:71:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17137,
                  "nodeType": "ExpressionStatement",
                  "src": "7575:71:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7517:3:14",
            "parameters": {
              "id": 17127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17124,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7535:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17139,
                  "src": "7521:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17123,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7521:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17126,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7547:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17139,
                  "src": "7539:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7539:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7520:30:14"
            },
            "returnParameters": {
              "id": 17128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7565:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17156,
            "nodeType": "FunctionDefinition",
            "src": "7659:134:14",
            "body": {
              "id": 17155,
              "nodeType": "Block",
              "src": "7707:86:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e7432353629",
                            "id": 17149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7757:19:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_399174d3d0c43cb9677bce4fa1b5541fc60a002cbf23e154f1abcbb5f02cf2d7",
                              "typeString": "literal_string \"log(bool,uint256)\""
                            },
                            "value": "log(bool,uint256)"
                          },
                          {
                            "id": 17150,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17141,
                            "src": "7778:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17151,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17143,
                            "src": "7782:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_399174d3d0c43cb9677bce4fa1b5541fc60a002cbf23e154f1abcbb5f02cf2d7",
                              "typeString": "literal_string \"log(bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17147,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7733:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7737:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7733:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7733:52:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17146,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7717:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7717:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17154,
                  "nodeType": "ExpressionStatement",
                  "src": "7717:69:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7668:3:14",
            "parameters": {
              "id": 17144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17141,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7677:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17156,
                  "src": "7672:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17140,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7672:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17143,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7689:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17156,
                  "src": "7681:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7681:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7671:21:14"
            },
            "returnParameters": {
              "id": 17145,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7707:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17173,
            "nodeType": "FunctionDefinition",
            "src": "7799:139:14",
            "body": {
              "id": 17172,
              "nodeType": "Block",
              "src": "7853:85:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e6729",
                            "id": 17166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7903:18:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                              "typeString": "literal_string \"log(bool,string)\""
                            },
                            "value": "log(bool,string)"
                          },
                          {
                            "id": 17167,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17158,
                            "src": "7923:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17168,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17160,
                            "src": "7927:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                              "typeString": "literal_string \"log(bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17164,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7879:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7883:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7879:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7879:51:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17163,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7863:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7863:68:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17171,
                  "nodeType": "ExpressionStatement",
                  "src": "7863:68:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7808:3:14",
            "parameters": {
              "id": 17161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17158,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7817:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17173,
                  "src": "7812:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17157,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7812:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17160,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7835:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17173,
                  "src": "7821:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17159,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7821:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7811:27:14"
            },
            "returnParameters": {
              "id": 17162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7853:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17190,
            "nodeType": "FunctionDefinition",
            "src": "7944:128:14",
            "body": {
              "id": 17189,
              "nodeType": "Block",
              "src": "7989:83:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c29",
                            "id": 17183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8039:16:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                              "typeString": "literal_string \"log(bool,bool)\""
                            },
                            "value": "log(bool,bool)"
                          },
                          {
                            "id": 17184,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17175,
                            "src": "8057:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17185,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17177,
                            "src": "8061:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                              "typeString": "literal_string \"log(bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17181,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8015:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8019:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8015:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8015:49:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17180,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "7999:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7999:66:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17188,
                  "nodeType": "ExpressionStatement",
                  "src": "7999:66:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7953:3:14",
            "parameters": {
              "id": 17178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17175,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7962:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17190,
                  "src": "7957:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17174,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7957:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17177,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7971:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17190,
                  "src": "7966:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17176,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7966:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7956:18:14"
            },
            "returnParameters": {
              "id": 17179,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7989:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17207,
            "nodeType": "FunctionDefinition",
            "src": "8078:134:14",
            "body": {
              "id": 17206,
              "nodeType": "Block",
              "src": "8126:86:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c6164647265737329",
                            "id": 17200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8176:19:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                              "typeString": "literal_string \"log(bool,address)\""
                            },
                            "value": "log(bool,address)"
                          },
                          {
                            "id": 17201,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17192,
                            "src": "8197:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17202,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17194,
                            "src": "8201:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                              "typeString": "literal_string \"log(bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17198,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8152:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8156:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8152:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17203,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8152:52:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17197,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8136:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8136:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17205,
                  "nodeType": "ExpressionStatement",
                  "src": "8136:69:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8087:3:14",
            "parameters": {
              "id": 17195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17192,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8096:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17207,
                  "src": "8091:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17191,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8091:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17194,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8108:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17207,
                  "src": "8100:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8100:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8090:21:14"
            },
            "returnParameters": {
              "id": 17196,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8126:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17224,
            "nodeType": "FunctionDefinition",
            "src": "8218:140:14",
            "body": {
              "id": 17223,
              "nodeType": "Block",
              "src": "8269:89:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e7432353629",
                            "id": 17217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8319:22:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8309e8a8b132619bdb25dffa9d595ba1ecb7835540fd62622dad33018c4a0d3e",
                              "typeString": "literal_string \"log(address,uint256)\""
                            },
                            "value": "log(address,uint256)"
                          },
                          {
                            "id": 17218,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17209,
                            "src": "8343:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17219,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17211,
                            "src": "8347:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8309e8a8b132619bdb25dffa9d595ba1ecb7835540fd62622dad33018c4a0d3e",
                              "typeString": "literal_string \"log(address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17215,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8295:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8299:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8295:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8295:55:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17214,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8279:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8279:72:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17222,
                  "nodeType": "ExpressionStatement",
                  "src": "8279:72:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8227:3:14",
            "parameters": {
              "id": 17212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17209,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8239:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17224,
                  "src": "8231:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17208,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8231:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17211,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8251:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17224,
                  "src": "8243:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17210,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8243:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8230:24:14"
            },
            "returnParameters": {
              "id": 17213,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8269:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17241,
            "nodeType": "FunctionDefinition",
            "src": "8364:145:14",
            "body": {
              "id": 17240,
              "nodeType": "Block",
              "src": "8421:88:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e6729",
                            "id": 17234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8471:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                              "typeString": "literal_string \"log(address,string)\""
                            },
                            "value": "log(address,string)"
                          },
                          {
                            "id": 17235,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17226,
                            "src": "8494:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17236,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17228,
                            "src": "8498:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                              "typeString": "literal_string \"log(address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17232,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8447:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8451:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8447:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8447:54:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17231,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8431:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8431:71:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17239,
                  "nodeType": "ExpressionStatement",
                  "src": "8431:71:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8373:3:14",
            "parameters": {
              "id": 17229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17226,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8385:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17241,
                  "src": "8377:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8377:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17228,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8403:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17241,
                  "src": "8389:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17227,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8389:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8376:30:14"
            },
            "returnParameters": {
              "id": 17230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8421:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17258,
            "nodeType": "FunctionDefinition",
            "src": "8515:134:14",
            "body": {
              "id": 17257,
              "nodeType": "Block",
              "src": "8563:86:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c29",
                            "id": 17251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8613:19:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                              "typeString": "literal_string \"log(address,bool)\""
                            },
                            "value": "log(address,bool)"
                          },
                          {
                            "id": 17252,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17243,
                            "src": "8634:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17253,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17245,
                            "src": "8638:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                              "typeString": "literal_string \"log(address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17249,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8589:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8593:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8589:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8589:52:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17248,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8573:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8573:69:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17256,
                  "nodeType": "ExpressionStatement",
                  "src": "8573:69:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8524:3:14",
            "parameters": {
              "id": 17246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17243,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8536:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17258,
                  "src": "8528:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17242,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8528:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17245,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8545:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17258,
                  "src": "8540:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17244,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8540:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8527:21:14"
            },
            "returnParameters": {
              "id": 17247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8563:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17275,
            "nodeType": "FunctionDefinition",
            "src": "8655:140:14",
            "body": {
              "id": 17274,
              "nodeType": "Block",
              "src": "8706:89:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c6164647265737329",
                            "id": 17268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8756:22:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                              "typeString": "literal_string \"log(address,address)\""
                            },
                            "value": "log(address,address)"
                          },
                          {
                            "id": 17269,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17260,
                            "src": "8780:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17270,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17262,
                            "src": "8784:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                              "typeString": "literal_string \"log(address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17266,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8732:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8736:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8732:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8732:55:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17265,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8716:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8716:72:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17273,
                  "nodeType": "ExpressionStatement",
                  "src": "8716:72:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8664:3:14",
            "parameters": {
              "id": 17263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17260,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8676:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17275,
                  "src": "8668:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17259,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8668:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17262,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8688:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17275,
                  "src": "8680:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17261,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8667:24:14"
            },
            "returnParameters": {
              "id": 17264,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8706:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17295,
            "nodeType": "FunctionDefinition",
            "src": "8801:164:14",
            "body": {
              "id": 17294,
              "nodeType": "Block",
              "src": "8864:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c75696e7432353629",
                            "id": 17287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8914:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d1ed7a3c020c4f5939654147940a147a8e4e638fa1e8f5664b5efbd1e1f3c4a6",
                              "typeString": "literal_string \"log(uint256,uint256,uint256)\""
                            },
                            "value": "log(uint256,uint256,uint256)"
                          },
                          {
                            "id": 17288,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17277,
                            "src": "8946:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17289,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17279,
                            "src": "8950:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17290,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17281,
                            "src": "8954:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d1ed7a3c020c4f5939654147940a147a8e4e638fa1e8f5664b5efbd1e1f3c4a6",
                              "typeString": "literal_string \"log(uint256,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17285,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8890:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8894:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8890:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8890:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17284,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "8874:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8874:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17293,
                  "nodeType": "ExpressionStatement",
                  "src": "8874:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8810:3:14",
            "parameters": {
              "id": 17282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17277,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8822:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "8814:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17276,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8814:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17279,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8834:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "8826:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8826:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17281,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8846:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "8838:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8838:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8813:36:14"
            },
            "returnParameters": {
              "id": 17283,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8864:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17315,
            "nodeType": "FunctionDefinition",
            "src": "8971:169:14",
            "body": {
              "id": 17314,
              "nodeType": "Block",
              "src": "9040:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c737472696e6729",
                            "id": 17307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9090:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_71d04af2c0d71f035017c73ec9440d8cef06157a84f0febe8ec74eca98138262",
                              "typeString": "literal_string \"log(uint256,uint256,string)\""
                            },
                            "value": "log(uint256,uint256,string)"
                          },
                          {
                            "id": 17308,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17297,
                            "src": "9121:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17309,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17299,
                            "src": "9125:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17310,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17301,
                            "src": "9129:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_71d04af2c0d71f035017c73ec9440d8cef06157a84f0febe8ec74eca98138262",
                              "typeString": "literal_string \"log(uint256,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17305,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9066:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9070:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9066:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9066:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17304,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9050:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9050:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17313,
                  "nodeType": "ExpressionStatement",
                  "src": "9050:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8980:3:14",
            "parameters": {
              "id": 17302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17297,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8992:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17315,
                  "src": "8984:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8984:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17299,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9004:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17315,
                  "src": "8996:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17298,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8996:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17301,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9022:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17315,
                  "src": "9008:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17300,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9008:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8983:42:14"
            },
            "returnParameters": {
              "id": 17303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9040:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17335,
            "nodeType": "FunctionDefinition",
            "src": "9146:158:14",
            "body": {
              "id": 17334,
              "nodeType": "Block",
              "src": "9206:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c626f6f6c29",
                            "id": 17327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9256:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4766da72b632663e3b9911d02d6f30e0cf213f928bdb9f6fd840851875d9fce0",
                              "typeString": "literal_string \"log(uint256,uint256,bool)\""
                            },
                            "value": "log(uint256,uint256,bool)"
                          },
                          {
                            "id": 17328,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17317,
                            "src": "9285:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17329,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17319,
                            "src": "9289:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17330,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17321,
                            "src": "9293:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4766da72b632663e3b9911d02d6f30e0cf213f928bdb9f6fd840851875d9fce0",
                              "typeString": "literal_string \"log(uint256,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17325,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9232:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9236:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9232:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9232:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17324,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9216:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9216:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17333,
                  "nodeType": "ExpressionStatement",
                  "src": "9216:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9155:3:14",
            "parameters": {
              "id": 17322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17317,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9167:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17335,
                  "src": "9159:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17316,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9159:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17319,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9179:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17335,
                  "src": "9171:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17318,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9171:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17321,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9188:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17335,
                  "src": "9183:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17320,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9183:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9158:33:14"
            },
            "returnParameters": {
              "id": 17323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9206:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17355,
            "nodeType": "FunctionDefinition",
            "src": "9310:164:14",
            "body": {
              "id": 17354,
              "nodeType": "Block",
              "src": "9373:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c6164647265737329",
                            "id": 17347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9423:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5c96b331e359852d9a7254105926ce8dfcc42dd4fce56a736cfb981b4c2984c1",
                              "typeString": "literal_string \"log(uint256,uint256,address)\""
                            },
                            "value": "log(uint256,uint256,address)"
                          },
                          {
                            "id": 17348,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17337,
                            "src": "9455:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17349,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17339,
                            "src": "9459:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17350,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17341,
                            "src": "9463:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5c96b331e359852d9a7254105926ce8dfcc42dd4fce56a736cfb981b4c2984c1",
                              "typeString": "literal_string \"log(uint256,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17345,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9399:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9403:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9399:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9399:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17344,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9383:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9383:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17353,
                  "nodeType": "ExpressionStatement",
                  "src": "9383:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9319:3:14",
            "parameters": {
              "id": 17342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17337,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9331:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17355,
                  "src": "9323:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17336,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9323:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17339,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9343:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17355,
                  "src": "9335:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17338,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9335:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17341,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9355:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17355,
                  "src": "9347:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9347:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9322:36:14"
            },
            "returnParameters": {
              "id": 17343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9373:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17375,
            "nodeType": "FunctionDefinition",
            "src": "9480:169:14",
            "body": {
              "id": 17374,
              "nodeType": "Block",
              "src": "9549:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c75696e7432353629",
                            "id": 17367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9599:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_37aa7d4c835edd965b1201d9c03f13272bd937d8e244ab84a153693e2f2f30c0",
                              "typeString": "literal_string \"log(uint256,string,uint256)\""
                            },
                            "value": "log(uint256,string,uint256)"
                          },
                          {
                            "id": 17368,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17357,
                            "src": "9630:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17369,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17359,
                            "src": "9634:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17370,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17361,
                            "src": "9638:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_37aa7d4c835edd965b1201d9c03f13272bd937d8e244ab84a153693e2f2f30c0",
                              "typeString": "literal_string \"log(uint256,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17365,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9575:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9579:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9575:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9575:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17364,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9559:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9559:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17373,
                  "nodeType": "ExpressionStatement",
                  "src": "9559:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9489:3:14",
            "parameters": {
              "id": 17362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17357,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9501:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17375,
                  "src": "9493:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9493:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17359,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9519:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17375,
                  "src": "9505:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9505:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17361,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9531:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17375,
                  "src": "9523:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9523:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9492:42:14"
            },
            "returnParameters": {
              "id": 17363,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9549:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17395,
            "nodeType": "FunctionDefinition",
            "src": "9655:174:14",
            "body": {
              "id": 17394,
              "nodeType": "Block",
              "src": "9730:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c737472696e6729",
                            "id": 17387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9780:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b115611f13262589f336fb650c9278bd1879123a635e6a638f94e6cbdb1c1b35",
                              "typeString": "literal_string \"log(uint256,string,string)\""
                            },
                            "value": "log(uint256,string,string)"
                          },
                          {
                            "id": 17388,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17377,
                            "src": "9810:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17389,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17379,
                            "src": "9814:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17390,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17381,
                            "src": "9818:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b115611f13262589f336fb650c9278bd1879123a635e6a638f94e6cbdb1c1b35",
                              "typeString": "literal_string \"log(uint256,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17385,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9756:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9760:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9756:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9756:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17384,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9740:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9740:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17393,
                  "nodeType": "ExpressionStatement",
                  "src": "9740:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9664:3:14",
            "parameters": {
              "id": 17382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17377,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9676:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17395,
                  "src": "9668:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9668:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17379,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9694:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17395,
                  "src": "9680:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17378,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9680:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17381,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9712:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17395,
                  "src": "9698:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17380,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9698:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9667:48:14"
            },
            "returnParameters": {
              "id": 17383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9730:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17415,
            "nodeType": "FunctionDefinition",
            "src": "9835:163:14",
            "body": {
              "id": 17414,
              "nodeType": "Block",
              "src": "9901:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c626f6f6c29",
                            "id": 17407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9951:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4ceda75ad13e534e8b5089564c6a40ae80cd33aac3e77ef1f87a233c1d43067a",
                              "typeString": "literal_string \"log(uint256,string,bool)\""
                            },
                            "value": "log(uint256,string,bool)"
                          },
                          {
                            "id": 17408,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17397,
                            "src": "9979:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17409,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17399,
                            "src": "9983:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17410,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17401,
                            "src": "9987:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4ceda75ad13e534e8b5089564c6a40ae80cd33aac3e77ef1f87a233c1d43067a",
                              "typeString": "literal_string \"log(uint256,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17405,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9927:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9931:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9927:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9927:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17404,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "9911:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9911:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17413,
                  "nodeType": "ExpressionStatement",
                  "src": "9911:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9844:3:14",
            "parameters": {
              "id": 17402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17397,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9856:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17415,
                  "src": "9848:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17396,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9848:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17399,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9874:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17415,
                  "src": "9860:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9860:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17401,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9883:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17415,
                  "src": "9878:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17400,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9878:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9847:39:14"
            },
            "returnParameters": {
              "id": 17403,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9901:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17435,
            "nodeType": "FunctionDefinition",
            "src": "10004:169:14",
            "body": {
              "id": 17434,
              "nodeType": "Block",
              "src": "10073:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c6164647265737329",
                            "id": 17427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10123:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7afac959002f7dcdccdf461a7e6db7810eebd7217c0b7c30905b3c7e89b561f2",
                              "typeString": "literal_string \"log(uint256,string,address)\""
                            },
                            "value": "log(uint256,string,address)"
                          },
                          {
                            "id": 17428,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17417,
                            "src": "10154:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17429,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17419,
                            "src": "10158:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17430,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17421,
                            "src": "10162:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7afac959002f7dcdccdf461a7e6db7810eebd7217c0b7c30905b3c7e89b561f2",
                              "typeString": "literal_string \"log(uint256,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17425,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10099:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10103:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10099:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10099:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17424,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10083:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10083:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17433,
                  "nodeType": "ExpressionStatement",
                  "src": "10083:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10013:3:14",
            "parameters": {
              "id": 17422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17417,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10025:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17435,
                  "src": "10017:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10017:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17419,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10043:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17435,
                  "src": "10029:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17418,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17421,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10055:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17435,
                  "src": "10047:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10047:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10016:42:14"
            },
            "returnParameters": {
              "id": 17423,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10073:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17455,
            "nodeType": "FunctionDefinition",
            "src": "10179:158:14",
            "body": {
              "id": 17454,
              "nodeType": "Block",
              "src": "10239:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c75696e7432353629",
                            "id": 17447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10289:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_200980147f19b368809aab41084ebebcf1e19d47edd13f2d540a6327cec213d1",
                              "typeString": "literal_string \"log(uint256,bool,uint256)\""
                            },
                            "value": "log(uint256,bool,uint256)"
                          },
                          {
                            "id": 17448,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17437,
                            "src": "10318:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17449,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17439,
                            "src": "10322:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17450,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17441,
                            "src": "10326:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_200980147f19b368809aab41084ebebcf1e19d47edd13f2d540a6327cec213d1",
                              "typeString": "literal_string \"log(uint256,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17445,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10265:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10269:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10265:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10265:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17444,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10249:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10249:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17453,
                  "nodeType": "ExpressionStatement",
                  "src": "10249:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10188:3:14",
            "parameters": {
              "id": 17442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17437,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10200:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17455,
                  "src": "10192:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17436,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10192:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17439,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10209:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17455,
                  "src": "10204:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10204:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17441,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10221:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17455,
                  "src": "10213:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10213:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10191:33:14"
            },
            "returnParameters": {
              "id": 17443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10239:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17475,
            "nodeType": "FunctionDefinition",
            "src": "10343:163:14",
            "body": {
              "id": 17474,
              "nodeType": "Block",
              "src": "10409:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c737472696e6729",
                            "id": 17467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10459:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_85775021582c57b14e9e0b33e0f693439478099486817fe4214a503f559f37df",
                              "typeString": "literal_string \"log(uint256,bool,string)\""
                            },
                            "value": "log(uint256,bool,string)"
                          },
                          {
                            "id": 17468,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17457,
                            "src": "10487:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17469,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17459,
                            "src": "10491:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17470,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17461,
                            "src": "10495:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_85775021582c57b14e9e0b33e0f693439478099486817fe4214a503f559f37df",
                              "typeString": "literal_string \"log(uint256,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17465,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10435:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10439:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10435:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10435:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17464,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10419:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10419:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17473,
                  "nodeType": "ExpressionStatement",
                  "src": "10419:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10352:3:14",
            "parameters": {
              "id": 17462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17457,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10364:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17475,
                  "src": "10356:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17456,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10356:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17459,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10373:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17475,
                  "src": "10368:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17458,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10368:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17461,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10391:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17475,
                  "src": "10377:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17460,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10377:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10355:39:14"
            },
            "returnParameters": {
              "id": 17463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10409:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17495,
            "nodeType": "FunctionDefinition",
            "src": "10512:152:14",
            "body": {
              "id": 17494,
              "nodeType": "Block",
              "src": "10569:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c626f6f6c29",
                            "id": 17487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10619:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_207186500d54a80dae0e8fae760b583cb518c2c49967db59c8f7e5596879c0b6",
                              "typeString": "literal_string \"log(uint256,bool,bool)\""
                            },
                            "value": "log(uint256,bool,bool)"
                          },
                          {
                            "id": 17488,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17477,
                            "src": "10645:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17489,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17479,
                            "src": "10649:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17490,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17481,
                            "src": "10653:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_207186500d54a80dae0e8fae760b583cb518c2c49967db59c8f7e5596879c0b6",
                              "typeString": "literal_string \"log(uint256,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17485,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10595:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10599:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10595:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10595:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17484,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10579:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10579:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17493,
                  "nodeType": "ExpressionStatement",
                  "src": "10579:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10521:3:14",
            "parameters": {
              "id": 17482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17477,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10533:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17495,
                  "src": "10525:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10525:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17479,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10542:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17495,
                  "src": "10537:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17478,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10537:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17481,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10551:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17495,
                  "src": "10546:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17480,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10546:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10524:30:14"
            },
            "returnParameters": {
              "id": 17483,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10569:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17515,
            "nodeType": "FunctionDefinition",
            "src": "10670:158:14",
            "body": {
              "id": 17514,
              "nodeType": "Block",
              "src": "10730:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c6164647265737329",
                            "id": 17507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10780:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_35085f7b74fe0b67ab2d779d94b2a1efc14ce8d637e06ffda83ca305116f3c99",
                              "typeString": "literal_string \"log(uint256,bool,address)\""
                            },
                            "value": "log(uint256,bool,address)"
                          },
                          {
                            "id": 17508,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17497,
                            "src": "10809:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17509,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17499,
                            "src": "10813:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17510,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17501,
                            "src": "10817:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_35085f7b74fe0b67ab2d779d94b2a1efc14ce8d637e06ffda83ca305116f3c99",
                              "typeString": "literal_string \"log(uint256,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17505,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10756:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10760:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10756:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10756:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17504,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10740:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10740:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17513,
                  "nodeType": "ExpressionStatement",
                  "src": "10740:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10679:3:14",
            "parameters": {
              "id": 17502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17497,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10691:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17515,
                  "src": "10683:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17496,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10683:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17499,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10700:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17515,
                  "src": "10695:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17498,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10695:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17501,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10712:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17515,
                  "src": "10704:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10704:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10682:33:14"
            },
            "returnParameters": {
              "id": 17503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10730:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17535,
            "nodeType": "FunctionDefinition",
            "src": "10834:164:14",
            "body": {
              "id": 17534,
              "nodeType": "Block",
              "src": "10897:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c75696e7432353629",
                            "id": 17527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10947:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5a9b5ed5e0cc67953f5b0a58c12e9694944af5a126321ab88870dec3bc05a9ae",
                              "typeString": "literal_string \"log(uint256,address,uint256)\""
                            },
                            "value": "log(uint256,address,uint256)"
                          },
                          {
                            "id": 17528,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17517,
                            "src": "10979:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17529,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17519,
                            "src": "10983:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17530,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17521,
                            "src": "10987:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5a9b5ed5e0cc67953f5b0a58c12e9694944af5a126321ab88870dec3bc05a9ae",
                              "typeString": "literal_string \"log(uint256,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17525,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10923:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10927:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10923:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10923:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17524,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "10907:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10907:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17533,
                  "nodeType": "ExpressionStatement",
                  "src": "10907:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10843:3:14",
            "parameters": {
              "id": 17522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17517,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10855:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17535,
                  "src": "10847:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17516,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10847:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17519,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10867:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17535,
                  "src": "10859:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17518,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10859:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17521,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17535,
                  "src": "10871:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10871:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10846:36:14"
            },
            "returnParameters": {
              "id": 17523,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10897:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17555,
            "nodeType": "FunctionDefinition",
            "src": "11004:169:14",
            "body": {
              "id": 17554,
              "nodeType": "Block",
              "src": "11073:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c737472696e6729",
                            "id": 17547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11123:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_63cb41f9a63efe5dfacd3a2836bdef664d136fd6113f8e931c31a919af38935c",
                              "typeString": "literal_string \"log(uint256,address,string)\""
                            },
                            "value": "log(uint256,address,string)"
                          },
                          {
                            "id": 17548,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17537,
                            "src": "11154:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17549,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17539,
                            "src": "11158:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17550,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17541,
                            "src": "11162:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_63cb41f9a63efe5dfacd3a2836bdef664d136fd6113f8e931c31a919af38935c",
                              "typeString": "literal_string \"log(uint256,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17545,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11099:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11103:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11099:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11099:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17544,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11083:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11083:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17553,
                  "nodeType": "ExpressionStatement",
                  "src": "11083:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11013:3:14",
            "parameters": {
              "id": 17542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17537,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11025:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17555,
                  "src": "11017:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17536,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11017:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17539,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11037:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17555,
                  "src": "11029:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17538,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11029:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17541,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11055:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17555,
                  "src": "11041:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17540,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11041:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11016:42:14"
            },
            "returnParameters": {
              "id": 17543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11073:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17575,
            "nodeType": "FunctionDefinition",
            "src": "11179:158:14",
            "body": {
              "id": 17574,
              "nodeType": "Block",
              "src": "11239:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c626f6f6c29",
                            "id": 17567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11289:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9b6ec042c5598a780a5bfae5e9ea2c50c251da4c38db3a134b8857be618f0c5c",
                              "typeString": "literal_string \"log(uint256,address,bool)\""
                            },
                            "value": "log(uint256,address,bool)"
                          },
                          {
                            "id": 17568,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17557,
                            "src": "11318:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17569,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17559,
                            "src": "11322:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17570,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17561,
                            "src": "11326:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9b6ec042c5598a780a5bfae5e9ea2c50c251da4c38db3a134b8857be618f0c5c",
                              "typeString": "literal_string \"log(uint256,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17565,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11265:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11269:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11265:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11265:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17564,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11249:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11249:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17573,
                  "nodeType": "ExpressionStatement",
                  "src": "11249:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11188:3:14",
            "parameters": {
              "id": 17562,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17557,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11200:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17575,
                  "src": "11192:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17556,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11192:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17559,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11212:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17575,
                  "src": "11204:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17558,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11204:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17561,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11221:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17575,
                  "src": "11216:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17560,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11216:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11191:33:14"
            },
            "returnParameters": {
              "id": 17563,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11239:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17595,
            "nodeType": "FunctionDefinition",
            "src": "11343:164:14",
            "body": {
              "id": 17594,
              "nodeType": "Block",
              "src": "11406:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c6164647265737329",
                            "id": 17587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11456:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bcfd9be04f8d6b8ee1ae73075f8fe8db10e4b254a56103daa450197029a55fda",
                              "typeString": "literal_string \"log(uint256,address,address)\""
                            },
                            "value": "log(uint256,address,address)"
                          },
                          {
                            "id": 17588,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17577,
                            "src": "11488:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17589,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17579,
                            "src": "11492:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17590,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17581,
                            "src": "11496:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bcfd9be04f8d6b8ee1ae73075f8fe8db10e4b254a56103daa450197029a55fda",
                              "typeString": "literal_string \"log(uint256,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17585,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11432:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11436:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11432:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11432:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17584,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11416:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11416:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17593,
                  "nodeType": "ExpressionStatement",
                  "src": "11416:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11352:3:14",
            "parameters": {
              "id": 17582,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17577,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11364:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17595,
                  "src": "11356:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17576,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11356:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17579,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11376:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17595,
                  "src": "11368:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17578,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11368:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17581,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11388:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17595,
                  "src": "11380:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17580,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11380:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11355:36:14"
            },
            "returnParameters": {
              "id": 17583,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11406:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17615,
            "nodeType": "FunctionDefinition",
            "src": "11513:169:14",
            "body": {
              "id": 17614,
              "nodeType": "Block",
              "src": "11582:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c75696e7432353629",
                            "id": 17607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11632:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ca47c4ebe9fba29faff9e6b57fbe69e17216e7526486c463d61c06e8992beece",
                              "typeString": "literal_string \"log(string,uint256,uint256)\""
                            },
                            "value": "log(string,uint256,uint256)"
                          },
                          {
                            "id": 17608,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17597,
                            "src": "11663:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17609,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17599,
                            "src": "11667:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17610,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17601,
                            "src": "11671:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ca47c4ebe9fba29faff9e6b57fbe69e17216e7526486c463d61c06e8992beece",
                              "typeString": "literal_string \"log(string,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17605,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11608:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11612:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11608:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11608:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17604,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11592:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11592:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17613,
                  "nodeType": "ExpressionStatement",
                  "src": "11592:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11522:3:14",
            "parameters": {
              "id": 17602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17597,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11540:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17615,
                  "src": "11526:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17596,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11526:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17599,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11552:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17615,
                  "src": "11544:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11544:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17601,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11564:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17615,
                  "src": "11556:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11556:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11525:42:14"
            },
            "returnParameters": {
              "id": 17603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11582:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17635,
            "nodeType": "FunctionDefinition",
            "src": "11688:174:14",
            "body": {
              "id": 17634,
              "nodeType": "Block",
              "src": "11763:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c737472696e6729",
                            "id": 17627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11813:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5970e089c65c5d431d60f26e6cf1ec3984c873a96b59f1aed9fc44cdf9078bcf",
                              "typeString": "literal_string \"log(string,uint256,string)\""
                            },
                            "value": "log(string,uint256,string)"
                          },
                          {
                            "id": 17628,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17617,
                            "src": "11843:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17629,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17619,
                            "src": "11847:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17630,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17621,
                            "src": "11851:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5970e089c65c5d431d60f26e6cf1ec3984c873a96b59f1aed9fc44cdf9078bcf",
                              "typeString": "literal_string \"log(string,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17625,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11789:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11793:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11789:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11789:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17624,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11773:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11773:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17633,
                  "nodeType": "ExpressionStatement",
                  "src": "11773:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11697:3:14",
            "parameters": {
              "id": 17622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17617,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11715:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17635,
                  "src": "11701:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17616,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11701:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17619,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11727:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17635,
                  "src": "11719:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17618,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11719:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17621,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11745:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17635,
                  "src": "11731:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17620,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11731:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11700:48:14"
            },
            "returnParameters": {
              "id": 17623,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11763:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17655,
            "nodeType": "FunctionDefinition",
            "src": "11868:163:14",
            "body": {
              "id": 17654,
              "nodeType": "Block",
              "src": "11934:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c626f6f6c29",
                            "id": 17647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11984:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ca7733b1b473f13a94152fab2b969755f42d925703a46c93a1825aad614f145e",
                              "typeString": "literal_string \"log(string,uint256,bool)\""
                            },
                            "value": "log(string,uint256,bool)"
                          },
                          {
                            "id": 17648,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17637,
                            "src": "12012:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17649,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17639,
                            "src": "12016:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17650,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17641,
                            "src": "12020:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ca7733b1b473f13a94152fab2b969755f42d925703a46c93a1825aad614f145e",
                              "typeString": "literal_string \"log(string,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17645,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11960:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11964:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11960:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11960:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17644,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "11944:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11944:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17653,
                  "nodeType": "ExpressionStatement",
                  "src": "11944:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11877:3:14",
            "parameters": {
              "id": 17642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17637,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11895:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17655,
                  "src": "11881:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17636,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11881:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17639,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11907:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17655,
                  "src": "11899:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11899:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17641,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11916:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17655,
                  "src": "11911:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17640,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11911:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11880:39:14"
            },
            "returnParameters": {
              "id": 17643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11934:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17675,
            "nodeType": "FunctionDefinition",
            "src": "12037:169:14",
            "body": {
              "id": 17674,
              "nodeType": "Block",
              "src": "12106:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c6164647265737329",
                            "id": 17667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12156:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1c7ec4485ea8bf18e646e5381f7318f45423199ed371307bc9171a4242f27335",
                              "typeString": "literal_string \"log(string,uint256,address)\""
                            },
                            "value": "log(string,uint256,address)"
                          },
                          {
                            "id": 17668,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17657,
                            "src": "12187:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17669,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17659,
                            "src": "12191:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17670,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17661,
                            "src": "12195:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1c7ec4485ea8bf18e646e5381f7318f45423199ed371307bc9171a4242f27335",
                              "typeString": "literal_string \"log(string,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17665,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12132:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12136:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12132:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12132:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17664,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "12116:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12116:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17673,
                  "nodeType": "ExpressionStatement",
                  "src": "12116:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12046:3:14",
            "parameters": {
              "id": 17662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17657,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12064:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17675,
                  "src": "12050:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17656,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12050:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17659,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12076:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17675,
                  "src": "12068:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12068:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17661,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12088:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17675,
                  "src": "12080:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17660,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12080:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12049:42:14"
            },
            "returnParameters": {
              "id": 17663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12106:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17695,
            "nodeType": "FunctionDefinition",
            "src": "12212:174:14",
            "body": {
              "id": 17694,
              "nodeType": "Block",
              "src": "12287:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e7432353629",
                            "id": 17687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12337:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5821efa12787fd2b80909e807f1dcc73717b87128d89e827e5b876178f2fdbd0",
                              "typeString": "literal_string \"log(string,string,uint256)\""
                            },
                            "value": "log(string,string,uint256)"
                          },
                          {
                            "id": 17688,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17677,
                            "src": "12367:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17689,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17679,
                            "src": "12371:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17690,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17681,
                            "src": "12375:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5821efa12787fd2b80909e807f1dcc73717b87128d89e827e5b876178f2fdbd0",
                              "typeString": "literal_string \"log(string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17685,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12313:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12317:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12313:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12313:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17684,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "12297:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12297:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17693,
                  "nodeType": "ExpressionStatement",
                  "src": "12297:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12221:3:14",
            "parameters": {
              "id": 17682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17677,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12239:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17695,
                  "src": "12225:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17676,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12225:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17679,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12257:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17695,
                  "src": "12243:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17678,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12243:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17681,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12269:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17695,
                  "src": "12261:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17680,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12261:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12224:48:14"
            },
            "returnParameters": {
              "id": 17683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12287:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17715,
            "nodeType": "FunctionDefinition",
            "src": "12392:179:14",
            "body": {
              "id": 17714,
              "nodeType": "Block",
              "src": "12473:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e6729",
                            "id": 17707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12523:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                              "typeString": "literal_string \"log(string,string,string)\""
                            },
                            "value": "log(string,string,string)"
                          },
                          {
                            "id": 17708,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17697,
                            "src": "12552:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17709,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17699,
                            "src": "12556:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17710,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17701,
                            "src": "12560:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                              "typeString": "literal_string \"log(string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17705,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12499:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12503:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12499:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12499:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17704,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "12483:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12483:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17713,
                  "nodeType": "ExpressionStatement",
                  "src": "12483:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12401:3:14",
            "parameters": {
              "id": 17702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17697,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12419:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17715,
                  "src": "12405:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17696,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12405:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17699,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12437:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17715,
                  "src": "12423:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17698,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12423:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17701,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12455:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17715,
                  "src": "12441:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17700,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12441:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12404:54:14"
            },
            "returnParameters": {
              "id": 17703,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12473:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17735,
            "nodeType": "FunctionDefinition",
            "src": "12577:168:14",
            "body": {
              "id": 17734,
              "nodeType": "Block",
              "src": "12649:96:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c29",
                            "id": 17727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12699:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                              "typeString": "literal_string \"log(string,string,bool)\""
                            },
                            "value": "log(string,string,bool)"
                          },
                          {
                            "id": 17728,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17717,
                            "src": "12726:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17729,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17719,
                            "src": "12730:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17730,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17721,
                            "src": "12734:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                              "typeString": "literal_string \"log(string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17725,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12675:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12679:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12675:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12675:62:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17724,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "12659:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12659:79:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17733,
                  "nodeType": "ExpressionStatement",
                  "src": "12659:79:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12586:3:14",
            "parameters": {
              "id": 17722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17717,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12604:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17735,
                  "src": "12590:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17716,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12590:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17719,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12622:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17735,
                  "src": "12608:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17718,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12608:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17721,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12631:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17735,
                  "src": "12626:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17720,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12626:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12589:45:14"
            },
            "returnParameters": {
              "id": 17723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12649:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17755,
            "nodeType": "FunctionDefinition",
            "src": "12751:174:14",
            "body": {
              "id": 17754,
              "nodeType": "Block",
              "src": "12826:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c6164647265737329",
                            "id": 17747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12876:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                              "typeString": "literal_string \"log(string,string,address)\""
                            },
                            "value": "log(string,string,address)"
                          },
                          {
                            "id": 17748,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17737,
                            "src": "12906:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17749,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17739,
                            "src": "12910:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17750,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17741,
                            "src": "12914:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                              "typeString": "literal_string \"log(string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17745,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12852:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12856:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12852:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12852:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17744,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "12836:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12836:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17753,
                  "nodeType": "ExpressionStatement",
                  "src": "12836:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12760:3:14",
            "parameters": {
              "id": 17742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17737,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12778:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "12764:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17736,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12764:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17739,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12796:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "12782:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17738,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12782:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17741,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12808:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "12800:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12800:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12763:48:14"
            },
            "returnParameters": {
              "id": 17743,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12826:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17775,
            "nodeType": "FunctionDefinition",
            "src": "12931:163:14",
            "body": {
              "id": 17774,
              "nodeType": "Block",
              "src": "12997:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e7432353629",
                            "id": 17767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13047:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c95958d6bc6e492868f9bea34fa0d5d3bf60736d44598880e7a9a99746b5d26a",
                              "typeString": "literal_string \"log(string,bool,uint256)\""
                            },
                            "value": "log(string,bool,uint256)"
                          },
                          {
                            "id": 17768,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17757,
                            "src": "13075:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17769,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17759,
                            "src": "13079:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17770,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17761,
                            "src": "13083:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c95958d6bc6e492868f9bea34fa0d5d3bf60736d44598880e7a9a99746b5d26a",
                              "typeString": "literal_string \"log(string,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17765,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13023:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13027:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13023:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13023:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17764,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13007:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13007:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17773,
                  "nodeType": "ExpressionStatement",
                  "src": "13007:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12940:3:14",
            "parameters": {
              "id": 17762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17757,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12958:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17775,
                  "src": "12944:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17756,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12944:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17759,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12967:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17775,
                  "src": "12962:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17758,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12962:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17761,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12979:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17775,
                  "src": "12971:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12971:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12943:39:14"
            },
            "returnParameters": {
              "id": 17763,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12997:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17795,
            "nodeType": "FunctionDefinition",
            "src": "13100:168:14",
            "body": {
              "id": 17794,
              "nodeType": "Block",
              "src": "13172:96:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e6729",
                            "id": 17787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13222:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                              "typeString": "literal_string \"log(string,bool,string)\""
                            },
                            "value": "log(string,bool,string)"
                          },
                          {
                            "id": 17788,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17777,
                            "src": "13249:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17789,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17779,
                            "src": "13253:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17790,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17781,
                            "src": "13257:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                              "typeString": "literal_string \"log(string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17785,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13198:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13202:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13198:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13198:62:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17784,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13182:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13182:79:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17793,
                  "nodeType": "ExpressionStatement",
                  "src": "13182:79:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13109:3:14",
            "parameters": {
              "id": 17782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17777,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13127:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17795,
                  "src": "13113:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17776,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13113:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17779,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13136:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17795,
                  "src": "13131:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17778,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13131:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17781,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13154:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17795,
                  "src": "13140:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17780,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13140:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13112:45:14"
            },
            "returnParameters": {
              "id": 17783,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13172:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17815,
            "nodeType": "FunctionDefinition",
            "src": "13274:157:14",
            "body": {
              "id": 17814,
              "nodeType": "Block",
              "src": "13337:94:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c29",
                            "id": 17807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13387:23:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                              "typeString": "literal_string \"log(string,bool,bool)\""
                            },
                            "value": "log(string,bool,bool)"
                          },
                          {
                            "id": 17808,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17797,
                            "src": "13412:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17809,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17799,
                            "src": "13416:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17810,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17801,
                            "src": "13420:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                              "typeString": "literal_string \"log(string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17805,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13363:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13367:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13363:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13363:60:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17804,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13347:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13347:77:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17813,
                  "nodeType": "ExpressionStatement",
                  "src": "13347:77:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13283:3:14",
            "parameters": {
              "id": 17802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17797,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13301:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17815,
                  "src": "13287:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17796,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13287:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17799,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13310:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17815,
                  "src": "13305:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17798,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13305:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17801,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13319:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17815,
                  "src": "13314:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17800,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13314:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13286:36:14"
            },
            "returnParameters": {
              "id": 17803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13337:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17835,
            "nodeType": "FunctionDefinition",
            "src": "13437:163:14",
            "body": {
              "id": 17834,
              "nodeType": "Block",
              "src": "13503:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c6164647265737329",
                            "id": 17827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13553:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                              "typeString": "literal_string \"log(string,bool,address)\""
                            },
                            "value": "log(string,bool,address)"
                          },
                          {
                            "id": 17828,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17817,
                            "src": "13581:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17829,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17819,
                            "src": "13585:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17830,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17821,
                            "src": "13589:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                              "typeString": "literal_string \"log(string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17825,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13529:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13533:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13529:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13529:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17824,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13513:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13513:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17833,
                  "nodeType": "ExpressionStatement",
                  "src": "13513:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13446:3:14",
            "parameters": {
              "id": 17822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17817,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13464:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17835,
                  "src": "13450:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17816,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13450:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17819,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13473:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17835,
                  "src": "13468:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17818,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13468:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17821,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13485:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17835,
                  "src": "13477:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13477:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13449:39:14"
            },
            "returnParameters": {
              "id": 17823,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13503:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17855,
            "nodeType": "FunctionDefinition",
            "src": "13606:169:14",
            "body": {
              "id": 17854,
              "nodeType": "Block",
              "src": "13675:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e7432353629",
                            "id": 17847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13725:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0d26b92533630e908cb95a1b2ed09291c6aa98f8da7094a2325f8c86cd45e5e4",
                              "typeString": "literal_string \"log(string,address,uint256)\""
                            },
                            "value": "log(string,address,uint256)"
                          },
                          {
                            "id": 17848,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17837,
                            "src": "13756:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17849,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17839,
                            "src": "13760:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17850,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17841,
                            "src": "13764:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0d26b92533630e908cb95a1b2ed09291c6aa98f8da7094a2325f8c86cd45e5e4",
                              "typeString": "literal_string \"log(string,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17845,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13701:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13705:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13701:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13701:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17844,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13685:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13685:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17853,
                  "nodeType": "ExpressionStatement",
                  "src": "13685:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13615:3:14",
            "parameters": {
              "id": 17842,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17837,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13633:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17855,
                  "src": "13619:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17836,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13619:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17839,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13645:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17855,
                  "src": "13637:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13637:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17841,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13657:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17855,
                  "src": "13649:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17840,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13649:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13618:42:14"
            },
            "returnParameters": {
              "id": 17843,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13675:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17875,
            "nodeType": "FunctionDefinition",
            "src": "13781:174:14",
            "body": {
              "id": 17874,
              "nodeType": "Block",
              "src": "13856:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e6729",
                            "id": 17867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13906:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                              "typeString": "literal_string \"log(string,address,string)\""
                            },
                            "value": "log(string,address,string)"
                          },
                          {
                            "id": 17868,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17857,
                            "src": "13936:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17869,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17859,
                            "src": "13940:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17870,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17861,
                            "src": "13944:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                              "typeString": "literal_string \"log(string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17865,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13882:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13886:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13882:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13882:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17864,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "13866:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13866:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17873,
                  "nodeType": "ExpressionStatement",
                  "src": "13866:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13790:3:14",
            "parameters": {
              "id": 17862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17857,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13808:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17875,
                  "src": "13794:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17856,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13794:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17859,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17875,
                  "src": "13812:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17858,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13812:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17861,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13838:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17875,
                  "src": "13824:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13824:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13793:48:14"
            },
            "returnParameters": {
              "id": 17863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13856:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17895,
            "nodeType": "FunctionDefinition",
            "src": "13961:163:14",
            "body": {
              "id": 17894,
              "nodeType": "Block",
              "src": "14027:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c29",
                            "id": 17887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14077:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                              "typeString": "literal_string \"log(string,address,bool)\""
                            },
                            "value": "log(string,address,bool)"
                          },
                          {
                            "id": 17888,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17877,
                            "src": "14105:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17889,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17879,
                            "src": "14109:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17890,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17881,
                            "src": "14113:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                              "typeString": "literal_string \"log(string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17885,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14053:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14057:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14053:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14053:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17884,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14037:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14037:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17893,
                  "nodeType": "ExpressionStatement",
                  "src": "14037:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13970:3:14",
            "parameters": {
              "id": 17882,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17877,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13988:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17895,
                  "src": "13974:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17876,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13974:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17879,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14000:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17895,
                  "src": "13992:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17878,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13992:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17881,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14009:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17895,
                  "src": "14004:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17880,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14004:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13973:39:14"
            },
            "returnParameters": {
              "id": 17883,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14027:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17915,
            "nodeType": "FunctionDefinition",
            "src": "14130:169:14",
            "body": {
              "id": 17914,
              "nodeType": "Block",
              "src": "14199:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c6164647265737329",
                            "id": 17907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14249:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                              "typeString": "literal_string \"log(string,address,address)\""
                            },
                            "value": "log(string,address,address)"
                          },
                          {
                            "id": 17908,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17897,
                            "src": "14280:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17909,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17899,
                            "src": "14284:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17910,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17901,
                            "src": "14288:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                              "typeString": "literal_string \"log(string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17905,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14225:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14229:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14225:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14225:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17904,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14209:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14209:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17913,
                  "nodeType": "ExpressionStatement",
                  "src": "14209:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14139:3:14",
            "parameters": {
              "id": 17902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17897,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14157:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17915,
                  "src": "14143:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17896,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14143:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17899,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14169:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17915,
                  "src": "14161:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17898,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14161:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17901,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14181:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17915,
                  "src": "14173:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17900,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14173:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14142:42:14"
            },
            "returnParameters": {
              "id": 17903,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14199:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17935,
            "nodeType": "FunctionDefinition",
            "src": "14305:158:14",
            "body": {
              "id": 17934,
              "nodeType": "Block",
              "src": "14365:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c75696e7432353629",
                            "id": 17927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14415:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_371033677da72158a60d6dc6ec9fa4683ad37ad854670ba3fcf814603cf8bb28",
                              "typeString": "literal_string \"log(bool,uint256,uint256)\""
                            },
                            "value": "log(bool,uint256,uint256)"
                          },
                          {
                            "id": 17928,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17917,
                            "src": "14444:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17929,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17919,
                            "src": "14448:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17930,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17921,
                            "src": "14452:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_371033677da72158a60d6dc6ec9fa4683ad37ad854670ba3fcf814603cf8bb28",
                              "typeString": "literal_string \"log(bool,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14391:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14395:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14391:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14391:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17924,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14375:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14375:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17933,
                  "nodeType": "ExpressionStatement",
                  "src": "14375:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14314:3:14",
            "parameters": {
              "id": 17922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17917,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14323:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17935,
                  "src": "14318:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17916,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14318:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17919,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14335:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17935,
                  "src": "14327:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17918,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14327:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17921,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14347:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17935,
                  "src": "14339:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17920,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14339:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14317:33:14"
            },
            "returnParameters": {
              "id": 17923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14365:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17955,
            "nodeType": "FunctionDefinition",
            "src": "14469:163:14",
            "body": {
              "id": 17954,
              "nodeType": "Block",
              "src": "14535:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c737472696e6729",
                            "id": 17947,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14585:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c3fc3970359ec5bcd4a409af812c658e77b7983043c9e7299db566fbd8131447",
                              "typeString": "literal_string \"log(bool,uint256,string)\""
                            },
                            "value": "log(bool,uint256,string)"
                          },
                          {
                            "id": 17948,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17937,
                            "src": "14613:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17949,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17939,
                            "src": "14617:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17950,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17941,
                            "src": "14621:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c3fc3970359ec5bcd4a409af812c658e77b7983043c9e7299db566fbd8131447",
                              "typeString": "literal_string \"log(bool,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17945,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14561:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14565:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14561:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14561:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17944,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14545:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14545:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17953,
                  "nodeType": "ExpressionStatement",
                  "src": "14545:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14478:3:14",
            "parameters": {
              "id": 17942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17937,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14487:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17955,
                  "src": "14482:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17936,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14482:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17939,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14499:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17955,
                  "src": "14491:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17938,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14491:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17941,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14517:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17955,
                  "src": "14503:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17940,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14503:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14481:39:14"
            },
            "returnParameters": {
              "id": 17943,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14535:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17975,
            "nodeType": "FunctionDefinition",
            "src": "14638:152:14",
            "body": {
              "id": 17974,
              "nodeType": "Block",
              "src": "14695:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c626f6f6c29",
                            "id": 17967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14745:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e8defba9dac8a3ed4ad0f711b733171fd223b5d127b3485540d69bec05995a26",
                              "typeString": "literal_string \"log(bool,uint256,bool)\""
                            },
                            "value": "log(bool,uint256,bool)"
                          },
                          {
                            "id": 17968,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17957,
                            "src": "14771:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17969,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17959,
                            "src": "14775:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17970,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17961,
                            "src": "14779:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e8defba9dac8a3ed4ad0f711b733171fd223b5d127b3485540d69bec05995a26",
                              "typeString": "literal_string \"log(bool,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17965,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14721:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14725:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14721:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14721:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17964,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14705:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14705:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17973,
                  "nodeType": "ExpressionStatement",
                  "src": "14705:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14647:3:14",
            "parameters": {
              "id": 17962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17957,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14656:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17975,
                  "src": "14651:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17956,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14651:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17959,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14668:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17975,
                  "src": "14660:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17958,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14660:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17961,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14677:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17975,
                  "src": "14672:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17960,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14672:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14650:30:14"
            },
            "returnParameters": {
              "id": 17963,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14695:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17995,
            "nodeType": "FunctionDefinition",
            "src": "14796:158:14",
            "body": {
              "id": 17994,
              "nodeType": "Block",
              "src": "14856:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c6164647265737329",
                            "id": 17987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14906:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_088ef9d2f4d01d13401423c19b7f189200a7ad3f567d9e20f37299f94f92f574",
                              "typeString": "literal_string \"log(bool,uint256,address)\""
                            },
                            "value": "log(bool,uint256,address)"
                          },
                          {
                            "id": 17988,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17977,
                            "src": "14935:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17989,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17979,
                            "src": "14939:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17990,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17981,
                            "src": "14943:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_088ef9d2f4d01d13401423c19b7f189200a7ad3f567d9e20f37299f94f92f574",
                              "typeString": "literal_string \"log(bool,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17985,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14882:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14886:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14882:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17991,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14882:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17984,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "14866:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14866:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17993,
                  "nodeType": "ExpressionStatement",
                  "src": "14866:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14805:3:14",
            "parameters": {
              "id": 17982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17977,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14814:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17995,
                  "src": "14809:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17976,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14809:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17979,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14826:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17995,
                  "src": "14818:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14818:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17981,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14838:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 17995,
                  "src": "14830:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14830:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14808:33:14"
            },
            "returnParameters": {
              "id": 17983,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14856:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18015,
            "nodeType": "FunctionDefinition",
            "src": "14960:163:14",
            "body": {
              "id": 18014,
              "nodeType": "Block",
              "src": "15026:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e7432353629",
                            "id": 18007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15076:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1093ee11e671928331708700100b356c86a8494f33b170ddcffd95462a0adf64",
                              "typeString": "literal_string \"log(bool,string,uint256)\""
                            },
                            "value": "log(bool,string,uint256)"
                          },
                          {
                            "id": 18008,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17997,
                            "src": "15104:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18009,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17999,
                            "src": "15108:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18010,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18001,
                            "src": "15112:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1093ee11e671928331708700100b356c86a8494f33b170ddcffd95462a0adf64",
                              "typeString": "literal_string \"log(bool,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18005,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15052:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15056:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15052:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15052:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18004,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15036:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15036:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18013,
                  "nodeType": "ExpressionStatement",
                  "src": "15036:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14969:3:14",
            "parameters": {
              "id": 18002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17997,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14978:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18015,
                  "src": "14973:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17996,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14973:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17999,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14996:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18015,
                  "src": "14982:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17998,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14982:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18001,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15008:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18015,
                  "src": "15000:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18000,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15000:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14972:39:14"
            },
            "returnParameters": {
              "id": 18003,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15026:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18035,
            "nodeType": "FunctionDefinition",
            "src": "15129:168:14",
            "body": {
              "id": 18034,
              "nodeType": "Block",
              "src": "15201:96:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e6729",
                            "id": 18027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15251:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                              "typeString": "literal_string \"log(bool,string,string)\""
                            },
                            "value": "log(bool,string,string)"
                          },
                          {
                            "id": 18028,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18017,
                            "src": "15278:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18029,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18019,
                            "src": "15282:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18030,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18021,
                            "src": "15286:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                              "typeString": "literal_string \"log(bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18025,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15227:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15231:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15227:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15227:62:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18024,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15211:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15211:79:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18033,
                  "nodeType": "ExpressionStatement",
                  "src": "15211:79:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15138:3:14",
            "parameters": {
              "id": 18022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18017,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15147:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18035,
                  "src": "15142:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18016,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15142:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18019,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15165:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18035,
                  "src": "15151:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15151:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18021,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15183:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18035,
                  "src": "15169:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18020,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15169:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15141:45:14"
            },
            "returnParameters": {
              "id": 18023,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15201:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18055,
            "nodeType": "FunctionDefinition",
            "src": "15303:157:14",
            "body": {
              "id": 18054,
              "nodeType": "Block",
              "src": "15366:94:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c29",
                            "id": 18047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15416:23:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                              "typeString": "literal_string \"log(bool,string,bool)\""
                            },
                            "value": "log(bool,string,bool)"
                          },
                          {
                            "id": 18048,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18037,
                            "src": "15441:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18049,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18039,
                            "src": "15445:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18050,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18041,
                            "src": "15449:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                              "typeString": "literal_string \"log(bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18045,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15392:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15396:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15392:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15392:60:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18044,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15376:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15376:77:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18053,
                  "nodeType": "ExpressionStatement",
                  "src": "15376:77:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15312:3:14",
            "parameters": {
              "id": 18042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18037,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15321:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18055,
                  "src": "15316:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18036,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15316:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18039,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15339:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18055,
                  "src": "15325:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18038,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15325:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18041,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15348:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18055,
                  "src": "15343:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18040,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15343:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15315:36:14"
            },
            "returnParameters": {
              "id": 18043,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15366:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18075,
            "nodeType": "FunctionDefinition",
            "src": "15466:163:14",
            "body": {
              "id": 18074,
              "nodeType": "Block",
              "src": "15532:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c6164647265737329",
                            "id": 18067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15582:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                              "typeString": "literal_string \"log(bool,string,address)\""
                            },
                            "value": "log(bool,string,address)"
                          },
                          {
                            "id": 18068,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18057,
                            "src": "15610:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18069,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18059,
                            "src": "15614:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18070,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18061,
                            "src": "15618:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                              "typeString": "literal_string \"log(bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18065,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15558:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15562:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15558:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15558:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18064,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15542:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15542:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18073,
                  "nodeType": "ExpressionStatement",
                  "src": "15542:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15475:3:14",
            "parameters": {
              "id": 18062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18057,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15484:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18075,
                  "src": "15479:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18056,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15479:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18059,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15502:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18075,
                  "src": "15488:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18058,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15488:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18061,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15514:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18075,
                  "src": "15506:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18060,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15506:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15478:39:14"
            },
            "returnParameters": {
              "id": 18063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15532:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18095,
            "nodeType": "FunctionDefinition",
            "src": "15635:152:14",
            "body": {
              "id": 18094,
              "nodeType": "Block",
              "src": "15692:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e7432353629",
                            "id": 18087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15742:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_12f216023a0243e7ece19b75fc4619b59ea663e0aefdf2e4b1faa16a9fa3a211",
                              "typeString": "literal_string \"log(bool,bool,uint256)\""
                            },
                            "value": "log(bool,bool,uint256)"
                          },
                          {
                            "id": 18088,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18077,
                            "src": "15768:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18089,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18079,
                            "src": "15772:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18090,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18081,
                            "src": "15776:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_12f216023a0243e7ece19b75fc4619b59ea663e0aefdf2e4b1faa16a9fa3a211",
                              "typeString": "literal_string \"log(bool,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18085,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15718:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15722:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15718:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15718:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18084,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15702:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15702:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18093,
                  "nodeType": "ExpressionStatement",
                  "src": "15702:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15644:3:14",
            "parameters": {
              "id": 18082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18077,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15653:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18095,
                  "src": "15648:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18076,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15648:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18079,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15662:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18095,
                  "src": "15657:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18078,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15657:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18081,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15674:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18095,
                  "src": "15666:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18080,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15666:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15647:30:14"
            },
            "returnParameters": {
              "id": 18083,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15692:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18115,
            "nodeType": "FunctionDefinition",
            "src": "15793:157:14",
            "body": {
              "id": 18114,
              "nodeType": "Block",
              "src": "15856:94:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 18107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15906:23:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                              "typeString": "literal_string \"log(bool,bool,string)\""
                            },
                            "value": "log(bool,bool,string)"
                          },
                          {
                            "id": 18108,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18097,
                            "src": "15931:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18109,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18099,
                            "src": "15935:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18110,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18101,
                            "src": "15939:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                              "typeString": "literal_string \"log(bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18105,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15882:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15886:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15882:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18111,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15882:60:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18104,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "15866:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15866:77:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18113,
                  "nodeType": "ExpressionStatement",
                  "src": "15866:77:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15802:3:14",
            "parameters": {
              "id": 18102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18097,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15811:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18115,
                  "src": "15806:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18096,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15806:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18099,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18115,
                  "src": "15815:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18098,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15815:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18101,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15838:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18115,
                  "src": "15824:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18100,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15824:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15805:36:14"
            },
            "returnParameters": {
              "id": 18103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15856:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18135,
            "nodeType": "FunctionDefinition",
            "src": "15956:146:14",
            "body": {
              "id": 18134,
              "nodeType": "Block",
              "src": "16010:92:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 18127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16060:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                              "typeString": "literal_string \"log(bool,bool,bool)\""
                            },
                            "value": "log(bool,bool,bool)"
                          },
                          {
                            "id": 18128,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18117,
                            "src": "16083:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18129,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18119,
                            "src": "16087:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18130,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18121,
                            "src": "16091:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                              "typeString": "literal_string \"log(bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18125,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16036:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16040:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16036:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16036:58:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18124,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16020:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16020:75:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18133,
                  "nodeType": "ExpressionStatement",
                  "src": "16020:75:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15965:3:14",
            "parameters": {
              "id": 18122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18117,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15974:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18135,
                  "src": "15969:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18116,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15969:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18119,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15983:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18135,
                  "src": "15978:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18118,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15978:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18121,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15992:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18135,
                  "src": "15987:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18120,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15987:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15968:27:14"
            },
            "returnParameters": {
              "id": 18123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16010:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18155,
            "nodeType": "FunctionDefinition",
            "src": "16108:152:14",
            "body": {
              "id": 18154,
              "nodeType": "Block",
              "src": "16165:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 18147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16215:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                              "typeString": "literal_string \"log(bool,bool,address)\""
                            },
                            "value": "log(bool,bool,address)"
                          },
                          {
                            "id": 18148,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18137,
                            "src": "16241:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18149,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18139,
                            "src": "16245:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18150,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18141,
                            "src": "16249:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                              "typeString": "literal_string \"log(bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18145,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16191:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16195:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16191:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16191:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18144,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16175:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16175:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18153,
                  "nodeType": "ExpressionStatement",
                  "src": "16175:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16117:3:14",
            "parameters": {
              "id": 18142,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18137,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16126:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18155,
                  "src": "16121:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18136,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16121:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18139,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16135:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18155,
                  "src": "16130:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18138,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16130:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18141,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16147:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18155,
                  "src": "16139:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18140,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16139:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16120:30:14"
            },
            "returnParameters": {
              "id": 18143,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16165:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18175,
            "nodeType": "FunctionDefinition",
            "src": "16266:158:14",
            "body": {
              "id": 18174,
              "nodeType": "Block",
              "src": "16326:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e7432353629",
                            "id": 18167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16376:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f7b9afb4f9ee9df3fee50155d0accfa23536f443bcbc89ec11f75df422d05ac",
                              "typeString": "literal_string \"log(bool,address,uint256)\""
                            },
                            "value": "log(bool,address,uint256)"
                          },
                          {
                            "id": 18168,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18157,
                            "src": "16405:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18169,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18159,
                            "src": "16409:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18170,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18161,
                            "src": "16413:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f7b9afb4f9ee9df3fee50155d0accfa23536f443bcbc89ec11f75df422d05ac",
                              "typeString": "literal_string \"log(bool,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18165,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16352:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16356:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16352:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16352:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18164,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16336:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16336:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18173,
                  "nodeType": "ExpressionStatement",
                  "src": "16336:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16275:3:14",
            "parameters": {
              "id": 18162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18157,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16284:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18175,
                  "src": "16279:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18156,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16279:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18159,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16296:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18175,
                  "src": "16288:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18158,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16288:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18161,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16308:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18175,
                  "src": "16300:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18160,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16300:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16278:33:14"
            },
            "returnParameters": {
              "id": 18163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16326:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18195,
            "nodeType": "FunctionDefinition",
            "src": "16430:163:14",
            "body": {
              "id": 18194,
              "nodeType": "Block",
              "src": "16496:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e6729",
                            "id": 18187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16546:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                              "typeString": "literal_string \"log(bool,address,string)\""
                            },
                            "value": "log(bool,address,string)"
                          },
                          {
                            "id": 18188,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18177,
                            "src": "16574:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18189,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18179,
                            "src": "16578:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18190,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18181,
                            "src": "16582:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                              "typeString": "literal_string \"log(bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18185,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16522:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16526:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16522:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16522:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18184,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16506:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16506:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18193,
                  "nodeType": "ExpressionStatement",
                  "src": "16506:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16439:3:14",
            "parameters": {
              "id": 18182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18177,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16448:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18195,
                  "src": "16443:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18176,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16443:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18179,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16460:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18195,
                  "src": "16452:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18178,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16452:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18181,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16478:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18195,
                  "src": "16464:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18180,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16464:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16442:39:14"
            },
            "returnParameters": {
              "id": 18183,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16496:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18215,
            "nodeType": "FunctionDefinition",
            "src": "16599:152:14",
            "body": {
              "id": 18214,
              "nodeType": "Block",
              "src": "16656:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c29",
                            "id": 18207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16706:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                              "typeString": "literal_string \"log(bool,address,bool)\""
                            },
                            "value": "log(bool,address,bool)"
                          },
                          {
                            "id": 18208,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18197,
                            "src": "16732:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18209,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18199,
                            "src": "16736:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18210,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18201,
                            "src": "16740:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                              "typeString": "literal_string \"log(bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18205,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16682:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16686:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16682:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16682:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18204,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16666:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16666:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18213,
                  "nodeType": "ExpressionStatement",
                  "src": "16666:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16608:3:14",
            "parameters": {
              "id": 18202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18197,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16617:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "16612:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16612:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18199,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16629:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "16621:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18198,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16621:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18201,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16638:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "16633:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18200,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16633:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16611:30:14"
            },
            "returnParameters": {
              "id": 18203,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16656:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18235,
            "nodeType": "FunctionDefinition",
            "src": "16757:158:14",
            "body": {
              "id": 18234,
              "nodeType": "Block",
              "src": "16817:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c6164647265737329",
                            "id": 18227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16867:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                              "typeString": "literal_string \"log(bool,address,address)\""
                            },
                            "value": "log(bool,address,address)"
                          },
                          {
                            "id": 18228,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18217,
                            "src": "16896:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18229,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18219,
                            "src": "16900:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18230,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18221,
                            "src": "16904:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                              "typeString": "literal_string \"log(bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18225,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16843:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16847:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16843:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16843:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18224,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16827:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16827:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18233,
                  "nodeType": "ExpressionStatement",
                  "src": "16827:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16766:3:14",
            "parameters": {
              "id": 18222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18217,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16775:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18235,
                  "src": "16770:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18216,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16770:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18219,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18235,
                  "src": "16779:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18218,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16779:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18221,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16799:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18235,
                  "src": "16791:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18220,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16791:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16769:33:14"
            },
            "returnParameters": {
              "id": 18223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16817:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18255,
            "nodeType": "FunctionDefinition",
            "src": "16921:164:14",
            "body": {
              "id": 18254,
              "nodeType": "Block",
              "src": "16984:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c75696e7432353629",
                            "id": 18247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17034:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b69bcaf6823fa467c87c127df102001d1ca4e8a6dc08cab8aa1e5ab4a0ae8c76",
                              "typeString": "literal_string \"log(address,uint256,uint256)\""
                            },
                            "value": "log(address,uint256,uint256)"
                          },
                          {
                            "id": 18248,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18237,
                            "src": "17066:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18249,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18239,
                            "src": "17070:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18250,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18241,
                            "src": "17074:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b69bcaf6823fa467c87c127df102001d1ca4e8a6dc08cab8aa1e5ab4a0ae8c76",
                              "typeString": "literal_string \"log(address,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18245,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17010:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17014:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17010:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17010:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18244,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "16994:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16994:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18253,
                  "nodeType": "ExpressionStatement",
                  "src": "16994:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16930:3:14",
            "parameters": {
              "id": 18242,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18237,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16942:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18255,
                  "src": "16934:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16934:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18239,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16954:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18255,
                  "src": "16946:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18238,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16946:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18241,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16966:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18255,
                  "src": "16958:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18240,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16958:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16933:36:14"
            },
            "returnParameters": {
              "id": 18243,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16984:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18275,
            "nodeType": "FunctionDefinition",
            "src": "17091:169:14",
            "body": {
              "id": 18274,
              "nodeType": "Block",
              "src": "17160:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c737472696e6729",
                            "id": 18267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17210:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1f2e8aa7ff0c088860d7b3f0d1dc288d8e8a07808525cc31a5691f1bc0e149d",
                              "typeString": "literal_string \"log(address,uint256,string)\""
                            },
                            "value": "log(address,uint256,string)"
                          },
                          {
                            "id": 18268,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18257,
                            "src": "17241:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18269,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18259,
                            "src": "17245:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18270,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18261,
                            "src": "17249:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a1f2e8aa7ff0c088860d7b3f0d1dc288d8e8a07808525cc31a5691f1bc0e149d",
                              "typeString": "literal_string \"log(address,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18265,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17186:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17190:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17186:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17186:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18264,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "17170:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17170:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18273,
                  "nodeType": "ExpressionStatement",
                  "src": "17170:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17100:3:14",
            "parameters": {
              "id": 18262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18257,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17112:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18275,
                  "src": "17104:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18256,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17104:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18259,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17124:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18275,
                  "src": "17116:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18258,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17116:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18261,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17142:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18275,
                  "src": "17128:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18260,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17128:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17103:42:14"
            },
            "returnParameters": {
              "id": 18263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17160:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18295,
            "nodeType": "FunctionDefinition",
            "src": "17266:158:14",
            "body": {
              "id": 18294,
              "nodeType": "Block",
              "src": "17326:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c626f6f6c29",
                            "id": 18287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17376:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_678209a8f42181c670dc624bae130f552678a896a5cb06db485524796aca1390",
                              "typeString": "literal_string \"log(address,uint256,bool)\""
                            },
                            "value": "log(address,uint256,bool)"
                          },
                          {
                            "id": 18288,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18277,
                            "src": "17405:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18289,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18279,
                            "src": "17409:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18290,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18281,
                            "src": "17413:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_678209a8f42181c670dc624bae130f552678a896a5cb06db485524796aca1390",
                              "typeString": "literal_string \"log(address,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18285,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17352:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17356:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17352:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17352:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18284,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "17336:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17336:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18293,
                  "nodeType": "ExpressionStatement",
                  "src": "17336:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17275:3:14",
            "parameters": {
              "id": 18282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18277,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17287:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18295,
                  "src": "17279:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18276,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17279:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18279,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17299:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18295,
                  "src": "17291:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17291:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18281,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17308:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18295,
                  "src": "17303:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18280,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17303:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17278:33:14"
            },
            "returnParameters": {
              "id": 18283,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17326:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18315,
            "nodeType": "FunctionDefinition",
            "src": "17430:164:14",
            "body": {
              "id": 18314,
              "nodeType": "Block",
              "src": "17493:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c6164647265737329",
                            "id": 18307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17543:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7bc0d848840f8a2b7df87b30af9a8d9856aea86658fd890c9e8abce72cda0b36",
                              "typeString": "literal_string \"log(address,uint256,address)\""
                            },
                            "value": "log(address,uint256,address)"
                          },
                          {
                            "id": 18308,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18297,
                            "src": "17575:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18309,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18299,
                            "src": "17579:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18310,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18301,
                            "src": "17583:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7bc0d848840f8a2b7df87b30af9a8d9856aea86658fd890c9e8abce72cda0b36",
                              "typeString": "literal_string \"log(address,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18305,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17519:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17523:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17519:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17519:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18304,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "17503:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17503:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18313,
                  "nodeType": "ExpressionStatement",
                  "src": "17503:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17439:3:14",
            "parameters": {
              "id": 18302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18297,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17451:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18315,
                  "src": "17443:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17443:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18299,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17463:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18315,
                  "src": "17455:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18298,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17455:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18301,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17475:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18315,
                  "src": "17467:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17467:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17442:36:14"
            },
            "returnParameters": {
              "id": 18303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17493:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18335,
            "nodeType": "FunctionDefinition",
            "src": "17600:169:14",
            "body": {
              "id": 18334,
              "nodeType": "Block",
              "src": "17669:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e7432353629",
                            "id": 18327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17719:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_67dd6ff15de5c635b9900811039f919659774d9843a07b7bcdfb1b54315e9200",
                              "typeString": "literal_string \"log(address,string,uint256)\""
                            },
                            "value": "log(address,string,uint256)"
                          },
                          {
                            "id": 18328,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18317,
                            "src": "17750:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18329,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18319,
                            "src": "17754:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18330,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18321,
                            "src": "17758:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_67dd6ff15de5c635b9900811039f919659774d9843a07b7bcdfb1b54315e9200",
                              "typeString": "literal_string \"log(address,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18325,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17695:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17699:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17695:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17695:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18324,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "17679:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17679:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18333,
                  "nodeType": "ExpressionStatement",
                  "src": "17679:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17609:3:14",
            "parameters": {
              "id": 18322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18317,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17621:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18335,
                  "src": "17613:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17613:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18319,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17639:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18335,
                  "src": "17625:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18318,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17625:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18321,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17651:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18335,
                  "src": "17643:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18320,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17643:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17612:42:14"
            },
            "returnParameters": {
              "id": 18323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17669:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18355,
            "nodeType": "FunctionDefinition",
            "src": "17775:174:14",
            "body": {
              "id": 18354,
              "nodeType": "Block",
              "src": "17850:99:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e6729",
                            "id": 18347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17900:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                              "typeString": "literal_string \"log(address,string,string)\""
                            },
                            "value": "log(address,string,string)"
                          },
                          {
                            "id": 18348,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18337,
                            "src": "17930:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18349,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18339,
                            "src": "17934:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18350,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18341,
                            "src": "17938:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                              "typeString": "literal_string \"log(address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18345,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17876:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17880:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17876:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17876:65:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18344,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "17860:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17860:82:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18353,
                  "nodeType": "ExpressionStatement",
                  "src": "17860:82:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17784:3:14",
            "parameters": {
              "id": 18342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18337,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17796:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18355,
                  "src": "17788:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18336,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17788:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18339,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17814:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18355,
                  "src": "17800:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18338,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17800:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18341,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17832:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18355,
                  "src": "17818:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18340,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17818:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17787:48:14"
            },
            "returnParameters": {
              "id": 18343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17850:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18375,
            "nodeType": "FunctionDefinition",
            "src": "17955:163:14",
            "body": {
              "id": 18374,
              "nodeType": "Block",
              "src": "18021:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c29",
                            "id": 18367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18071:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                              "typeString": "literal_string \"log(address,string,bool)\""
                            },
                            "value": "log(address,string,bool)"
                          },
                          {
                            "id": 18368,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18357,
                            "src": "18099:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18369,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18359,
                            "src": "18103:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18370,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18361,
                            "src": "18107:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                              "typeString": "literal_string \"log(address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18365,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18047:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18051:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18047:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18047:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18364,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18031:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18031:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18373,
                  "nodeType": "ExpressionStatement",
                  "src": "18031:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17964:3:14",
            "parameters": {
              "id": 18362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18357,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17976:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18375,
                  "src": "17968:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17968:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18359,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17994:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18375,
                  "src": "17980:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17980:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18361,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18003:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18375,
                  "src": "17998:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18360,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17998:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17967:39:14"
            },
            "returnParameters": {
              "id": 18363,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18021:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18395,
            "nodeType": "FunctionDefinition",
            "src": "18124:169:14",
            "body": {
              "id": 18394,
              "nodeType": "Block",
              "src": "18193:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c6164647265737329",
                            "id": 18387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18243:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                              "typeString": "literal_string \"log(address,string,address)\""
                            },
                            "value": "log(address,string,address)"
                          },
                          {
                            "id": 18388,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18377,
                            "src": "18274:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18389,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18379,
                            "src": "18278:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18390,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18381,
                            "src": "18282:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                              "typeString": "literal_string \"log(address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18385,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18219:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18223:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18219:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18219:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18384,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18203:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18203:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18393,
                  "nodeType": "ExpressionStatement",
                  "src": "18203:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18133:3:14",
            "parameters": {
              "id": 18382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18377,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18145:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18395,
                  "src": "18137:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18137:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18379,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18163:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18395,
                  "src": "18149:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18378,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18149:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18381,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18175:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18395,
                  "src": "18167:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18167:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18136:42:14"
            },
            "returnParameters": {
              "id": 18383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18193:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18415,
            "nodeType": "FunctionDefinition",
            "src": "18299:158:14",
            "body": {
              "id": 18414,
              "nodeType": "Block",
              "src": "18359:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e7432353629",
                            "id": 18407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18409:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9c4f99fb8e27f663a71adc9f15ace4bdc959202f3b7faa1c8ca25e5e7e8568f9",
                              "typeString": "literal_string \"log(address,bool,uint256)\""
                            },
                            "value": "log(address,bool,uint256)"
                          },
                          {
                            "id": 18408,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "18438:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18409,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18399,
                            "src": "18442:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18410,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18401,
                            "src": "18446:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9c4f99fb8e27f663a71adc9f15ace4bdc959202f3b7faa1c8ca25e5e7e8568f9",
                              "typeString": "literal_string \"log(address,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18405,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18385:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18389:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18385:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18385:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18404,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18369:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18412,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18369:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18413,
                  "nodeType": "ExpressionStatement",
                  "src": "18369:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18308:3:14",
            "parameters": {
              "id": 18402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18397,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18320:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18415,
                  "src": "18312:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18312:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18399,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18329:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18415,
                  "src": "18324:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18398,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18324:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18401,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18341:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18415,
                  "src": "18333:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18400,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18333:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18311:33:14"
            },
            "returnParameters": {
              "id": 18403,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18359:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18435,
            "nodeType": "FunctionDefinition",
            "src": "18463:163:14",
            "body": {
              "id": 18434,
              "nodeType": "Block",
              "src": "18529:97:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e6729",
                            "id": 18427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18579:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                              "typeString": "literal_string \"log(address,bool,string)\""
                            },
                            "value": "log(address,bool,string)"
                          },
                          {
                            "id": 18428,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18417,
                            "src": "18607:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18429,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18419,
                            "src": "18611:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18430,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18421,
                            "src": "18615:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                              "typeString": "literal_string \"log(address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18425,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18555:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18559:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18555:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18555:63:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18424,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18539:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18539:80:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18433,
                  "nodeType": "ExpressionStatement",
                  "src": "18539:80:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18472:3:14",
            "parameters": {
              "id": 18422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18417,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18484:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18435,
                  "src": "18476:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18416,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18476:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18419,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18493:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18435,
                  "src": "18488:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18418,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18488:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18421,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18511:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18435,
                  "src": "18497:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18420,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18497:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18475:39:14"
            },
            "returnParameters": {
              "id": 18423,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18529:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18455,
            "nodeType": "FunctionDefinition",
            "src": "18632:152:14",
            "body": {
              "id": 18454,
              "nodeType": "Block",
              "src": "18689:95:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c29",
                            "id": 18447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18739:24:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                              "typeString": "literal_string \"log(address,bool,bool)\""
                            },
                            "value": "log(address,bool,bool)"
                          },
                          {
                            "id": 18448,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18437,
                            "src": "18765:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18449,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18439,
                            "src": "18769:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18450,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18441,
                            "src": "18773:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                              "typeString": "literal_string \"log(address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18445,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18715:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18719:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18715:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18715:61:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18444,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18699:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18452,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18699:78:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18453,
                  "nodeType": "ExpressionStatement",
                  "src": "18699:78:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18641:3:14",
            "parameters": {
              "id": 18442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18437,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18653:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18455,
                  "src": "18645:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18436,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18645:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18439,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18662:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18455,
                  "src": "18657:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18657:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18441,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18671:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18455,
                  "src": "18666:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18440,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18666:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18644:30:14"
            },
            "returnParameters": {
              "id": 18443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18689:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18475,
            "nodeType": "FunctionDefinition",
            "src": "18790:158:14",
            "body": {
              "id": 18474,
              "nodeType": "Block",
              "src": "18850:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c6164647265737329",
                            "id": 18467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18900:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                              "typeString": "literal_string \"log(address,bool,address)\""
                            },
                            "value": "log(address,bool,address)"
                          },
                          {
                            "id": 18468,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18457,
                            "src": "18929:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18469,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18459,
                            "src": "18933:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18470,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18461,
                            "src": "18937:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                              "typeString": "literal_string \"log(address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18465,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18876:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18880:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18876:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18876:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18464,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "18860:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18860:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18473,
                  "nodeType": "ExpressionStatement",
                  "src": "18860:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18799:3:14",
            "parameters": {
              "id": 18462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18457,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18811:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18475,
                  "src": "18803:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18456,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18803:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18459,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18475,
                  "src": "18815:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18458,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18815:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18461,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18832:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18475,
                  "src": "18824:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18824:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18802:33:14"
            },
            "returnParameters": {
              "id": 18463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18850:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18495,
            "nodeType": "FunctionDefinition",
            "src": "18954:164:14",
            "body": {
              "id": 18494,
              "nodeType": "Block",
              "src": "19017:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e7432353629",
                            "id": 18487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19067:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_17fe6185890336f35fbbd1b2962ba4f7207a4a65eb5b7443a7be8a152af930a4",
                              "typeString": "literal_string \"log(address,address,uint256)\""
                            },
                            "value": "log(address,address,uint256)"
                          },
                          {
                            "id": 18488,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18477,
                            "src": "19099:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18489,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18479,
                            "src": "19103:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18490,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18481,
                            "src": "19107:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_17fe6185890336f35fbbd1b2962ba4f7207a4a65eb5b7443a7be8a152af930a4",
                              "typeString": "literal_string \"log(address,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18485,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19043:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19047:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19043:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19043:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18484,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19027:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19027:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18493,
                  "nodeType": "ExpressionStatement",
                  "src": "19027:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18963:3:14",
            "parameters": {
              "id": 18482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18477,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18975:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18495,
                  "src": "18967:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18476,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18967:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18479,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18987:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18495,
                  "src": "18979:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18979:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18481,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18999:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18495,
                  "src": "18991:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18480,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18991:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18966:36:14"
            },
            "returnParameters": {
              "id": 18483,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19017:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18515,
            "nodeType": "FunctionDefinition",
            "src": "19124:169:14",
            "body": {
              "id": 18514,
              "nodeType": "Block",
              "src": "19193:100:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e6729",
                            "id": 18507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19243:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                              "typeString": "literal_string \"log(address,address,string)\""
                            },
                            "value": "log(address,address,string)"
                          },
                          {
                            "id": 18508,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18497,
                            "src": "19274:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18509,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18499,
                            "src": "19278:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18510,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18501,
                            "src": "19282:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                              "typeString": "literal_string \"log(address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18505,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19219:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19223:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19219:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19219:66:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18504,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19203:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19203:83:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18513,
                  "nodeType": "ExpressionStatement",
                  "src": "19203:83:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19133:3:14",
            "parameters": {
              "id": 18502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18497,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19145:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18515,
                  "src": "19137:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18496,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19137:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18499,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19157:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18515,
                  "src": "19149:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19149:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18501,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19175:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18515,
                  "src": "19161:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18500,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19161:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19136:42:14"
            },
            "returnParameters": {
              "id": 18503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19193:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18535,
            "nodeType": "FunctionDefinition",
            "src": "19299:158:14",
            "body": {
              "id": 18534,
              "nodeType": "Block",
              "src": "19359:98:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c29",
                            "id": 18527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19409:27:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                              "typeString": "literal_string \"log(address,address,bool)\""
                            },
                            "value": "log(address,address,bool)"
                          },
                          {
                            "id": 18528,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18517,
                            "src": "19438:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18529,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18519,
                            "src": "19442:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18530,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18521,
                            "src": "19446:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                              "typeString": "literal_string \"log(address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18525,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19385:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19389:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19385:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18531,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19385:64:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18524,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19369:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19369:81:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18533,
                  "nodeType": "ExpressionStatement",
                  "src": "19369:81:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19308:3:14",
            "parameters": {
              "id": 18522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18517,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19320:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18535,
                  "src": "19312:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18516,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19312:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18519,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19332:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18535,
                  "src": "19324:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18518,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19324:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18521,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19341:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18535,
                  "src": "19336:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18520,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19336:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19311:33:14"
            },
            "returnParameters": {
              "id": 18523,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19359:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18555,
            "nodeType": "FunctionDefinition",
            "src": "19463:164:14",
            "body": {
              "id": 18554,
              "nodeType": "Block",
              "src": "19526:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c6164647265737329",
                            "id": 18547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19576:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                              "typeString": "literal_string \"log(address,address,address)\""
                            },
                            "value": "log(address,address,address)"
                          },
                          {
                            "id": 18548,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18537,
                            "src": "19608:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18549,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18539,
                            "src": "19612:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18550,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18541,
                            "src": "19616:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                              "typeString": "literal_string \"log(address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18545,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19552:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19556:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19552:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19552:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18544,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19536:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19536:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18553,
                  "nodeType": "ExpressionStatement",
                  "src": "19536:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19472:3:14",
            "parameters": {
              "id": 18542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18537,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19484:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18555,
                  "src": "19476:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19476:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18539,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19496:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18555,
                  "src": "19488:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18538,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19488:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18541,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19508:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18555,
                  "src": "19500:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18540,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19500:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19475:36:14"
            },
            "returnParameters": {
              "id": 18543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19526:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18578,
            "nodeType": "FunctionDefinition",
            "src": "19633:188:14",
            "body": {
              "id": 18577,
              "nodeType": "Block",
              "src": "19708:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c75696e743235362c75696e7432353629",
                            "id": 18569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19758:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_193fb8009d4d1e3c22da0dd831b1e3aed72b8cabd1ebf3967b4ab3c2bbcf1c4f",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,uint256)\""
                            },
                            "value": "log(uint256,uint256,uint256,uint256)"
                          },
                          {
                            "id": 18570,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18557,
                            "src": "19798:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18571,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18559,
                            "src": "19802:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18572,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18561,
                            "src": "19806:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18573,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18563,
                            "src": "19810:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_193fb8009d4d1e3c22da0dd831b1e3aed72b8cabd1ebf3967b4ab3c2bbcf1c4f",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18567,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19734:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19738:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19734:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19734:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18566,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19718:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19718:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18576,
                  "nodeType": "ExpressionStatement",
                  "src": "19718:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19642:3:14",
            "parameters": {
              "id": 18564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18557,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19654:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18578,
                  "src": "19646:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18556,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19646:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18559,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19666:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18578,
                  "src": "19658:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19658:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18561,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19678:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18578,
                  "src": "19670:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18560,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19670:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18563,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19690:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18578,
                  "src": "19682:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18562,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19682:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19645:48:14"
            },
            "returnParameters": {
              "id": 18565,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19708:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18601,
            "nodeType": "FunctionDefinition",
            "src": "19827:193:14",
            "body": {
              "id": 18600,
              "nodeType": "Block",
              "src": "19908:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c75696e743235362c737472696e6729",
                            "id": 18592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19958:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_59cfcbe3e387f57023dcccd8733484dcb5a23a41a25c4015c01a4e8d3520c4ef",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,string)\""
                            },
                            "value": "log(uint256,uint256,uint256,string)"
                          },
                          {
                            "id": 18593,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18580,
                            "src": "19997:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18594,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18582,
                            "src": "20001:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18595,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18584,
                            "src": "20005:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18596,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18586,
                            "src": "20009:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_59cfcbe3e387f57023dcccd8733484dcb5a23a41a25c4015c01a4e8d3520c4ef",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18590,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19934:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19938:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19934:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19934:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18589,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "19918:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19918:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18599,
                  "nodeType": "ExpressionStatement",
                  "src": "19918:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19836:3:14",
            "parameters": {
              "id": 18587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18580,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19848:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18601,
                  "src": "19840:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19840:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18582,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19860:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18601,
                  "src": "19852:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19852:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18584,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19872:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18601,
                  "src": "19864:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18583,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19864:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18586,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19890:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18601,
                  "src": "19876:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18585,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19876:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19839:54:14"
            },
            "returnParameters": {
              "id": 18588,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19908:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18624,
            "nodeType": "FunctionDefinition",
            "src": "20026:182:14",
            "body": {
              "id": 18623,
              "nodeType": "Block",
              "src": "20098:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c75696e743235362c626f6f6c29",
                            "id": 18615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20148:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c598d18505e9c7404a061484d6144251d0ef342167a57ace85723d498abac8e3",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,bool)\""
                            },
                            "value": "log(uint256,uint256,uint256,bool)"
                          },
                          {
                            "id": 18616,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18603,
                            "src": "20185:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18617,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18605,
                            "src": "20189:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18618,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18607,
                            "src": "20193:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18619,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18609,
                            "src": "20197:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c598d18505e9c7404a061484d6144251d0ef342167a57ace85723d498abac8e3",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18613,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20124:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20128:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20124:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20124:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18612,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "20108:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20108:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18622,
                  "nodeType": "ExpressionStatement",
                  "src": "20108:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20035:3:14",
            "parameters": {
              "id": 18610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18603,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20047:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18624,
                  "src": "20039:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18602,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20039:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18605,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20059:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18624,
                  "src": "20051:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20051:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18607,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20071:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18624,
                  "src": "20063:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20063:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18609,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20080:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18624,
                  "src": "20075:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18608,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20075:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20038:45:14"
            },
            "returnParameters": {
              "id": 18611,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20098:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18647,
            "nodeType": "FunctionDefinition",
            "src": "20214:188:14",
            "body": {
              "id": 18646,
              "nodeType": "Block",
              "src": "20289:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c75696e743235362c6164647265737329",
                            "id": 18638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20339:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fa8185afaca325eb459625959e5610b99e97bbcba8d5834d7632610b4f237c79",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,address)\""
                            },
                            "value": "log(uint256,uint256,uint256,address)"
                          },
                          {
                            "id": 18639,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18626,
                            "src": "20379:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18640,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18628,
                            "src": "20383:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18641,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18630,
                            "src": "20387:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18642,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18632,
                            "src": "20391:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fa8185afaca325eb459625959e5610b99e97bbcba8d5834d7632610b4f237c79",
                              "typeString": "literal_string \"log(uint256,uint256,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18636,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20315:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20319:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20315:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18643,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20315:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18635,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "20299:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18644,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20299:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18645,
                  "nodeType": "ExpressionStatement",
                  "src": "20299:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20223:3:14",
            "parameters": {
              "id": 18633,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18626,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20235:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18647,
                  "src": "20227:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20227:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18628,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20247:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18647,
                  "src": "20239:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20239:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18630,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20259:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18647,
                  "src": "20251:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20251:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18632,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20271:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18647,
                  "src": "20263:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20263:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20226:48:14"
            },
            "returnParameters": {
              "id": 18634,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20289:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18670,
            "nodeType": "FunctionDefinition",
            "src": "20408:193:14",
            "body": {
              "id": 18669,
              "nodeType": "Block",
              "src": "20489:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c737472696e672c75696e7432353629",
                            "id": 18661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20539:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5da297eb5acf47b1a9c0089c080d654cc07f2a8c9aa94fc68af26a6405cde114",
                              "typeString": "literal_string \"log(uint256,uint256,string,uint256)\""
                            },
                            "value": "log(uint256,uint256,string,uint256)"
                          },
                          {
                            "id": 18662,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18649,
                            "src": "20578:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18663,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18651,
                            "src": "20582:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18664,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18653,
                            "src": "20586:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18665,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18655,
                            "src": "20590:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5da297eb5acf47b1a9c0089c080d654cc07f2a8c9aa94fc68af26a6405cde114",
                              "typeString": "literal_string \"log(uint256,uint256,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18659,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20515:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20519:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20515:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20515:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18658,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "20499:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20499:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18668,
                  "nodeType": "ExpressionStatement",
                  "src": "20499:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20417:3:14",
            "parameters": {
              "id": 18656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18649,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20429:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18670,
                  "src": "20421:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20421:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18651,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20441:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18670,
                  "src": "20433:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18650,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20433:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18653,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20459:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18670,
                  "src": "20445:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18652,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20445:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18655,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20471:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18670,
                  "src": "20463:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20463:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20420:54:14"
            },
            "returnParameters": {
              "id": 18657,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20489:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18693,
            "nodeType": "FunctionDefinition",
            "src": "20607:198:14",
            "body": {
              "id": 18692,
              "nodeType": "Block",
              "src": "20694:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c737472696e672c737472696e6729",
                            "id": 18684,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20744:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_27d8afd2525217fff7302dbf79acc81edc09cb300d94f2503a4fb8a8115910e0",
                              "typeString": "literal_string \"log(uint256,uint256,string,string)\""
                            },
                            "value": "log(uint256,uint256,string,string)"
                          },
                          {
                            "id": 18685,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18672,
                            "src": "20782:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18686,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18674,
                            "src": "20786:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18687,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18676,
                            "src": "20790:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18688,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18678,
                            "src": "20794:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_27d8afd2525217fff7302dbf79acc81edc09cb300d94f2503a4fb8a8115910e0",
                              "typeString": "literal_string \"log(uint256,uint256,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18682,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20720:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20724:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20720:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20720:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18681,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "20704:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20704:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18691,
                  "nodeType": "ExpressionStatement",
                  "src": "20704:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20616:3:14",
            "parameters": {
              "id": 18679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18672,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20628:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18693,
                  "src": "20620:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20620:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18674,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20640:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18693,
                  "src": "20632:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20632:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18676,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20658:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18693,
                  "src": "20644:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18675,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20644:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18678,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20676:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18693,
                  "src": "20662:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18677,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20662:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20619:60:14"
            },
            "returnParameters": {
              "id": 18680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20694:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18716,
            "nodeType": "FunctionDefinition",
            "src": "20811:187:14",
            "body": {
              "id": 18715,
              "nodeType": "Block",
              "src": "20889:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c737472696e672c626f6f6c29",
                            "id": 18707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20939:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7af6ab2578caf14043420c6b292dcb787d09d31b13365d7673f201f9b2e310c9",
                              "typeString": "literal_string \"log(uint256,uint256,string,bool)\""
                            },
                            "value": "log(uint256,uint256,string,bool)"
                          },
                          {
                            "id": 18708,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18695,
                            "src": "20975:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18709,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18697,
                            "src": "20979:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18710,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18699,
                            "src": "20983:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18711,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18701,
                            "src": "20987:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7af6ab2578caf14043420c6b292dcb787d09d31b13365d7673f201f9b2e310c9",
                              "typeString": "literal_string \"log(uint256,uint256,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18705,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20915:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20919:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20915:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20915:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18704,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "20899:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20899:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18714,
                  "nodeType": "ExpressionStatement",
                  "src": "20899:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20820:3:14",
            "parameters": {
              "id": 18702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18695,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20832:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18716,
                  "src": "20824:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18694,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20824:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18697,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20844:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18716,
                  "src": "20836:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20836:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18699,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20862:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18716,
                  "src": "20848:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18698,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20848:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18701,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20871:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18716,
                  "src": "20866:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18700,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20866:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20823:51:14"
            },
            "returnParameters": {
              "id": 18703,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20889:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18739,
            "nodeType": "FunctionDefinition",
            "src": "21004:193:14",
            "body": {
              "id": 18738,
              "nodeType": "Block",
              "src": "21085:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c737472696e672c6164647265737329",
                            "id": 18730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21135:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_42d21db701843c064ab7fb7cddd0cda130fcc29c7289dd90519dfea1322b1a53",
                              "typeString": "literal_string \"log(uint256,uint256,string,address)\""
                            },
                            "value": "log(uint256,uint256,string,address)"
                          },
                          {
                            "id": 18731,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18718,
                            "src": "21174:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18732,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18720,
                            "src": "21178:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18733,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18722,
                            "src": "21182:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18734,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18724,
                            "src": "21186:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_42d21db701843c064ab7fb7cddd0cda130fcc29c7289dd90519dfea1322b1a53",
                              "typeString": "literal_string \"log(uint256,uint256,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18728,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21111:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21115:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21111:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21111:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18727,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "21095:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21095:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18737,
                  "nodeType": "ExpressionStatement",
                  "src": "21095:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21013:3:14",
            "parameters": {
              "id": 18725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18718,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21025:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18739,
                  "src": "21017:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18717,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21017:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18720,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21037:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18739,
                  "src": "21029:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18719,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21029:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18722,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21055:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18739,
                  "src": "21041:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18721,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21041:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18724,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21067:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18739,
                  "src": "21059:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21059:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21016:54:14"
            },
            "returnParameters": {
              "id": 18726,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21085:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18762,
            "nodeType": "FunctionDefinition",
            "src": "21203:182:14",
            "body": {
              "id": 18761,
              "nodeType": "Block",
              "src": "21275:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c626f6f6c2c75696e7432353629",
                            "id": 18753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21325:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb7f6fd2c2005d3f08b2528135265cced621d1abf62716b05a9b62bc732577fd",
                              "typeString": "literal_string \"log(uint256,uint256,bool,uint256)\""
                            },
                            "value": "log(uint256,uint256,bool,uint256)"
                          },
                          {
                            "id": 18754,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18741,
                            "src": "21362:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18755,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18743,
                            "src": "21366:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18756,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18745,
                            "src": "21370:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18757,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18747,
                            "src": "21374:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb7f6fd2c2005d3f08b2528135265cced621d1abf62716b05a9b62bc732577fd",
                              "typeString": "literal_string \"log(uint256,uint256,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18751,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21301:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21305:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21301:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21301:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18750,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "21285:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21285:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18760,
                  "nodeType": "ExpressionStatement",
                  "src": "21285:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21212:3:14",
            "parameters": {
              "id": 18748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18741,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21224:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18762,
                  "src": "21216:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21216:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18743,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21236:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18762,
                  "src": "21228:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18742,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21228:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18745,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21245:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18762,
                  "src": "21240:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18744,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21240:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18747,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21257:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18762,
                  "src": "21249:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18746,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21249:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21215:45:14"
            },
            "returnParameters": {
              "id": 18749,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21275:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18785,
            "nodeType": "FunctionDefinition",
            "src": "21391:187:14",
            "body": {
              "id": 18784,
              "nodeType": "Block",
              "src": "21469:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c626f6f6c2c737472696e6729",
                            "id": 18776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21519:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a5b4fc99467445b3de47079da2d48b3031bb8d3adcbee781cbdca55596f1414a",
                              "typeString": "literal_string \"log(uint256,uint256,bool,string)\""
                            },
                            "value": "log(uint256,uint256,bool,string)"
                          },
                          {
                            "id": 18777,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18764,
                            "src": "21555:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18778,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18766,
                            "src": "21559:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18779,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18768,
                            "src": "21563:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18780,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18770,
                            "src": "21567:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a5b4fc99467445b3de47079da2d48b3031bb8d3adcbee781cbdca55596f1414a",
                              "typeString": "literal_string \"log(uint256,uint256,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18774,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21495:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21499:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21495:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21495:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18773,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "21479:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21479:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18783,
                  "nodeType": "ExpressionStatement",
                  "src": "21479:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21400:3:14",
            "parameters": {
              "id": 18771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18764,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21412:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18785,
                  "src": "21404:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21404:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18766,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21424:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18785,
                  "src": "21416:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21416:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18768,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21433:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18785,
                  "src": "21428:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18767,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21428:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18770,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21451:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18785,
                  "src": "21437:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18769,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21437:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21403:51:14"
            },
            "returnParameters": {
              "id": 18772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21469:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18808,
            "nodeType": "FunctionDefinition",
            "src": "21584:176:14",
            "body": {
              "id": 18807,
              "nodeType": "Block",
              "src": "21653:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c626f6f6c2c626f6f6c29",
                            "id": 18799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21703:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ab085ae680de5118cde80cb5e8cb1f7383786238f1394e82b7ab82553a0dd7fe",
                              "typeString": "literal_string \"log(uint256,uint256,bool,bool)\""
                            },
                            "value": "log(uint256,uint256,bool,bool)"
                          },
                          {
                            "id": 18800,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18787,
                            "src": "21737:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18801,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18789,
                            "src": "21741:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18802,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18791,
                            "src": "21745:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18803,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18793,
                            "src": "21749:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ab085ae680de5118cde80cb5e8cb1f7383786238f1394e82b7ab82553a0dd7fe",
                              "typeString": "literal_string \"log(uint256,uint256,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18797,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21679:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21683:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21679:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21679:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18796,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "21663:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21663:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18806,
                  "nodeType": "ExpressionStatement",
                  "src": "21663:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21593:3:14",
            "parameters": {
              "id": 18794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18787,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21605:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18808,
                  "src": "21597:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21597:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18789,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21617:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18808,
                  "src": "21609:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21609:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18791,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21626:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18808,
                  "src": "21621:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18790,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21621:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18793,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21635:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18808,
                  "src": "21630:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21630:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21596:42:14"
            },
            "returnParameters": {
              "id": 18795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21653:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18831,
            "nodeType": "FunctionDefinition",
            "src": "21766:182:14",
            "body": {
              "id": 18830,
              "nodeType": "Block",
              "src": "21838:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c626f6f6c2c6164647265737329",
                            "id": 18822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21888:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9a816a83f59c7e2fc96bb179b1fa8fd5307277d58bad9d6b835a280d4474fc1b",
                              "typeString": "literal_string \"log(uint256,uint256,bool,address)\""
                            },
                            "value": "log(uint256,uint256,bool,address)"
                          },
                          {
                            "id": 18823,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18810,
                            "src": "21925:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18824,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18812,
                            "src": "21929:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18825,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18814,
                            "src": "21933:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18826,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18816,
                            "src": "21937:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9a816a83f59c7e2fc96bb179b1fa8fd5307277d58bad9d6b835a280d4474fc1b",
                              "typeString": "literal_string \"log(uint256,uint256,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18820,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21864:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21868:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21864:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18827,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21864:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18819,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "21848:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21848:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18829,
                  "nodeType": "ExpressionStatement",
                  "src": "21848:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21775:3:14",
            "parameters": {
              "id": 18817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18810,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18831,
                  "src": "21779:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18809,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21779:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18812,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21799:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18831,
                  "src": "21791:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18811,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21791:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18814,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21808:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18831,
                  "src": "21803:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18813,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21803:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18816,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18831,
                  "src": "21812:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21812:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21778:45:14"
            },
            "returnParameters": {
              "id": 18818,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21838:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18854,
            "nodeType": "FunctionDefinition",
            "src": "21954:188:14",
            "body": {
              "id": 18853,
              "nodeType": "Block",
              "src": "22029:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c616464726573732c75696e7432353629",
                            "id": 18845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22079:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_88f6e4b2e9fd1797748b31e8b1564d27784c7a0b5de7a75df225524205baab36",
                              "typeString": "literal_string \"log(uint256,uint256,address,uint256)\""
                            },
                            "value": "log(uint256,uint256,address,uint256)"
                          },
                          {
                            "id": 18846,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18833,
                            "src": "22119:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18847,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18835,
                            "src": "22123:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18848,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18837,
                            "src": "22127:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18849,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18839,
                            "src": "22131:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_88f6e4b2e9fd1797748b31e8b1564d27784c7a0b5de7a75df225524205baab36",
                              "typeString": "literal_string \"log(uint256,uint256,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18843,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22055:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22059:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22055:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22055:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18842,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "22039:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22039:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18852,
                  "nodeType": "ExpressionStatement",
                  "src": "22039:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21963:3:14",
            "parameters": {
              "id": 18840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18833,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21975:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18854,
                  "src": "21967:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18832,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21967:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18835,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21987:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18854,
                  "src": "21979:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18834,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21979:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18837,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21999:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18854,
                  "src": "21991:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18836,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21991:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18839,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22011:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18854,
                  "src": "22003:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18838,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22003:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21966:48:14"
            },
            "returnParameters": {
              "id": 18841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22029:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18877,
            "nodeType": "FunctionDefinition",
            "src": "22148:193:14",
            "body": {
              "id": 18876,
              "nodeType": "Block",
              "src": "22229:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c616464726573732c737472696e6729",
                            "id": 18868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22279:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6cde40b8d4f88da65710732f1ce432c86447f486bf713e5763c0ab174df12f40",
                              "typeString": "literal_string \"log(uint256,uint256,address,string)\""
                            },
                            "value": "log(uint256,uint256,address,string)"
                          },
                          {
                            "id": 18869,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18856,
                            "src": "22318:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18870,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18858,
                            "src": "22322:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18871,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18860,
                            "src": "22326:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18872,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18862,
                            "src": "22330:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6cde40b8d4f88da65710732f1ce432c86447f486bf713e5763c0ab174df12f40",
                              "typeString": "literal_string \"log(uint256,uint256,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18866,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22255:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22259:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22255:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22255:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18865,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "22239:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22239:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18875,
                  "nodeType": "ExpressionStatement",
                  "src": "22239:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22157:3:14",
            "parameters": {
              "id": 18863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18856,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22169:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18877,
                  "src": "22161:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22161:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18858,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22181:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18877,
                  "src": "22173:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22173:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18860,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22193:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18877,
                  "src": "22185:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18859,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22185:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18862,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22211:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18877,
                  "src": "22197:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18861,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22197:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22160:54:14"
            },
            "returnParameters": {
              "id": 18864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22229:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18900,
            "nodeType": "FunctionDefinition",
            "src": "22347:182:14",
            "body": {
              "id": 18899,
              "nodeType": "Block",
              "src": "22419:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c616464726573732c626f6f6c29",
                            "id": 18891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22469:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_15cac47617578377cd39f9593e7bb3ffa0e284336b9741dcc2c4151a93e1b201",
                              "typeString": "literal_string \"log(uint256,uint256,address,bool)\""
                            },
                            "value": "log(uint256,uint256,address,bool)"
                          },
                          {
                            "id": 18892,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18879,
                            "src": "22506:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18893,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18881,
                            "src": "22510:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18894,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18883,
                            "src": "22514:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18895,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18885,
                            "src": "22518:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_15cac47617578377cd39f9593e7bb3ffa0e284336b9741dcc2c4151a93e1b201",
                              "typeString": "literal_string \"log(uint256,uint256,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18889,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22445:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22449:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22445:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18896,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22445:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18888,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "22429:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18897,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22429:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18898,
                  "nodeType": "ExpressionStatement",
                  "src": "22429:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22356:3:14",
            "parameters": {
              "id": 18886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18879,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22368:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18900,
                  "src": "22360:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22360:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18881,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22380:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18900,
                  "src": "22372:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22372:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18883,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22392:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18900,
                  "src": "22384:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18882,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22384:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18885,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22401:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18900,
                  "src": "22396:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18884,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22396:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22359:45:14"
            },
            "returnParameters": {
              "id": 18887,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22419:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18923,
            "nodeType": "FunctionDefinition",
            "src": "22535:188:14",
            "body": {
              "id": 18922,
              "nodeType": "Block",
              "src": "22610:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c75696e743235362c616464726573732c6164647265737329",
                            "id": 18914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22660:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_56a5d1b1d2f0613b93371fc2b5ec91f6c2ba1375e1e4ff59b5061b56ca88e88d",
                              "typeString": "literal_string \"log(uint256,uint256,address,address)\""
                            },
                            "value": "log(uint256,uint256,address,address)"
                          },
                          {
                            "id": 18915,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18902,
                            "src": "22700:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18916,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18904,
                            "src": "22704:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18917,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18906,
                            "src": "22708:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18918,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18908,
                            "src": "22712:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_56a5d1b1d2f0613b93371fc2b5ec91f6c2ba1375e1e4ff59b5061b56ca88e88d",
                              "typeString": "literal_string \"log(uint256,uint256,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18912,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22636:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22640:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22636:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22636:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18911,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "22620:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22620:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18921,
                  "nodeType": "ExpressionStatement",
                  "src": "22620:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22544:3:14",
            "parameters": {
              "id": 18909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18902,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22556:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18923,
                  "src": "22548:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18901,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22548:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18904,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22568:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18923,
                  "src": "22560:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18903,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22560:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18906,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22580:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18923,
                  "src": "22572:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18905,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22572:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18908,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22592:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18923,
                  "src": "22584:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22584:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22547:48:14"
            },
            "returnParameters": {
              "id": 18910,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22610:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18946,
            "nodeType": "FunctionDefinition",
            "src": "22729:193:14",
            "body": {
              "id": 18945,
              "nodeType": "Block",
              "src": "22810:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c75696e743235362c75696e7432353629",
                            "id": 18937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22860:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_82c25b74e3ddb6ea40e867e0a41af8848bdc6a88fd5e365497c46917573fd66f",
                              "typeString": "literal_string \"log(uint256,string,uint256,uint256)\""
                            },
                            "value": "log(uint256,string,uint256,uint256)"
                          },
                          {
                            "id": 18938,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18925,
                            "src": "22899:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18939,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18927,
                            "src": "22903:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18940,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18929,
                            "src": "22907:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18941,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18931,
                            "src": "22911:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_82c25b74e3ddb6ea40e867e0a41af8848bdc6a88fd5e365497c46917573fd66f",
                              "typeString": "literal_string \"log(uint256,string,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18935,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22836:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22840:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22836:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22836:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18934,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "22820:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22820:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18944,
                  "nodeType": "ExpressionStatement",
                  "src": "22820:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22738:3:14",
            "parameters": {
              "id": 18932,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18925,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22750:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18946,
                  "src": "22742:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22742:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18927,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22768:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18946,
                  "src": "22754:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18926,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22754:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18929,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22780:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18946,
                  "src": "22772:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18928,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22772:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18931,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22792:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18946,
                  "src": "22784:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18930,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22784:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22741:54:14"
            },
            "returnParameters": {
              "id": 18933,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22810:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18969,
            "nodeType": "FunctionDefinition",
            "src": "22928:198:14",
            "body": {
              "id": 18968,
              "nodeType": "Block",
              "src": "23015:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c75696e743235362c737472696e6729",
                            "id": 18960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23065:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b7b914cad3c94167dcd4b5ef970076918e96b3894a20503b7d3f9648bea8aace",
                              "typeString": "literal_string \"log(uint256,string,uint256,string)\""
                            },
                            "value": "log(uint256,string,uint256,string)"
                          },
                          {
                            "id": 18961,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18948,
                            "src": "23103:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18962,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18950,
                            "src": "23107:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18963,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18952,
                            "src": "23111:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18964,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18954,
                            "src": "23115:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b7b914cad3c94167dcd4b5ef970076918e96b3894a20503b7d3f9648bea8aace",
                              "typeString": "literal_string \"log(uint256,string,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18958,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23041:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23045:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23041:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23041:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18957,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "23025:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23025:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18967,
                  "nodeType": "ExpressionStatement",
                  "src": "23025:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22937:3:14",
            "parameters": {
              "id": 18955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18948,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22949:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18969,
                  "src": "22941:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18947,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22941:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18950,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22967:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18969,
                  "src": "22953:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18949,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22953:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18952,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22979:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18969,
                  "src": "22971:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22971:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18954,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22997:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18969,
                  "src": "22983:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18953,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22983:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22940:60:14"
            },
            "returnParameters": {
              "id": 18956,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23015:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18992,
            "nodeType": "FunctionDefinition",
            "src": "23132:187:14",
            "body": {
              "id": 18991,
              "nodeType": "Block",
              "src": "23210:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c75696e743235362c626f6f6c29",
                            "id": 18983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23260:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_691a8f74cbf1a313fd1bdfd5dda19feaf4f9deac56f7ca7c4fa6386e5382a03c",
                              "typeString": "literal_string \"log(uint256,string,uint256,bool)\""
                            },
                            "value": "log(uint256,string,uint256,bool)"
                          },
                          {
                            "id": 18984,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18971,
                            "src": "23296:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18985,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18973,
                            "src": "23300:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18986,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18975,
                            "src": "23304:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18987,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18977,
                            "src": "23308:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_691a8f74cbf1a313fd1bdfd5dda19feaf4f9deac56f7ca7c4fa6386e5382a03c",
                              "typeString": "literal_string \"log(uint256,string,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18981,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23236:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23240:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23236:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23236:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18980,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "23220:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23220:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18990,
                  "nodeType": "ExpressionStatement",
                  "src": "23220:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23141:3:14",
            "parameters": {
              "id": 18978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18971,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23153:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "23145:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23145:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18973,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23171:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "23157:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18972,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23157:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18975,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23183:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "23175:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18974,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23175:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18977,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23192:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "23187:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18976,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23187:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23144:51:14"
            },
            "returnParameters": {
              "id": 18979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23210:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19015,
            "nodeType": "FunctionDefinition",
            "src": "23325:193:14",
            "body": {
              "id": 19014,
              "nodeType": "Block",
              "src": "23406:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c75696e743235362c6164647265737329",
                            "id": 19006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23456:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3b2279b4b3c26cbcd4374acce75e4c447a59a65883d849a72eaa051b3a07ec08",
                              "typeString": "literal_string \"log(uint256,string,uint256,address)\""
                            },
                            "value": "log(uint256,string,uint256,address)"
                          },
                          {
                            "id": 19007,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18994,
                            "src": "23495:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19008,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18996,
                            "src": "23499:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19009,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18998,
                            "src": "23503:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19010,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19000,
                            "src": "23507:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3b2279b4b3c26cbcd4374acce75e4c447a59a65883d849a72eaa051b3a07ec08",
                              "typeString": "literal_string \"log(uint256,string,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19004,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23432:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23436:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23432:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23432:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19003,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "23416:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23416:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19013,
                  "nodeType": "ExpressionStatement",
                  "src": "23416:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23334:3:14",
            "parameters": {
              "id": 19001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18994,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23346:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19015,
                  "src": "23338:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18993,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23338:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18996,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23364:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19015,
                  "src": "23350:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18995,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23350:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18998,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23376:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19015,
                  "src": "23368:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18997,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23368:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19000,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23388:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19015,
                  "src": "23380:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18999,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23380:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23337:54:14"
            },
            "returnParameters": {
              "id": 19002,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23406:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19038,
            "nodeType": "FunctionDefinition",
            "src": "23524:198:14",
            "body": {
              "id": 19037,
              "nodeType": "Block",
              "src": "23611:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c737472696e672c75696e7432353629",
                            "id": 19029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23661:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b028c9bd0105e32bab3e2b1b4678f4cd49b1f267c4fcb1899043ad16b67c3dd1",
                              "typeString": "literal_string \"log(uint256,string,string,uint256)\""
                            },
                            "value": "log(uint256,string,string,uint256)"
                          },
                          {
                            "id": 19030,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19017,
                            "src": "23699:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19031,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19019,
                            "src": "23703:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19032,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19021,
                            "src": "23707:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19033,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19023,
                            "src": "23711:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b028c9bd0105e32bab3e2b1b4678f4cd49b1f267c4fcb1899043ad16b67c3dd1",
                              "typeString": "literal_string \"log(uint256,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19027,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23637:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23641:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23637:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23637:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19026,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "23621:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23621:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19036,
                  "nodeType": "ExpressionStatement",
                  "src": "23621:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23533:3:14",
            "parameters": {
              "id": 19024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19017,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23545:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19038,
                  "src": "23537:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19016,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23537:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19019,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23563:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19038,
                  "src": "23549:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23549:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19021,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23581:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19038,
                  "src": "23567:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19020,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23567:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19023,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23593:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19038,
                  "src": "23585:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23585:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23536:60:14"
            },
            "returnParameters": {
              "id": 19025,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23611:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19061,
            "nodeType": "FunctionDefinition",
            "src": "23728:203:14",
            "body": {
              "id": 19060,
              "nodeType": "Block",
              "src": "23821:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c737472696e672c737472696e6729",
                            "id": 19052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23871:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_21ad06836085541851abea445814b5a1baf9d3be52c1169a6570c83010dbea5a",
                              "typeString": "literal_string \"log(uint256,string,string,string)\""
                            },
                            "value": "log(uint256,string,string,string)"
                          },
                          {
                            "id": 19053,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19040,
                            "src": "23908:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19054,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19042,
                            "src": "23912:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19055,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19044,
                            "src": "23916:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19056,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19046,
                            "src": "23920:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_21ad06836085541851abea445814b5a1baf9d3be52c1169a6570c83010dbea5a",
                              "typeString": "literal_string \"log(uint256,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19050,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23847:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23851:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23847:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23847:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19049,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "23831:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23831:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19059,
                  "nodeType": "ExpressionStatement",
                  "src": "23831:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23737:3:14",
            "parameters": {
              "id": 19047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19040,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23749:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19061,
                  "src": "23741:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23741:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19042,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23767:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19061,
                  "src": "23753:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19041,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23753:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19044,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23785:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19061,
                  "src": "23771:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19043,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23771:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19046,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23803:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19061,
                  "src": "23789:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19045,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23789:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23740:66:14"
            },
            "returnParameters": {
              "id": 19048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23821:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19084,
            "nodeType": "FunctionDefinition",
            "src": "23937:192:14",
            "body": {
              "id": 19083,
              "nodeType": "Block",
              "src": "24021:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c737472696e672c626f6f6c29",
                            "id": 19075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24071:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b3a6b6bdf3265665181b9a9ab1338c75ebc293704c96a9a669654a5ba9f6d3e9",
                              "typeString": "literal_string \"log(uint256,string,string,bool)\""
                            },
                            "value": "log(uint256,string,string,bool)"
                          },
                          {
                            "id": 19076,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19063,
                            "src": "24106:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19077,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19065,
                            "src": "24110:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19078,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19067,
                            "src": "24114:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19079,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19069,
                            "src": "24118:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b3a6b6bdf3265665181b9a9ab1338c75ebc293704c96a9a669654a5ba9f6d3e9",
                              "typeString": "literal_string \"log(uint256,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19073,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24047:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24051:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24047:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19080,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24047:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19072,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "24031:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24031:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19082,
                  "nodeType": "ExpressionStatement",
                  "src": "24031:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23946:3:14",
            "parameters": {
              "id": 19070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19063,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23958:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19084,
                  "src": "23950:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23950:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19065,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23976:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19084,
                  "src": "23962:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19064,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23962:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19067,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23994:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19084,
                  "src": "23980:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19066,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23980:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19069,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24003:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19084,
                  "src": "23998:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19068,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23998:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23949:57:14"
            },
            "returnParameters": {
              "id": 19071,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24021:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19107,
            "nodeType": "FunctionDefinition",
            "src": "24135:198:14",
            "body": {
              "id": 19106,
              "nodeType": "Block",
              "src": "24222:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c737472696e672c6164647265737329",
                            "id": 19098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24272:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d583c60265ad086fe6216ef9aea37bf5de1e77bdf9055c734c55781d5f4b81d7",
                              "typeString": "literal_string \"log(uint256,string,string,address)\""
                            },
                            "value": "log(uint256,string,string,address)"
                          },
                          {
                            "id": 19099,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19086,
                            "src": "24310:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19100,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19088,
                            "src": "24314:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19101,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19090,
                            "src": "24318:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19102,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19092,
                            "src": "24322:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d583c60265ad086fe6216ef9aea37bf5de1e77bdf9055c734c55781d5f4b81d7",
                              "typeString": "literal_string \"log(uint256,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19096,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24248:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24252:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24248:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24248:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19095,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "24232:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24232:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19105,
                  "nodeType": "ExpressionStatement",
                  "src": "24232:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24144:3:14",
            "parameters": {
              "id": 19093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19086,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24156:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19107,
                  "src": "24148:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19085,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24148:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19088,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24174:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19107,
                  "src": "24160:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19087,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24160:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19090,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24192:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19107,
                  "src": "24178:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19089,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24178:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19092,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24204:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19107,
                  "src": "24196:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24196:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24147:60:14"
            },
            "returnParameters": {
              "id": 19094,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24222:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19130,
            "nodeType": "FunctionDefinition",
            "src": "24339:187:14",
            "body": {
              "id": 19129,
              "nodeType": "Block",
              "src": "24417:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c626f6f6c2c75696e7432353629",
                            "id": 19121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24467:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf00988004d982e10d8d4fa7f603a1414e3b2b91cdfcf6f72808ca6c3100f96a",
                              "typeString": "literal_string \"log(uint256,string,bool,uint256)\""
                            },
                            "value": "log(uint256,string,bool,uint256)"
                          },
                          {
                            "id": 19122,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19109,
                            "src": "24503:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19123,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19111,
                            "src": "24507:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19124,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19113,
                            "src": "24511:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19125,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19115,
                            "src": "24515:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf00988004d982e10d8d4fa7f603a1414e3b2b91cdfcf6f72808ca6c3100f96a",
                              "typeString": "literal_string \"log(uint256,string,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19119,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24443:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24447:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24443:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24443:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19118,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "24427:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24427:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19128,
                  "nodeType": "ExpressionStatement",
                  "src": "24427:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24348:3:14",
            "parameters": {
              "id": 19116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19109,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24360:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "24352:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19108,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24352:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19111,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24378:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "24364:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19110,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24364:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19113,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24387:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "24382:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19112,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24382:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19115,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24399:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "24391:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24391:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24351:51:14"
            },
            "returnParameters": {
              "id": 19117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24417:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19153,
            "nodeType": "FunctionDefinition",
            "src": "24532:192:14",
            "body": {
              "id": 19152,
              "nodeType": "Block",
              "src": "24616:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c626f6f6c2c737472696e6729",
                            "id": 19144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24666:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d2d423cdca0e3ae7a0a1a283a67d891c85787b75e0c5291c02d15317d67fe45c",
                              "typeString": "literal_string \"log(uint256,string,bool,string)\""
                            },
                            "value": "log(uint256,string,bool,string)"
                          },
                          {
                            "id": 19145,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19132,
                            "src": "24701:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19146,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19134,
                            "src": "24705:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19147,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19136,
                            "src": "24709:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19148,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19138,
                            "src": "24713:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d2d423cdca0e3ae7a0a1a283a67d891c85787b75e0c5291c02d15317d67fe45c",
                              "typeString": "literal_string \"log(uint256,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19142,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24642:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24646:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24642:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24642:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19141,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "24626:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24626:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19151,
                  "nodeType": "ExpressionStatement",
                  "src": "24626:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24541:3:14",
            "parameters": {
              "id": 19139,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19132,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24553:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19153,
                  "src": "24545:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24545:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19134,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24571:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19153,
                  "src": "24557:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19133,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24557:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19136,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24580:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19153,
                  "src": "24575:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19135,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24575:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19138,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24598:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19153,
                  "src": "24584:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19137,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24584:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24544:57:14"
            },
            "returnParameters": {
              "id": 19140,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24616:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19176,
            "nodeType": "FunctionDefinition",
            "src": "24730:181:14",
            "body": {
              "id": 19175,
              "nodeType": "Block",
              "src": "24805:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 19167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24855:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ba535d9cec0fb8bbd83e61b83d0f575d149cba6778a192239c1bdc5170053e4f",
                              "typeString": "literal_string \"log(uint256,string,bool,bool)\""
                            },
                            "value": "log(uint256,string,bool,bool)"
                          },
                          {
                            "id": 19168,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19155,
                            "src": "24888:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19169,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "24892:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19170,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19159,
                            "src": "24896:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19171,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19161,
                            "src": "24900:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ba535d9cec0fb8bbd83e61b83d0f575d149cba6778a192239c1bdc5170053e4f",
                              "typeString": "literal_string \"log(uint256,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19165,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24831:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24835:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24831:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24831:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19164,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "24815:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24815:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19174,
                  "nodeType": "ExpressionStatement",
                  "src": "24815:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24739:3:14",
            "parameters": {
              "id": 19162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19155,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24751:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19176,
                  "src": "24743:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19154,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24743:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19157,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24769:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19176,
                  "src": "24755:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19156,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24755:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19159,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24778:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19176,
                  "src": "24773:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19158,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24773:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19161,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19176,
                  "src": "24782:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19160,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24782:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24742:48:14"
            },
            "returnParameters": {
              "id": 19163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24805:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19199,
            "nodeType": "FunctionDefinition",
            "src": "24917:187:14",
            "body": {
              "id": 19198,
              "nodeType": "Block",
              "src": "24995:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c626f6f6c2c6164647265737329",
                            "id": 19190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25045:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ae2ec581fba979c4f79aae94f13936ff6bb7e283817b2ec0602d9daa028a1550",
                              "typeString": "literal_string \"log(uint256,string,bool,address)\""
                            },
                            "value": "log(uint256,string,bool,address)"
                          },
                          {
                            "id": 19191,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19178,
                            "src": "25081:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19192,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19180,
                            "src": "25085:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19193,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19182,
                            "src": "25089:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19194,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19184,
                            "src": "25093:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ae2ec581fba979c4f79aae94f13936ff6bb7e283817b2ec0602d9daa028a1550",
                              "typeString": "literal_string \"log(uint256,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19188,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25021:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25025:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25021:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25021:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19187,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25005:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25005:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19197,
                  "nodeType": "ExpressionStatement",
                  "src": "25005:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24926:3:14",
            "parameters": {
              "id": 19185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19178,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24938:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "24930:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19177,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24930:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19180,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24956:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "24942:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19179,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24942:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19182,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24965:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "24960:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19181,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24960:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19184,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24977:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "24969:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19183,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24969:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24929:51:14"
            },
            "returnParameters": {
              "id": 19186,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24995:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19222,
            "nodeType": "FunctionDefinition",
            "src": "25110:193:14",
            "body": {
              "id": 19221,
              "nodeType": "Block",
              "src": "25191:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c616464726573732c75696e7432353629",
                            "id": 19213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25241:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e8d3018d32ee5012095e63c81679b366f06035e83d43be351e9c327886860908",
                              "typeString": "literal_string \"log(uint256,string,address,uint256)\""
                            },
                            "value": "log(uint256,string,address,uint256)"
                          },
                          {
                            "id": 19214,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19201,
                            "src": "25280:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19215,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19203,
                            "src": "25284:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19216,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19205,
                            "src": "25288:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19217,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19207,
                            "src": "25292:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e8d3018d32ee5012095e63c81679b366f06035e83d43be351e9c327886860908",
                              "typeString": "literal_string \"log(uint256,string,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19211,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25217:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25221:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25217:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25217:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19210,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25201:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25201:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19220,
                  "nodeType": "ExpressionStatement",
                  "src": "25201:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25119:3:14",
            "parameters": {
              "id": 19208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19201,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25131:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19222,
                  "src": "25123:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19200,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25123:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19203,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25149:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19222,
                  "src": "25135:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19202,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25135:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19205,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25161:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19222,
                  "src": "25153:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19204,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25153:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19207,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25173:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19222,
                  "src": "25165:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19206,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25165:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25122:54:14"
            },
            "returnParameters": {
              "id": 19209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25191:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19245,
            "nodeType": "FunctionDefinition",
            "src": "25309:198:14",
            "body": {
              "id": 19244,
              "nodeType": "Block",
              "src": "25396:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c616464726573732c737472696e6729",
                            "id": 19236,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25446:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9c3adfa1394c3989d93ade538d03d04b05867057c1dd54721ae2c85f9a1a4720",
                              "typeString": "literal_string \"log(uint256,string,address,string)\""
                            },
                            "value": "log(uint256,string,address,string)"
                          },
                          {
                            "id": 19237,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19224,
                            "src": "25484:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19238,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19226,
                            "src": "25488:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19239,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19228,
                            "src": "25492:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19240,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19230,
                            "src": "25496:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9c3adfa1394c3989d93ade538d03d04b05867057c1dd54721ae2c85f9a1a4720",
                              "typeString": "literal_string \"log(uint256,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19234,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25422:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25426:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25422:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25422:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19233,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25406:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25406:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19243,
                  "nodeType": "ExpressionStatement",
                  "src": "25406:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25318:3:14",
            "parameters": {
              "id": 19231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19224,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25330:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19245,
                  "src": "25322:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19223,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25322:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19226,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25348:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19245,
                  "src": "25334:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19225,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25334:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19228,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25360:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19245,
                  "src": "25352:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25352:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19230,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25378:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19245,
                  "src": "25364:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19229,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25364:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25321:60:14"
            },
            "returnParameters": {
              "id": 19232,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25396:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19268,
            "nodeType": "FunctionDefinition",
            "src": "25513:187:14",
            "body": {
              "id": 19267,
              "nodeType": "Block",
              "src": "25591:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c616464726573732c626f6f6c29",
                            "id": 19259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25641:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_90c30a564e5b352d6dfee73888402a5685ca327aad7827d5040904440ee085c5",
                              "typeString": "literal_string \"log(uint256,string,address,bool)\""
                            },
                            "value": "log(uint256,string,address,bool)"
                          },
                          {
                            "id": 19260,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19247,
                            "src": "25677:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19261,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19249,
                            "src": "25681:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19262,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19251,
                            "src": "25685:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19263,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19253,
                            "src": "25689:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_90c30a564e5b352d6dfee73888402a5685ca327aad7827d5040904440ee085c5",
                              "typeString": "literal_string \"log(uint256,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19257,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25617:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25621:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25617:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25617:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19256,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25601:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25601:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19266,
                  "nodeType": "ExpressionStatement",
                  "src": "25601:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25522:3:14",
            "parameters": {
              "id": 19254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19247,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25534:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19268,
                  "src": "25526:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19246,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25526:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19249,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25552:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19268,
                  "src": "25538:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19248,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25538:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19251,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25564:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19268,
                  "src": "25556:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19250,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25556:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19253,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25573:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19268,
                  "src": "25568:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19252,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25568:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25525:51:14"
            },
            "returnParameters": {
              "id": 19255,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25591:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19291,
            "nodeType": "FunctionDefinition",
            "src": "25706:193:14",
            "body": {
              "id": 19290,
              "nodeType": "Block",
              "src": "25787:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c737472696e672c616464726573732c6164647265737329",
                            "id": 19282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25837:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6168ed618844a2c75dc49207e69cdff562cd2faf2e74aa5192211a023611c6bd",
                              "typeString": "literal_string \"log(uint256,string,address,address)\""
                            },
                            "value": "log(uint256,string,address,address)"
                          },
                          {
                            "id": 19283,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19270,
                            "src": "25876:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19284,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19272,
                            "src": "25880:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19285,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19274,
                            "src": "25884:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19286,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19276,
                            "src": "25888:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6168ed618844a2c75dc49207e69cdff562cd2faf2e74aa5192211a023611c6bd",
                              "typeString": "literal_string \"log(uint256,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19280,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25813:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25817:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25813:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25813:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19279,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25797:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25797:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19289,
                  "nodeType": "ExpressionStatement",
                  "src": "25797:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25715:3:14",
            "parameters": {
              "id": 19277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19270,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25727:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19291,
                  "src": "25719:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19269,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25719:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19272,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25745:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19291,
                  "src": "25731:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19271,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25731:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19274,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25757:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19291,
                  "src": "25749:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19273,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25749:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19276,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25769:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19291,
                  "src": "25761:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25761:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25718:54:14"
            },
            "returnParameters": {
              "id": 19278,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25787:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19314,
            "nodeType": "FunctionDefinition",
            "src": "25905:182:14",
            "body": {
              "id": 19313,
              "nodeType": "Block",
              "src": "25977:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c75696e743235362c75696e7432353629",
                            "id": 19305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26027:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c6acc7a8396e6de9a5a1476aecf2cbff57758b174747b0371b7f3994e930b8b4",
                              "typeString": "literal_string \"log(uint256,bool,uint256,uint256)\""
                            },
                            "value": "log(uint256,bool,uint256,uint256)"
                          },
                          {
                            "id": 19306,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19293,
                            "src": "26064:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19307,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19295,
                            "src": "26068:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19308,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19297,
                            "src": "26072:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19309,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19299,
                            "src": "26076:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c6acc7a8396e6de9a5a1476aecf2cbff57758b174747b0371b7f3994e930b8b4",
                              "typeString": "literal_string \"log(uint256,bool,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19303,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26003:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26007:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26003:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26003:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19302,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "25987:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25987:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19312,
                  "nodeType": "ExpressionStatement",
                  "src": "25987:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25914:3:14",
            "parameters": {
              "id": 19300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19293,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25926:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19314,
                  "src": "25918:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19292,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25918:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19295,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25935:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19314,
                  "src": "25930:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19294,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25930:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19297,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25947:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19314,
                  "src": "25939:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25939:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19299,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25959:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19314,
                  "src": "25951:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19298,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "25951:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25917:45:14"
            },
            "returnParameters": {
              "id": 19301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25977:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19337,
            "nodeType": "FunctionDefinition",
            "src": "26093:187:14",
            "body": {
              "id": 19336,
              "nodeType": "Block",
              "src": "26171:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c75696e743235362c737472696e6729",
                            "id": 19328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26221:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de03e77403acbacf9b1b18c1115984c9fba2c45e2eec9f12c266ada3f62a0d1b",
                              "typeString": "literal_string \"log(uint256,bool,uint256,string)\""
                            },
                            "value": "log(uint256,bool,uint256,string)"
                          },
                          {
                            "id": 19329,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19316,
                            "src": "26257:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19330,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19318,
                            "src": "26261:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19331,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19320,
                            "src": "26265:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19332,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19322,
                            "src": "26269:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_de03e77403acbacf9b1b18c1115984c9fba2c45e2eec9f12c266ada3f62a0d1b",
                              "typeString": "literal_string \"log(uint256,bool,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19326,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26197:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26201:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26197:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26197:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19325,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "26181:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26181:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19335,
                  "nodeType": "ExpressionStatement",
                  "src": "26181:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26102:3:14",
            "parameters": {
              "id": 19323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19316,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26114:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19337,
                  "src": "26106:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19315,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26106:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19318,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26123:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19337,
                  "src": "26118:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26118:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19320,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26135:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19337,
                  "src": "26127:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19319,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26127:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19322,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26153:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19337,
                  "src": "26139:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19321,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26139:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26105:51:14"
            },
            "returnParameters": {
              "id": 19324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26171:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19360,
            "nodeType": "FunctionDefinition",
            "src": "26286:176:14",
            "body": {
              "id": 19359,
              "nodeType": "Block",
              "src": "26355:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c75696e743235362c626f6f6c29",
                            "id": 19351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26405:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_91a02e2ac8ae09683fa28beba3fd130b88054c89e51901b8e0510c8e25aa37d1",
                              "typeString": "literal_string \"log(uint256,bool,uint256,bool)\""
                            },
                            "value": "log(uint256,bool,uint256,bool)"
                          },
                          {
                            "id": 19352,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19339,
                            "src": "26439:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19353,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19341,
                            "src": "26443:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19354,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19343,
                            "src": "26447:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19355,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19345,
                            "src": "26451:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_91a02e2ac8ae09683fa28beba3fd130b88054c89e51901b8e0510c8e25aa37d1",
                              "typeString": "literal_string \"log(uint256,bool,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19349,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26381:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26385:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26381:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26381:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19348,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "26365:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26365:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19358,
                  "nodeType": "ExpressionStatement",
                  "src": "26365:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26295:3:14",
            "parameters": {
              "id": 19346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19339,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26307:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19360,
                  "src": "26299:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19338,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26299:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19341,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26316:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19360,
                  "src": "26311:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19340,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26311:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19343,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26328:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19360,
                  "src": "26320:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19342,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26320:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19345,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26337:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19360,
                  "src": "26332:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19344,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26332:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26298:42:14"
            },
            "returnParameters": {
              "id": 19347,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26355:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19383,
            "nodeType": "FunctionDefinition",
            "src": "26468:182:14",
            "body": {
              "id": 19382,
              "nodeType": "Block",
              "src": "26540:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c75696e743235362c6164647265737329",
                            "id": 19374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26590:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_88cb6041693b97a5282ad65a65484c065fbc3d3a4dac698c427f5b30bb33b29b",
                              "typeString": "literal_string \"log(uint256,bool,uint256,address)\""
                            },
                            "value": "log(uint256,bool,uint256,address)"
                          },
                          {
                            "id": 19375,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19362,
                            "src": "26627:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19376,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19364,
                            "src": "26631:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19377,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19366,
                            "src": "26635:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19378,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19368,
                            "src": "26639:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_88cb6041693b97a5282ad65a65484c065fbc3d3a4dac698c427f5b30bb33b29b",
                              "typeString": "literal_string \"log(uint256,bool,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19372,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26566:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26570:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26566:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26566:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19371,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "26550:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26550:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19381,
                  "nodeType": "ExpressionStatement",
                  "src": "26550:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26477:3:14",
            "parameters": {
              "id": 19369,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19362,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26489:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19383,
                  "src": "26481:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26481:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19364,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26498:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19383,
                  "src": "26493:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19363,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26493:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19366,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26510:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19383,
                  "src": "26502:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26502:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19368,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26522:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19383,
                  "src": "26514:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26514:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26480:45:14"
            },
            "returnParameters": {
              "id": 19370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26540:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19406,
            "nodeType": "FunctionDefinition",
            "src": "26656:187:14",
            "body": {
              "id": 19405,
              "nodeType": "Block",
              "src": "26734:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c737472696e672c75696e7432353629",
                            "id": 19397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26784:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c1d07463509a567bf9962980ac948a2ea7c76a53c189a607b7b35b14e806be8",
                              "typeString": "literal_string \"log(uint256,bool,string,uint256)\""
                            },
                            "value": "log(uint256,bool,string,uint256)"
                          },
                          {
                            "id": 19398,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19385,
                            "src": "26820:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19399,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19387,
                            "src": "26824:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19400,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19389,
                            "src": "26828:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19401,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19391,
                            "src": "26832:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c1d07463509a567bf9962980ac948a2ea7c76a53c189a607b7b35b14e806be8",
                              "typeString": "literal_string \"log(uint256,bool,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19395,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26760:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26764:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26760:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26760:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19394,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "26744:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26744:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19404,
                  "nodeType": "ExpressionStatement",
                  "src": "26744:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26665:3:14",
            "parameters": {
              "id": 19392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19385,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26677:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19406,
                  "src": "26669:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19384,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26669:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19387,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26686:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19406,
                  "src": "26681:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19386,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26681:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19389,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26704:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19406,
                  "src": "26690:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19388,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26690:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19391,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26716:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19406,
                  "src": "26708:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19390,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26708:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26668:51:14"
            },
            "returnParameters": {
              "id": 19393,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26734:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19429,
            "nodeType": "FunctionDefinition",
            "src": "26849:192:14",
            "body": {
              "id": 19428,
              "nodeType": "Block",
              "src": "26933:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c737472696e672c737472696e6729",
                            "id": 19420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26983:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_68c8b8bd8cd0cfd8add7c6745840520db0bd1049365ac415de6367b3b79b5ddd",
                              "typeString": "literal_string \"log(uint256,bool,string,string)\""
                            },
                            "value": "log(uint256,bool,string,string)"
                          },
                          {
                            "id": 19421,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19408,
                            "src": "27018:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19422,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19410,
                            "src": "27022:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19423,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19412,
                            "src": "27026:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19424,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19414,
                            "src": "27030:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_68c8b8bd8cd0cfd8add7c6745840520db0bd1049365ac415de6367b3b79b5ddd",
                              "typeString": "literal_string \"log(uint256,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19418,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26959:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26963:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26959:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26959:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19417,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "26943:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19426,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26943:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19427,
                  "nodeType": "ExpressionStatement",
                  "src": "26943:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26858:3:14",
            "parameters": {
              "id": 19415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19408,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26870:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19429,
                  "src": "26862:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19407,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "26862:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19410,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19429,
                  "src": "26874:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19409,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26874:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19412,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26897:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19429,
                  "src": "26883:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19411,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26883:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19414,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26915:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19429,
                  "src": "26901:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19413,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26901:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26861:57:14"
            },
            "returnParameters": {
              "id": 19416,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26933:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19452,
            "nodeType": "FunctionDefinition",
            "src": "27047:181:14",
            "body": {
              "id": 19451,
              "nodeType": "Block",
              "src": "27122:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 19443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27172:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb928d7f2c458ba40d8ba853c60153b2f73ca9189d4be051103bc8a6c10d45ad",
                              "typeString": "literal_string \"log(uint256,bool,string,bool)\""
                            },
                            "value": "log(uint256,bool,string,bool)"
                          },
                          {
                            "id": 19444,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19431,
                            "src": "27205:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19445,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19433,
                            "src": "27209:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19446,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19435,
                            "src": "27213:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19447,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19437,
                            "src": "27217:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb928d7f2c458ba40d8ba853c60153b2f73ca9189d4be051103bc8a6c10d45ad",
                              "typeString": "literal_string \"log(uint256,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19441,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27148:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27152:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27148:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27148:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19440,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "27132:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27132:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19450,
                  "nodeType": "ExpressionStatement",
                  "src": "27132:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27056:3:14",
            "parameters": {
              "id": 19438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19431,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27068:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19452,
                  "src": "27060:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19430,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27060:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19433,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27077:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19452,
                  "src": "27072:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19432,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27072:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19435,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27095:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19452,
                  "src": "27081:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19434,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27081:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19437,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27104:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19452,
                  "src": "27099:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19436,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27099:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27059:48:14"
            },
            "returnParameters": {
              "id": 19439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27122:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19475,
            "nodeType": "FunctionDefinition",
            "src": "27234:187:14",
            "body": {
              "id": 19474,
              "nodeType": "Block",
              "src": "27312:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c737472696e672c6164647265737329",
                            "id": 19466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27362:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ef529018e81552426f837435fb92b39b88965df2736546faff28c9f06e5f58b5",
                              "typeString": "literal_string \"log(uint256,bool,string,address)\""
                            },
                            "value": "log(uint256,bool,string,address)"
                          },
                          {
                            "id": 19467,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19454,
                            "src": "27398:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19468,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19456,
                            "src": "27402:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19469,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19458,
                            "src": "27406:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19470,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19460,
                            "src": "27410:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ef529018e81552426f837435fb92b39b88965df2736546faff28c9f06e5f58b5",
                              "typeString": "literal_string \"log(uint256,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19464,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27338:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27342:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27338:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27338:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19463,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "27322:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19472,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27322:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19473,
                  "nodeType": "ExpressionStatement",
                  "src": "27322:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27243:3:14",
            "parameters": {
              "id": 19461,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19454,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27255:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19475,
                  "src": "27247:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19453,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27247:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19456,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27264:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19475,
                  "src": "27259:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19455,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27259:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19458,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27282:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19475,
                  "src": "27268:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19457,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27268:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19460,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27294:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19475,
                  "src": "27286:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27286:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27246:51:14"
            },
            "returnParameters": {
              "id": 19462,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27312:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19498,
            "nodeType": "FunctionDefinition",
            "src": "27427:176:14",
            "body": {
              "id": 19497,
              "nodeType": "Block",
              "src": "27496:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c626f6f6c2c75696e7432353629",
                            "id": 19489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27546:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7464ce2380e6490f75dd524dd03612157b27bca22ecbf1bc2f0ca22ac41015d1",
                              "typeString": "literal_string \"log(uint256,bool,bool,uint256)\""
                            },
                            "value": "log(uint256,bool,bool,uint256)"
                          },
                          {
                            "id": 19490,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19477,
                            "src": "27580:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19491,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19479,
                            "src": "27584:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19492,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19481,
                            "src": "27588:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19493,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19483,
                            "src": "27592:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7464ce2380e6490f75dd524dd03612157b27bca22ecbf1bc2f0ca22ac41015d1",
                              "typeString": "literal_string \"log(uint256,bool,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19487,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27522:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27526:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27522:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27522:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19486,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "27506:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27506:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19496,
                  "nodeType": "ExpressionStatement",
                  "src": "27506:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27436:3:14",
            "parameters": {
              "id": 19484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19477,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27448:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19498,
                  "src": "27440:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27440:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19479,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27457:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19498,
                  "src": "27452:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19478,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27452:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19481,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27466:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19498,
                  "src": "27461:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19480,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27461:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19483,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27478:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19498,
                  "src": "27470:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19482,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27470:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27439:42:14"
            },
            "returnParameters": {
              "id": 19485,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27496:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19521,
            "nodeType": "FunctionDefinition",
            "src": "27609:181:14",
            "body": {
              "id": 19520,
              "nodeType": "Block",
              "src": "27684:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 19512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27734:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dddb956172e374c580dd136b5b8151c6400d22ece6b561a1010b6b9e902dd439",
                              "typeString": "literal_string \"log(uint256,bool,bool,string)\""
                            },
                            "value": "log(uint256,bool,bool,string)"
                          },
                          {
                            "id": 19513,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19500,
                            "src": "27767:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19514,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19502,
                            "src": "27771:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19515,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19504,
                            "src": "27775:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19516,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19506,
                            "src": "27779:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dddb956172e374c580dd136b5b8151c6400d22ece6b561a1010b6b9e902dd439",
                              "typeString": "literal_string \"log(uint256,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19510,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27710:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27714:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27710:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27710:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19509,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "27694:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27694:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19519,
                  "nodeType": "ExpressionStatement",
                  "src": "27694:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27618:3:14",
            "parameters": {
              "id": 19507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19500,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27630:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19521,
                  "src": "27622:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27622:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19502,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27639:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19521,
                  "src": "27634:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19501,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27634:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19504,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27648:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19521,
                  "src": "27643:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19503,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27643:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19506,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27666:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19521,
                  "src": "27652:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27652:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27621:48:14"
            },
            "returnParameters": {
              "id": 19508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27684:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19544,
            "nodeType": "FunctionDefinition",
            "src": "27796:170:14",
            "body": {
              "id": 19543,
              "nodeType": "Block",
              "src": "27862:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 19535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27912:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b6f577a1520f8fa7d40eaff9dcd5f293e28b7606bd07d0a450b13db93da80473",
                              "typeString": "literal_string \"log(uint256,bool,bool,bool)\""
                            },
                            "value": "log(uint256,bool,bool,bool)"
                          },
                          {
                            "id": 19536,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19523,
                            "src": "27943:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19537,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19525,
                            "src": "27947:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19538,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19527,
                            "src": "27951:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19539,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19529,
                            "src": "27955:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b6f577a1520f8fa7d40eaff9dcd5f293e28b7606bd07d0a450b13db93da80473",
                              "typeString": "literal_string \"log(uint256,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19533,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27888:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27892:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27888:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27888:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19532,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "27872:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27872:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19542,
                  "nodeType": "ExpressionStatement",
                  "src": "27872:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27805:3:14",
            "parameters": {
              "id": 19530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19523,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27817:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19544,
                  "src": "27809:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27809:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19525,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27826:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19544,
                  "src": "27821:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19524,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27821:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19527,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27835:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19544,
                  "src": "27830:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19526,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27830:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19529,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27844:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19544,
                  "src": "27839:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19528,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27839:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27808:39:14"
            },
            "returnParameters": {
              "id": 19531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27862:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19567,
            "nodeType": "FunctionDefinition",
            "src": "27972:176:14",
            "body": {
              "id": 19566,
              "nodeType": "Block",
              "src": "28041:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 19558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28091:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_69640b598ea5b9e4e68e932871cb8a509ce832c6718a902773532568b8c95c31",
                              "typeString": "literal_string \"log(uint256,bool,bool,address)\""
                            },
                            "value": "log(uint256,bool,bool,address)"
                          },
                          {
                            "id": 19559,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19546,
                            "src": "28125:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19560,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19548,
                            "src": "28129:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19561,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19550,
                            "src": "28133:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19562,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19552,
                            "src": "28137:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_69640b598ea5b9e4e68e932871cb8a509ce832c6718a902773532568b8c95c31",
                              "typeString": "literal_string \"log(uint256,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19556,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28067:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28071:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28067:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28067:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19555,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28051:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28051:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19565,
                  "nodeType": "ExpressionStatement",
                  "src": "28051:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27981:3:14",
            "parameters": {
              "id": 19553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19546,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27993:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19567,
                  "src": "27985:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "27985:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19548,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28002:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19567,
                  "src": "27997:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19547,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27997:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19550,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28011:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19567,
                  "src": "28006:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19549,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28006:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19552,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28023:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19567,
                  "src": "28015:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28015:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27984:42:14"
            },
            "returnParameters": {
              "id": 19554,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28041:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19590,
            "nodeType": "FunctionDefinition",
            "src": "28154:182:14",
            "body": {
              "id": 19589,
              "nodeType": "Block",
              "src": "28226:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c616464726573732c75696e7432353629",
                            "id": 19581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28276:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_078287f5d654caee11cca90bb8c074a9529509cd07319dc17a93fa036ea5ea88",
                              "typeString": "literal_string \"log(uint256,bool,address,uint256)\""
                            },
                            "value": "log(uint256,bool,address,uint256)"
                          },
                          {
                            "id": 19582,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19569,
                            "src": "28313:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19583,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19571,
                            "src": "28317:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19584,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19573,
                            "src": "28321:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19585,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19575,
                            "src": "28325:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_078287f5d654caee11cca90bb8c074a9529509cd07319dc17a93fa036ea5ea88",
                              "typeString": "literal_string \"log(uint256,bool,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19579,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28252:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28256:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28252:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28252:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19578,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28236:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28236:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19588,
                  "nodeType": "ExpressionStatement",
                  "src": "28236:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28163:3:14",
            "parameters": {
              "id": 19576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19569,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28175:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19590,
                  "src": "28167:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19568,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28167:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19571,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28184:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19590,
                  "src": "28179:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19570,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28179:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19573,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28196:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19590,
                  "src": "28188:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19572,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28188:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19575,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28208:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19590,
                  "src": "28200:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19574,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28200:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28166:45:14"
            },
            "returnParameters": {
              "id": 19577,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28226:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19613,
            "nodeType": "FunctionDefinition",
            "src": "28342:187:14",
            "body": {
              "id": 19612,
              "nodeType": "Block",
              "src": "28420:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c616464726573732c737472696e6729",
                            "id": 19604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28470:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ade052c70a8f7736e3d4ca12bfb5de52ba51cd4551a71eb41200e5ca9b193461",
                              "typeString": "literal_string \"log(uint256,bool,address,string)\""
                            },
                            "value": "log(uint256,bool,address,string)"
                          },
                          {
                            "id": 19605,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19592,
                            "src": "28506:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19606,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19594,
                            "src": "28510:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19607,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19596,
                            "src": "28514:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19608,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19598,
                            "src": "28518:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ade052c70a8f7736e3d4ca12bfb5de52ba51cd4551a71eb41200e5ca9b193461",
                              "typeString": "literal_string \"log(uint256,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19602,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28446:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28450:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28446:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28446:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19601,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28430:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28430:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19611,
                  "nodeType": "ExpressionStatement",
                  "src": "28430:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28351:3:14",
            "parameters": {
              "id": 19599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19592,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28363:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19613,
                  "src": "28355:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28355:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19594,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28372:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19613,
                  "src": "28367:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19593,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28367:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19596,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28384:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19613,
                  "src": "28376:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19595,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28376:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19598,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28402:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19613,
                  "src": "28388:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19597,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28388:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28354:51:14"
            },
            "returnParameters": {
              "id": 19600,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28420:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19636,
            "nodeType": "FunctionDefinition",
            "src": "28535:176:14",
            "body": {
              "id": 19635,
              "nodeType": "Block",
              "src": "28604:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 19627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28654:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_454d54a5a1119d55883b5fbee0d6f19af54017eb1650d2284224aac472880f6a",
                              "typeString": "literal_string \"log(uint256,bool,address,bool)\""
                            },
                            "value": "log(uint256,bool,address,bool)"
                          },
                          {
                            "id": 19628,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19615,
                            "src": "28688:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19629,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19617,
                            "src": "28692:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19630,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19619,
                            "src": "28696:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19631,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19621,
                            "src": "28700:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_454d54a5a1119d55883b5fbee0d6f19af54017eb1650d2284224aac472880f6a",
                              "typeString": "literal_string \"log(uint256,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19625,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28630:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28634:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28630:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28630:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19624,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28614:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28614:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19634,
                  "nodeType": "ExpressionStatement",
                  "src": "28614:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28544:3:14",
            "parameters": {
              "id": 19622,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19615,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28556:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19636,
                  "src": "28548:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28548:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19617,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28565:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19636,
                  "src": "28560:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19616,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28560:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19619,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28577:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19636,
                  "src": "28569:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19618,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28569:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19621,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28586:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19636,
                  "src": "28581:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19620,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28581:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28547:42:14"
            },
            "returnParameters": {
              "id": 19623,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28604:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19659,
            "nodeType": "FunctionDefinition",
            "src": "28717:182:14",
            "body": {
              "id": 19658,
              "nodeType": "Block",
              "src": "28789:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c626f6f6c2c616464726573732c6164647265737329",
                            "id": 19650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28839:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1ef4cbbfd0316a849f14b661567c9c341a49bccb745dfb6a3d9b82c389ac190",
                              "typeString": "literal_string \"log(uint256,bool,address,address)\""
                            },
                            "value": "log(uint256,bool,address,address)"
                          },
                          {
                            "id": 19651,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19638,
                            "src": "28876:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19652,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19640,
                            "src": "28880:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19653,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19642,
                            "src": "28884:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19654,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19644,
                            "src": "28888:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a1ef4cbbfd0316a849f14b661567c9c341a49bccb745dfb6a3d9b82c389ac190",
                              "typeString": "literal_string \"log(uint256,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19648,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28815:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28819:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28815:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28815:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19647,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28799:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28799:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19657,
                  "nodeType": "ExpressionStatement",
                  "src": "28799:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28726:3:14",
            "parameters": {
              "id": 19645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19638,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28738:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19659,
                  "src": "28730:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19637,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28730:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19640,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28747:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19659,
                  "src": "28742:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19639,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28742:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19642,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28759:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19659,
                  "src": "28751:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28751:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19644,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28771:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19659,
                  "src": "28763:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19643,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28763:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28729:45:14"
            },
            "returnParameters": {
              "id": 19646,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28789:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19682,
            "nodeType": "FunctionDefinition",
            "src": "28905:188:14",
            "body": {
              "id": 19681,
              "nodeType": "Block",
              "src": "28980:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c75696e743235362c75696e7432353629",
                            "id": 19673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29030:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0c9cd9c12a2e17a9af800ac7e9a2b379066135ecb5b197bdb13381ac61cbc59a",
                              "typeString": "literal_string \"log(uint256,address,uint256,uint256)\""
                            },
                            "value": "log(uint256,address,uint256,uint256)"
                          },
                          {
                            "id": 19674,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19661,
                            "src": "29070:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19675,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19663,
                            "src": "29074:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19676,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19665,
                            "src": "29078:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19677,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19667,
                            "src": "29082:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0c9cd9c12a2e17a9af800ac7e9a2b379066135ecb5b197bdb13381ac61cbc59a",
                              "typeString": "literal_string \"log(uint256,address,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19671,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29006:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29010:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29006:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19678,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29006:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19670,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "28990:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28990:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19680,
                  "nodeType": "ExpressionStatement",
                  "src": "28990:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28914:3:14",
            "parameters": {
              "id": 19668,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19661,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28926:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19682,
                  "src": "28918:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28918:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19663,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28938:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19682,
                  "src": "28930:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28930:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19665,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28950:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19682,
                  "src": "28942:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28942:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19667,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28962:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19682,
                  "src": "28954:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "28954:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28917:48:14"
            },
            "returnParameters": {
              "id": 19669,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28980:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19705,
            "nodeType": "FunctionDefinition",
            "src": "29099:193:14",
            "body": {
              "id": 19704,
              "nodeType": "Block",
              "src": "29180:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c75696e743235362c737472696e6729",
                            "id": 19696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29230:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ddb06521f885b932f9898b05830c564a50fea82133f47ad308278affbd84d0bd",
                              "typeString": "literal_string \"log(uint256,address,uint256,string)\""
                            },
                            "value": "log(uint256,address,uint256,string)"
                          },
                          {
                            "id": 19697,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19684,
                            "src": "29269:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19698,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19686,
                            "src": "29273:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19699,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19688,
                            "src": "29277:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19700,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19690,
                            "src": "29281:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ddb06521f885b932f9898b05830c564a50fea82133f47ad308278affbd84d0bd",
                              "typeString": "literal_string \"log(uint256,address,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19694,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29206:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29210:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29206:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29206:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19693,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "29190:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29190:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19703,
                  "nodeType": "ExpressionStatement",
                  "src": "29190:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29108:3:14",
            "parameters": {
              "id": 19691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19684,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29120:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19705,
                  "src": "29112:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19683,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29112:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19686,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29132:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19705,
                  "src": "29124:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29124:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19688,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29144:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19705,
                  "src": "29136:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29136:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19690,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29162:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19705,
                  "src": "29148:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19689,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29148:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29111:54:14"
            },
            "returnParameters": {
              "id": 19692,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29180:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19728,
            "nodeType": "FunctionDefinition",
            "src": "29298:182:14",
            "body": {
              "id": 19727,
              "nodeType": "Block",
              "src": "29370:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c75696e743235362c626f6f6c29",
                            "id": 19719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29420:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f743a7c155871069fb5e6df4e57e25e572bb3015b18294cc69630b2e0ae2e5f",
                              "typeString": "literal_string \"log(uint256,address,uint256,bool)\""
                            },
                            "value": "log(uint256,address,uint256,bool)"
                          },
                          {
                            "id": 19720,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19707,
                            "src": "29457:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19721,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19709,
                            "src": "29461:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19722,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19711,
                            "src": "29465:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19723,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19713,
                            "src": "29469:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f743a7c155871069fb5e6df4e57e25e572bb3015b18294cc69630b2e0ae2e5f",
                              "typeString": "literal_string \"log(uint256,address,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19717,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29396:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29400:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29396:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29396:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19716,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "29380:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29380:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19726,
                  "nodeType": "ExpressionStatement",
                  "src": "29380:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29307:3:14",
            "parameters": {
              "id": 19714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19707,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29319:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19728,
                  "src": "29311:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19706,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29311:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19709,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29331:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19728,
                  "src": "29323:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19708,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29323:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19711,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29343:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19728,
                  "src": "29335:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19710,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29335:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19713,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29352:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19728,
                  "src": "29347:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19712,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29347:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29310:45:14"
            },
            "returnParameters": {
              "id": 19715,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29370:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19751,
            "nodeType": "FunctionDefinition",
            "src": "29486:188:14",
            "body": {
              "id": 19750,
              "nodeType": "Block",
              "src": "29561:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c75696e743235362c6164647265737329",
                            "id": 19742,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29611:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_15c127b50404cc1f9627d5115fd42bf400df548658b1002bf25e12f94854b379",
                              "typeString": "literal_string \"log(uint256,address,uint256,address)\""
                            },
                            "value": "log(uint256,address,uint256,address)"
                          },
                          {
                            "id": 19743,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19730,
                            "src": "29651:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19744,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19732,
                            "src": "29655:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19745,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19734,
                            "src": "29659:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19746,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19736,
                            "src": "29663:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_15c127b50404cc1f9627d5115fd42bf400df548658b1002bf25e12f94854b379",
                              "typeString": "literal_string \"log(uint256,address,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19740,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29587:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29591:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29587:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29587:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19739,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "29571:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29571:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19749,
                  "nodeType": "ExpressionStatement",
                  "src": "29571:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29495:3:14",
            "parameters": {
              "id": 19737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19730,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29507:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19751,
                  "src": "29499:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29499:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19732,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29519:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19751,
                  "src": "29511:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29511:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19734,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29531:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19751,
                  "src": "29523:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29523:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19736,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29543:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19751,
                  "src": "29535:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29535:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29498:48:14"
            },
            "returnParameters": {
              "id": 19738,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29561:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19774,
            "nodeType": "FunctionDefinition",
            "src": "29680:193:14",
            "body": {
              "id": 19773,
              "nodeType": "Block",
              "src": "29761:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c737472696e672c75696e7432353629",
                            "id": 19765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29811:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_46826b5dec5e8aeff4504f2c138d4e9c8aadb89d9034725f3050269a35303ba0",
                              "typeString": "literal_string \"log(uint256,address,string,uint256)\""
                            },
                            "value": "log(uint256,address,string,uint256)"
                          },
                          {
                            "id": 19766,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19753,
                            "src": "29850:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19767,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19755,
                            "src": "29854:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19768,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19757,
                            "src": "29858:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19769,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19759,
                            "src": "29862:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_46826b5dec5e8aeff4504f2c138d4e9c8aadb89d9034725f3050269a35303ba0",
                              "typeString": "literal_string \"log(uint256,address,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19763,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29787:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29791:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29787:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29787:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19762,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "29771:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29771:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19772,
                  "nodeType": "ExpressionStatement",
                  "src": "29771:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29689:3:14",
            "parameters": {
              "id": 19760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19753,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29701:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19774,
                  "src": "29693:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19752,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29693:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19755,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29713:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19774,
                  "src": "29705:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19754,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29705:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19757,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29731:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19774,
                  "src": "29717:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19756,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29717:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19759,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29743:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19774,
                  "src": "29735:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19758,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29735:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29692:54:14"
            },
            "returnParameters": {
              "id": 19761,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29761:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19797,
            "nodeType": "FunctionDefinition",
            "src": "29879:198:14",
            "body": {
              "id": 19796,
              "nodeType": "Block",
              "src": "29966:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c737472696e672c737472696e6729",
                            "id": 19788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30016:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e128ca3cc785552dc4e62d3c73af79fb5f114dc6f0c0eb2bc0e3bdbbd4a1d3b",
                              "typeString": "literal_string \"log(uint256,address,string,string)\""
                            },
                            "value": "log(uint256,address,string,string)"
                          },
                          {
                            "id": 19789,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19776,
                            "src": "30054:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19790,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19778,
                            "src": "30058:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19791,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19780,
                            "src": "30062:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19792,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19782,
                            "src": "30066:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3e128ca3cc785552dc4e62d3c73af79fb5f114dc6f0c0eb2bc0e3bdbbd4a1d3b",
                              "typeString": "literal_string \"log(uint256,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19786,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29992:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29996:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29992:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29992:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19785,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "29976:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29976:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19795,
                  "nodeType": "ExpressionStatement",
                  "src": "29976:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29888:3:14",
            "parameters": {
              "id": 19783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19776,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29900:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19797,
                  "src": "29892:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29892:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19778,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29912:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19797,
                  "src": "29904:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19777,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29904:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19780,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29930:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19797,
                  "src": "29916:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19779,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29916:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19782,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29948:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19797,
                  "src": "29934:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19781,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29934:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29891:60:14"
            },
            "returnParameters": {
              "id": 19784,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29966:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19820,
            "nodeType": "FunctionDefinition",
            "src": "30083:187:14",
            "body": {
              "id": 19819,
              "nodeType": "Block",
              "src": "30161:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c737472696e672c626f6f6c29",
                            "id": 19811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30211:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cc32ab07df108ae88df1c6b9771e60e5cd39cbe0f0e92481af8633000db2c64b",
                              "typeString": "literal_string \"log(uint256,address,string,bool)\""
                            },
                            "value": "log(uint256,address,string,bool)"
                          },
                          {
                            "id": 19812,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19799,
                            "src": "30247:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19813,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19801,
                            "src": "30251:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19814,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19803,
                            "src": "30255:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19815,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19805,
                            "src": "30259:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cc32ab07df108ae88df1c6b9771e60e5cd39cbe0f0e92481af8633000db2c64b",
                              "typeString": "literal_string \"log(uint256,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19809,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30187:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30191:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30187:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30187:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19808,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "30171:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30171:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19818,
                  "nodeType": "ExpressionStatement",
                  "src": "30171:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30092:3:14",
            "parameters": {
              "id": 19806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19799,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30104:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19820,
                  "src": "30096:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30096:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19801,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30116:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19820,
                  "src": "30108:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30108:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19803,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30134:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19820,
                  "src": "30120:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19802,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30120:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19805,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30143:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19820,
                  "src": "30138:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19804,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30138:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30095:51:14"
            },
            "returnParameters": {
              "id": 19807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30161:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19843,
            "nodeType": "FunctionDefinition",
            "src": "30276:193:14",
            "body": {
              "id": 19842,
              "nodeType": "Block",
              "src": "30357:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c737472696e672c6164647265737329",
                            "id": 19834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30407:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9cba8fffa4a3e6f47d307a71f619bf1719d0a75680c6c916d7776ea0341039b9",
                              "typeString": "literal_string \"log(uint256,address,string,address)\""
                            },
                            "value": "log(uint256,address,string,address)"
                          },
                          {
                            "id": 19835,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19822,
                            "src": "30446:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19836,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19824,
                            "src": "30450:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19837,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19826,
                            "src": "30454:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19838,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19828,
                            "src": "30458:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9cba8fffa4a3e6f47d307a71f619bf1719d0a75680c6c916d7776ea0341039b9",
                              "typeString": "literal_string \"log(uint256,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19832,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30383:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30387:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30383:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30383:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19831,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "30367:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30367:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19841,
                  "nodeType": "ExpressionStatement",
                  "src": "30367:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30285:3:14",
            "parameters": {
              "id": 19829,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19822,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30297:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19843,
                  "src": "30289:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30289:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19824,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30309:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19843,
                  "src": "30301:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30301:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19826,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30327:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19843,
                  "src": "30313:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19825,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30313:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19828,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30339:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19843,
                  "src": "30331:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19827,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30331:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30288:54:14"
            },
            "returnParameters": {
              "id": 19830,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30357:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19866,
            "nodeType": "FunctionDefinition",
            "src": "30475:182:14",
            "body": {
              "id": 19865,
              "nodeType": "Block",
              "src": "30547:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c626f6f6c2c75696e7432353629",
                            "id": 19857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30597:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5abd992a7a64be8afc8745d44215dd5b4a31f8b03abd4cb03ff6565b7f51c1b1",
                              "typeString": "literal_string \"log(uint256,address,bool,uint256)\""
                            },
                            "value": "log(uint256,address,bool,uint256)"
                          },
                          {
                            "id": 19858,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19845,
                            "src": "30634:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19859,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19847,
                            "src": "30638:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19860,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19849,
                            "src": "30642:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19861,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19851,
                            "src": "30646:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5abd992a7a64be8afc8745d44215dd5b4a31f8b03abd4cb03ff6565b7f51c1b1",
                              "typeString": "literal_string \"log(uint256,address,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19855,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30573:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30577:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30573:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30573:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19854,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "30557:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30557:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19864,
                  "nodeType": "ExpressionStatement",
                  "src": "30557:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30484:3:14",
            "parameters": {
              "id": 19852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19845,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30496:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19866,
                  "src": "30488:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19844,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30488:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19847,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30508:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19866,
                  "src": "30500:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30500:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19849,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30517:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19866,
                  "src": "30512:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19848,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30512:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19851,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30529:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19866,
                  "src": "30521:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19850,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30521:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30487:45:14"
            },
            "returnParameters": {
              "id": 19853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30547:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19889,
            "nodeType": "FunctionDefinition",
            "src": "30663:187:14",
            "body": {
              "id": 19888,
              "nodeType": "Block",
              "src": "30741:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c626f6f6c2c737472696e6729",
                            "id": 19880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30791:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_90fb06aa0f94ddb9149d9a0d0271a9fd2b331af93ebc6a4aece22e4f82154c7d",
                              "typeString": "literal_string \"log(uint256,address,bool,string)\""
                            },
                            "value": "log(uint256,address,bool,string)"
                          },
                          {
                            "id": 19881,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19868,
                            "src": "30827:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19882,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19870,
                            "src": "30831:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19883,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19872,
                            "src": "30835:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19884,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19874,
                            "src": "30839:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_90fb06aa0f94ddb9149d9a0d0271a9fd2b331af93ebc6a4aece22e4f82154c7d",
                              "typeString": "literal_string \"log(uint256,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19878,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30767:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30771:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30767:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30767:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19877,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "30751:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30751:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19887,
                  "nodeType": "ExpressionStatement",
                  "src": "30751:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30672:3:14",
            "parameters": {
              "id": 19875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19868,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30684:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19889,
                  "src": "30676:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19867,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30676:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19870,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30696:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19889,
                  "src": "30688:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19869,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30688:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19872,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30705:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19889,
                  "src": "30700:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19871,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30700:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19874,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30723:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19889,
                  "src": "30709:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19873,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30709:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30675:51:14"
            },
            "returnParameters": {
              "id": 19876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30741:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19912,
            "nodeType": "FunctionDefinition",
            "src": "30856:176:14",
            "body": {
              "id": 19911,
              "nodeType": "Block",
              "src": "30925:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 19903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30975:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e351140f919f09731a4793c7bb4d5f07234902f499ced9e1e3c9639d2685c6f1",
                              "typeString": "literal_string \"log(uint256,address,bool,bool)\""
                            },
                            "value": "log(uint256,address,bool,bool)"
                          },
                          {
                            "id": 19904,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19891,
                            "src": "31009:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19905,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19893,
                            "src": "31013:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19906,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19895,
                            "src": "31017:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19907,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19897,
                            "src": "31021:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e351140f919f09731a4793c7bb4d5f07234902f499ced9e1e3c9639d2685c6f1",
                              "typeString": "literal_string \"log(uint256,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19901,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30951:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30955:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30951:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19908,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30951:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19900,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "30935:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30935:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19910,
                  "nodeType": "ExpressionStatement",
                  "src": "30935:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30865:3:14",
            "parameters": {
              "id": 19898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19891,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30877:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19912,
                  "src": "30869:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "30869:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19893,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30889:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19912,
                  "src": "30881:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30881:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19895,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30898:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19912,
                  "src": "30893:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19894,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30893:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19897,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30907:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19912,
                  "src": "30902:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19896,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30902:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30868:42:14"
            },
            "returnParameters": {
              "id": 19899,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30925:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19935,
            "nodeType": "FunctionDefinition",
            "src": "31038:182:14",
            "body": {
              "id": 19934,
              "nodeType": "Block",
              "src": "31110:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c626f6f6c2c6164647265737329",
                            "id": 19926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31160:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ef72c5130890d3b81e89bdbf9a039a84547328dd01c955d6bb1088aaf2252d05",
                              "typeString": "literal_string \"log(uint256,address,bool,address)\""
                            },
                            "value": "log(uint256,address,bool,address)"
                          },
                          {
                            "id": 19927,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19914,
                            "src": "31197:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19928,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19916,
                            "src": "31201:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19929,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19918,
                            "src": "31205:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19930,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19920,
                            "src": "31209:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ef72c5130890d3b81e89bdbf9a039a84547328dd01c955d6bb1088aaf2252d05",
                              "typeString": "literal_string \"log(uint256,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19924,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31136:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31140:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31136:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31136:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19923,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "31120:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31120:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19933,
                  "nodeType": "ExpressionStatement",
                  "src": "31120:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31047:3:14",
            "parameters": {
              "id": 19921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19914,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31059:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19935,
                  "src": "31051:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19913,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31051:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19916,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31071:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19935,
                  "src": "31063:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19915,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31063:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19918,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31080:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19935,
                  "src": "31075:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19917,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "31075:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19920,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31092:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19935,
                  "src": "31084:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19919,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31084:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31050:45:14"
            },
            "returnParameters": {
              "id": 19922,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31110:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19958,
            "nodeType": "FunctionDefinition",
            "src": "31226:188:14",
            "body": {
              "id": 19957,
              "nodeType": "Block",
              "src": "31301:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c616464726573732c75696e7432353629",
                            "id": 19949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31351:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_736efbb692cd4ba0c879f89673f1c5a7eb58e7bd2b833c4d30d41d3aa9c7a23a",
                              "typeString": "literal_string \"log(uint256,address,address,uint256)\""
                            },
                            "value": "log(uint256,address,address,uint256)"
                          },
                          {
                            "id": 19950,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19937,
                            "src": "31391:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19951,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19939,
                            "src": "31395:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19952,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19941,
                            "src": "31399:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19953,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19943,
                            "src": "31403:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_736efbb692cd4ba0c879f89673f1c5a7eb58e7bd2b833c4d30d41d3aa9c7a23a",
                              "typeString": "literal_string \"log(uint256,address,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19947,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31327:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31331:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31327:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31327:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19946,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "31311:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31311:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19956,
                  "nodeType": "ExpressionStatement",
                  "src": "31311:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31235:3:14",
            "parameters": {
              "id": 19944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19937,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31247:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19958,
                  "src": "31239:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19936,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31239:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19939,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31259:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19958,
                  "src": "31251:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31251:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19941,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31271:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19958,
                  "src": "31263:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31263:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19943,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31283:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19958,
                  "src": "31275:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31275:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31238:48:14"
            },
            "returnParameters": {
              "id": 19945,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31301:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19981,
            "nodeType": "FunctionDefinition",
            "src": "31420:193:14",
            "body": {
              "id": 19980,
              "nodeType": "Block",
              "src": "31501:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c616464726573732c737472696e6729",
                            "id": 19972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31551:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_031c6f73458c2a0d841ad5d5914dceb24973d9df898a3826eec79330397cd882",
                              "typeString": "literal_string \"log(uint256,address,address,string)\""
                            },
                            "value": "log(uint256,address,address,string)"
                          },
                          {
                            "id": 19973,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19960,
                            "src": "31590:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19974,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19962,
                            "src": "31594:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19975,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19964,
                            "src": "31598:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19976,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19966,
                            "src": "31602:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_031c6f73458c2a0d841ad5d5914dceb24973d9df898a3826eec79330397cd882",
                              "typeString": "literal_string \"log(uint256,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19970,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31527:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31531:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31527:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31527:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19969,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "31511:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31511:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19979,
                  "nodeType": "ExpressionStatement",
                  "src": "31511:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31429:3:14",
            "parameters": {
              "id": 19967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19960,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31441:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19981,
                  "src": "31433:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19959,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31433:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19962,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31453:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19981,
                  "src": "31445:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31445:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19964,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31465:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19981,
                  "src": "31457:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19963,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31457:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19966,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31483:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 19981,
                  "src": "31469:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19965,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31469:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31432:54:14"
            },
            "returnParameters": {
              "id": 19968,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31501:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20004,
            "nodeType": "FunctionDefinition",
            "src": "31619:182:14",
            "body": {
              "id": 20003,
              "nodeType": "Block",
              "src": "31691:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c616464726573732c626f6f6c29",
                            "id": 19995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31741:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_091ffaf5e3365a794bfeb97b8157886a9ba00c981ee88d8a8fdb0cc96a5e6c1d",
                              "typeString": "literal_string \"log(uint256,address,address,bool)\""
                            },
                            "value": "log(uint256,address,address,bool)"
                          },
                          {
                            "id": 19996,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19983,
                            "src": "31778:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19997,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19985,
                            "src": "31782:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19998,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19987,
                            "src": "31786:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19999,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19989,
                            "src": "31790:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_091ffaf5e3365a794bfeb97b8157886a9ba00c981ee88d8a8fdb0cc96a5e6c1d",
                              "typeString": "literal_string \"log(uint256,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19993,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31717:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31721:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31717:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31717:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19992,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "31701:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31701:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20002,
                  "nodeType": "ExpressionStatement",
                  "src": "31701:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31628:3:14",
            "parameters": {
              "id": 19990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19983,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31640:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20004,
                  "src": "31632:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31632:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19985,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31652:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20004,
                  "src": "31644:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31644:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19987,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31664:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20004,
                  "src": "31656:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19986,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31656:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19989,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31673:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20004,
                  "src": "31668:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "31668:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31631:45:14"
            },
            "returnParameters": {
              "id": 19991,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31691:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20027,
            "nodeType": "FunctionDefinition",
            "src": "31807:188:14",
            "body": {
              "id": 20026,
              "nodeType": "Block",
              "src": "31882:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e743235362c616464726573732c616464726573732c6164647265737329",
                            "id": 20018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31932:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2488b414330cbd4ddab2b849dacd8bed50b19b82318ec6e4a5ccdf72ee519553",
                              "typeString": "literal_string \"log(uint256,address,address,address)\""
                            },
                            "value": "log(uint256,address,address,address)"
                          },
                          {
                            "id": 20019,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20006,
                            "src": "31972:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20020,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20008,
                            "src": "31976:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20021,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20010,
                            "src": "31980:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20022,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20012,
                            "src": "31984:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2488b414330cbd4ddab2b849dacd8bed50b19b82318ec6e4a5ccdf72ee519553",
                              "typeString": "literal_string \"log(uint256,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20016,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31908:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31912:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31908:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31908:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20015,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "31892:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31892:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20025,
                  "nodeType": "ExpressionStatement",
                  "src": "31892:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31816:3:14",
            "parameters": {
              "id": 20013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20006,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31828:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20027,
                  "src": "31820:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31820:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20008,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31840:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20027,
                  "src": "31832:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31832:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20010,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31852:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20027,
                  "src": "31844:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20009,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31844:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20012,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31864:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20027,
                  "src": "31856:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20011,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31856:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31819:48:14"
            },
            "returnParameters": {
              "id": 20014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31882:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20050,
            "nodeType": "FunctionDefinition",
            "src": "32001:193:14",
            "body": {
              "id": 20049,
              "nodeType": "Block",
              "src": "32082:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c75696e743235362c75696e7432353629",
                            "id": 20041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32132:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a7a8785394d9aadf7945b4e3d27726dea716dc88e3f64cc80b3aa9abbd2751c5",
                              "typeString": "literal_string \"log(string,uint256,uint256,uint256)\""
                            },
                            "value": "log(string,uint256,uint256,uint256)"
                          },
                          {
                            "id": 20042,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20029,
                            "src": "32171:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20043,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20031,
                            "src": "32175:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20044,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20033,
                            "src": "32179:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20045,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20035,
                            "src": "32183:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a7a8785394d9aadf7945b4e3d27726dea716dc88e3f64cc80b3aa9abbd2751c5",
                              "typeString": "literal_string \"log(string,uint256,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20039,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32108:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32112:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32108:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32108:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20038,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "32092:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32092:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20048,
                  "nodeType": "ExpressionStatement",
                  "src": "32092:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32010:3:14",
            "parameters": {
              "id": 20036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20029,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32028:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20050,
                  "src": "32014:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20028,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32014:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20031,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32040:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20050,
                  "src": "32032:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20030,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32032:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20033,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32052:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20050,
                  "src": "32044:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20032,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32044:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20035,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32064:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20050,
                  "src": "32056:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20034,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32056:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32013:54:14"
            },
            "returnParameters": {
              "id": 20037,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32082:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20073,
            "nodeType": "FunctionDefinition",
            "src": "32200:198:14",
            "body": {
              "id": 20072,
              "nodeType": "Block",
              "src": "32287:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c75696e743235362c737472696e6729",
                            "id": 20064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32337:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_854b34964800cd321ba295da547026c9cfe69753667a81487e80d237f63c927f",
                              "typeString": "literal_string \"log(string,uint256,uint256,string)\""
                            },
                            "value": "log(string,uint256,uint256,string)"
                          },
                          {
                            "id": 20065,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20052,
                            "src": "32375:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20066,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20054,
                            "src": "32379:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20067,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20056,
                            "src": "32383:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20068,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20058,
                            "src": "32387:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_854b34964800cd321ba295da547026c9cfe69753667a81487e80d237f63c927f",
                              "typeString": "literal_string \"log(string,uint256,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20062,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32313:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32317:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32313:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32313:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20061,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "32297:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32297:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20071,
                  "nodeType": "ExpressionStatement",
                  "src": "32297:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32209:3:14",
            "parameters": {
              "id": 20059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20052,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32227:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20073,
                  "src": "32213:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20051,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32213:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20054,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32239:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20073,
                  "src": "32231:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20053,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32231:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20056,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32251:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20073,
                  "src": "32243:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32243:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20058,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32269:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20073,
                  "src": "32255:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20057,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32255:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32212:60:14"
            },
            "returnParameters": {
              "id": 20060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32287:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20096,
            "nodeType": "FunctionDefinition",
            "src": "32404:187:14",
            "body": {
              "id": 20095,
              "nodeType": "Block",
              "src": "32482:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c75696e743235362c626f6f6c29",
                            "id": 20087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32532:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7626db92bcbe8fb38799da91134ebae6bc6c7b10cb0db567e752720b8fd9ae0f",
                              "typeString": "literal_string \"log(string,uint256,uint256,bool)\""
                            },
                            "value": "log(string,uint256,uint256,bool)"
                          },
                          {
                            "id": 20088,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20075,
                            "src": "32568:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20089,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20077,
                            "src": "32572:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20090,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20079,
                            "src": "32576:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20091,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20081,
                            "src": "32580:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7626db92bcbe8fb38799da91134ebae6bc6c7b10cb0db567e752720b8fd9ae0f",
                              "typeString": "literal_string \"log(string,uint256,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20085,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32508:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32512:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32508:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32508:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20084,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "32492:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32492:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20094,
                  "nodeType": "ExpressionStatement",
                  "src": "32492:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32413:3:14",
            "parameters": {
              "id": 20082,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20075,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32431:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20096,
                  "src": "32417:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20074,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32417:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20077,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32443:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20096,
                  "src": "32435:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20076,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32435:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20079,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32455:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20096,
                  "src": "32447:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20078,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32447:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20081,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32464:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20096,
                  "src": "32459:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20080,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32459:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32416:51:14"
            },
            "returnParameters": {
              "id": 20083,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32482:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20119,
            "nodeType": "FunctionDefinition",
            "src": "32597:193:14",
            "body": {
              "id": 20118,
              "nodeType": "Block",
              "src": "32678:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c75696e743235362c6164647265737329",
                            "id": 20110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32728:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e21de278b3902dab5803384c9ad03fb95c973bc87490e387079e41c7f244f118",
                              "typeString": "literal_string \"log(string,uint256,uint256,address)\""
                            },
                            "value": "log(string,uint256,uint256,address)"
                          },
                          {
                            "id": 20111,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20098,
                            "src": "32767:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20112,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20100,
                            "src": "32771:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20113,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20102,
                            "src": "32775:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20114,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20104,
                            "src": "32779:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e21de278b3902dab5803384c9ad03fb95c973bc87490e387079e41c7f244f118",
                              "typeString": "literal_string \"log(string,uint256,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20108,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32704:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32708:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32704:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32704:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20107,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "32688:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32688:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20117,
                  "nodeType": "ExpressionStatement",
                  "src": "32688:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32606:3:14",
            "parameters": {
              "id": 20105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20098,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32624:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20119,
                  "src": "32610:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20097,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32610:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20100,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32636:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20119,
                  "src": "32628:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32628:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20102,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32648:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20119,
                  "src": "32640:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32640:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20104,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32660:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20119,
                  "src": "32652:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32652:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32609:54:14"
            },
            "returnParameters": {
              "id": 20106,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32678:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20142,
            "nodeType": "FunctionDefinition",
            "src": "32796:198:14",
            "body": {
              "id": 20141,
              "nodeType": "Block",
              "src": "32883:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c737472696e672c75696e7432353629",
                            "id": 20133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32933:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c67ea9d1db4353b82da41ad5e5b85243320ba3a89399b41c13eee1ab804e84c9",
                              "typeString": "literal_string \"log(string,uint256,string,uint256)\""
                            },
                            "value": "log(string,uint256,string,uint256)"
                          },
                          {
                            "id": 20134,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20121,
                            "src": "32971:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20135,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20123,
                            "src": "32975:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20136,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20125,
                            "src": "32979:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20137,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20127,
                            "src": "32983:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c67ea9d1db4353b82da41ad5e5b85243320ba3a89399b41c13eee1ab804e84c9",
                              "typeString": "literal_string \"log(string,uint256,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20131,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32909:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32913:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32909:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32909:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20130,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "32893:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32893:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20140,
                  "nodeType": "ExpressionStatement",
                  "src": "32893:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32805:3:14",
            "parameters": {
              "id": 20128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20121,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32823:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20142,
                  "src": "32809:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20120,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32809:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20123,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32835:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20142,
                  "src": "32827:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20122,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32827:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20125,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32853:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20142,
                  "src": "32839:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20124,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32839:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20127,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32865:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20142,
                  "src": "32857:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20126,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "32857:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32808:60:14"
            },
            "returnParameters": {
              "id": 20129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32883:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20165,
            "nodeType": "FunctionDefinition",
            "src": "33000:203:14",
            "body": {
              "id": 20164,
              "nodeType": "Block",
              "src": "33093:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c737472696e672c737472696e6729",
                            "id": 20156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33143:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ab84e1fba099b79ad99dc62242807811428e5c36b5f473a3b74e319a04c4089",
                              "typeString": "literal_string \"log(string,uint256,string,string)\""
                            },
                            "value": "log(string,uint256,string,string)"
                          },
                          {
                            "id": 20157,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20144,
                            "src": "33180:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20158,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20146,
                            "src": "33184:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20159,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20148,
                            "src": "33188:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20160,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20150,
                            "src": "33192:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ab84e1fba099b79ad99dc62242807811428e5c36b5f473a3b74e319a04c4089",
                              "typeString": "literal_string \"log(string,uint256,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20154,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33119:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33123:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33119:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33119:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20153,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "33103:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20162,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33103:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20163,
                  "nodeType": "ExpressionStatement",
                  "src": "33103:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33009:3:14",
            "parameters": {
              "id": 20151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20144,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33027:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20165,
                  "src": "33013:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20143,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33013:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20146,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33039:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20165,
                  "src": "33031:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20145,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33031:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20148,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33057:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20165,
                  "src": "33043:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33043:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20150,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33075:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20165,
                  "src": "33061:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33061:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33012:66:14"
            },
            "returnParameters": {
              "id": 20152,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33093:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20188,
            "nodeType": "FunctionDefinition",
            "src": "33209:192:14",
            "body": {
              "id": 20187,
              "nodeType": "Block",
              "src": "33293:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c737472696e672c626f6f6c29",
                            "id": 20179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33343:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7d24491d69f4bc88a6e68cd8228b6698af11fe37f60f65c80e3f11428a8eba2f",
                              "typeString": "literal_string \"log(string,uint256,string,bool)\""
                            },
                            "value": "log(string,uint256,string,bool)"
                          },
                          {
                            "id": 20180,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20167,
                            "src": "33378:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20181,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20169,
                            "src": "33382:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20182,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20171,
                            "src": "33386:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20183,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20173,
                            "src": "33390:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7d24491d69f4bc88a6e68cd8228b6698af11fe37f60f65c80e3f11428a8eba2f",
                              "typeString": "literal_string \"log(string,uint256,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20177,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33319:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33323:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33319:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33319:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20176,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "33303:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33303:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20186,
                  "nodeType": "ExpressionStatement",
                  "src": "33303:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33218:3:14",
            "parameters": {
              "id": 20174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20167,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33236:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20188,
                  "src": "33222:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20166,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33222:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20169,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33248:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20188,
                  "src": "33240:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20168,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33240:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20171,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33266:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20188,
                  "src": "33252:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20170,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33252:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20173,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33275:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20188,
                  "src": "33270:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "33270:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33221:57:14"
            },
            "returnParameters": {
              "id": 20175,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33293:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20211,
            "nodeType": "FunctionDefinition",
            "src": "33407:198:14",
            "body": {
              "id": 20210,
              "nodeType": "Block",
              "src": "33494:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c737472696e672c6164647265737329",
                            "id": 20202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33544:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7c4632a48572fa2d4647539e525c9742d692f8e780540d6116f897ab472257cb",
                              "typeString": "literal_string \"log(string,uint256,string,address)\""
                            },
                            "value": "log(string,uint256,string,address)"
                          },
                          {
                            "id": 20203,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20190,
                            "src": "33582:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20204,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20192,
                            "src": "33586:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20205,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20194,
                            "src": "33590:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20206,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20196,
                            "src": "33594:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7c4632a48572fa2d4647539e525c9742d692f8e780540d6116f897ab472257cb",
                              "typeString": "literal_string \"log(string,uint256,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20200,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33520:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33524:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33520:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33520:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20199,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "33504:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33504:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20209,
                  "nodeType": "ExpressionStatement",
                  "src": "33504:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33416:3:14",
            "parameters": {
              "id": 20197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20190,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33434:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20211,
                  "src": "33420:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33420:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20192,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33446:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20211,
                  "src": "33438:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20191,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33438:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20194,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33464:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20211,
                  "src": "33450:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20193,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33450:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20196,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33476:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20211,
                  "src": "33468:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33468:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33419:60:14"
            },
            "returnParameters": {
              "id": 20198,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33494:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20234,
            "nodeType": "FunctionDefinition",
            "src": "33611:187:14",
            "body": {
              "id": 20233,
              "nodeType": "Block",
              "src": "33689:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c626f6f6c2c75696e7432353629",
                            "id": 20225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33739:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e41b6f6f58a4f880a3266f23bebaff73175ff4306317c20982bc2eabc04edd13",
                              "typeString": "literal_string \"log(string,uint256,bool,uint256)\""
                            },
                            "value": "log(string,uint256,bool,uint256)"
                          },
                          {
                            "id": 20226,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20213,
                            "src": "33775:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20227,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20215,
                            "src": "33779:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20228,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20217,
                            "src": "33783:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20229,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20219,
                            "src": "33787:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e41b6f6f58a4f880a3266f23bebaff73175ff4306317c20982bc2eabc04edd13",
                              "typeString": "literal_string \"log(string,uint256,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20223,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33715:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33719:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33715:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33715:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20222,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "33699:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33699:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20232,
                  "nodeType": "ExpressionStatement",
                  "src": "33699:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33620:3:14",
            "parameters": {
              "id": 20220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20213,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33638:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20234,
                  "src": "33624:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20212,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33624:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20215,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33650:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20234,
                  "src": "33642:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20214,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33642:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20217,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33659:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20234,
                  "src": "33654:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20216,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "33654:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20219,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33671:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20234,
                  "src": "33663:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20218,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33663:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33623:51:14"
            },
            "returnParameters": {
              "id": 20221,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33689:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20257,
            "nodeType": "FunctionDefinition",
            "src": "33804:192:14",
            "body": {
              "id": 20256,
              "nodeType": "Block",
              "src": "33888:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c626f6f6c2c737472696e6729",
                            "id": 20248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33938:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_abf73a9831ab2bdeb8da9d06a81eab42196b20e336ab670ecba37bac94839d87",
                              "typeString": "literal_string \"log(string,uint256,bool,string)\""
                            },
                            "value": "log(string,uint256,bool,string)"
                          },
                          {
                            "id": 20249,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20236,
                            "src": "33973:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20250,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20238,
                            "src": "33977:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20251,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20240,
                            "src": "33981:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20252,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20242,
                            "src": "33985:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_abf73a9831ab2bdeb8da9d06a81eab42196b20e336ab670ecba37bac94839d87",
                              "typeString": "literal_string \"log(string,uint256,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20246,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33914:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33918:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33914:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33914:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20245,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "33898:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33898:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20255,
                  "nodeType": "ExpressionStatement",
                  "src": "33898:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33813:3:14",
            "parameters": {
              "id": 20243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20236,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33831:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20257,
                  "src": "33817:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20235,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33817:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20238,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33843:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20257,
                  "src": "33835:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20237,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "33835:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20240,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33852:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20257,
                  "src": "33847:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20239,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "33847:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20242,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33870:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20257,
                  "src": "33856:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20241,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33856:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33816:57:14"
            },
            "returnParameters": {
              "id": 20244,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33888:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20280,
            "nodeType": "FunctionDefinition",
            "src": "34002:181:14",
            "body": {
              "id": 20279,
              "nodeType": "Block",
              "src": "34077:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c626f6f6c2c626f6f6c29",
                            "id": 20271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34127:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_354c36d6798abb81721fb2beaef51c92cab9d4cf16be10f0a4724648784ecb76",
                              "typeString": "literal_string \"log(string,uint256,bool,bool)\""
                            },
                            "value": "log(string,uint256,bool,bool)"
                          },
                          {
                            "id": 20272,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20259,
                            "src": "34160:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20273,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20261,
                            "src": "34164:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20274,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20263,
                            "src": "34168:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20275,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20265,
                            "src": "34172:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_354c36d6798abb81721fb2beaef51c92cab9d4cf16be10f0a4724648784ecb76",
                              "typeString": "literal_string \"log(string,uint256,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20269,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34103:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34107:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34103:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34103:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20268,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "34087:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34087:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20278,
                  "nodeType": "ExpressionStatement",
                  "src": "34087:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34011:3:14",
            "parameters": {
              "id": 20266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20259,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34029:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20280,
                  "src": "34015:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20258,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34015:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20261,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34041:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20280,
                  "src": "34033:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34033:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20263,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34050:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20280,
                  "src": "34045:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20262,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34045:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20265,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34059:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20280,
                  "src": "34054:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20264,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34054:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34014:48:14"
            },
            "returnParameters": {
              "id": 20267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34077:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20303,
            "nodeType": "FunctionDefinition",
            "src": "34189:187:14",
            "body": {
              "id": 20302,
              "nodeType": "Block",
              "src": "34267:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c626f6f6c2c6164647265737329",
                            "id": 20294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34317:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0e95b9833a204b7ba633bd63a60ec523906565f2c86d8936f7ff3e9937880f7",
                              "typeString": "literal_string \"log(string,uint256,bool,address)\""
                            },
                            "value": "log(string,uint256,bool,address)"
                          },
                          {
                            "id": 20295,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20282,
                            "src": "34353:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20296,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20284,
                            "src": "34357:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20297,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20286,
                            "src": "34361:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20298,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20288,
                            "src": "34365:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0e95b9833a204b7ba633bd63a60ec523906565f2c86d8936f7ff3e9937880f7",
                              "typeString": "literal_string \"log(string,uint256,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20292,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34293:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34297:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34293:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34293:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20291,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "34277:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34277:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20301,
                  "nodeType": "ExpressionStatement",
                  "src": "34277:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34198:3:14",
            "parameters": {
              "id": 20289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20282,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34216:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20303,
                  "src": "34202:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20281,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34202:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20284,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34228:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20303,
                  "src": "34220:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34220:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20286,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34237:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20303,
                  "src": "34232:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20285,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34232:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20288,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34249:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20303,
                  "src": "34241:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20287,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34241:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34201:51:14"
            },
            "returnParameters": {
              "id": 20290,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34267:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20326,
            "nodeType": "FunctionDefinition",
            "src": "34382:193:14",
            "body": {
              "id": 20325,
              "nodeType": "Block",
              "src": "34463:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c616464726573732c75696e7432353629",
                            "id": 20317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34513:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4f04fdc6b6271b036262883bae0d1ea5155524010fed0023b5c71c574fb937ff",
                              "typeString": "literal_string \"log(string,uint256,address,uint256)\""
                            },
                            "value": "log(string,uint256,address,uint256)"
                          },
                          {
                            "id": 20318,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20305,
                            "src": "34552:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20319,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20307,
                            "src": "34556:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20320,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20309,
                            "src": "34560:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20321,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20311,
                            "src": "34564:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4f04fdc6b6271b036262883bae0d1ea5155524010fed0023b5c71c574fb937ff",
                              "typeString": "literal_string \"log(string,uint256,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20315,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34489:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34493:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34489:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34489:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20314,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "34473:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34473:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20324,
                  "nodeType": "ExpressionStatement",
                  "src": "34473:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34391:3:14",
            "parameters": {
              "id": 20312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20305,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34409:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20326,
                  "src": "34395:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20304,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34395:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20307,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34421:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20326,
                  "src": "34413:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20306,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34413:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20309,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34433:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20326,
                  "src": "34425:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20308,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34425:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20311,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34445:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20326,
                  "src": "34437:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20310,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34437:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34394:54:14"
            },
            "returnParameters": {
              "id": 20313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34463:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20349,
            "nodeType": "FunctionDefinition",
            "src": "34581:198:14",
            "body": {
              "id": 20348,
              "nodeType": "Block",
              "src": "34668:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c616464726573732c737472696e6729",
                            "id": 20340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34718:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9ffb2f93ff043d0a86ff6dc2ddf23d28dfc95ecde23d406177dfe6f19d070d2b",
                              "typeString": "literal_string \"log(string,uint256,address,string)\""
                            },
                            "value": "log(string,uint256,address,string)"
                          },
                          {
                            "id": 20341,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20328,
                            "src": "34756:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20342,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20330,
                            "src": "34760:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20343,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20332,
                            "src": "34764:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20344,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20334,
                            "src": "34768:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9ffb2f93ff043d0a86ff6dc2ddf23d28dfc95ecde23d406177dfe6f19d070d2b",
                              "typeString": "literal_string \"log(string,uint256,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20338,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34694:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34698:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34694:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34694:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20337,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "34678:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34678:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20347,
                  "nodeType": "ExpressionStatement",
                  "src": "34678:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34590:3:14",
            "parameters": {
              "id": 20335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20328,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34608:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20349,
                  "src": "34594:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20327,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34594:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20330,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34620:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20349,
                  "src": "34612:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34612:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20332,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34632:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20349,
                  "src": "34624:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34624:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20334,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34650:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20349,
                  "src": "34636:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20333,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34636:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34593:60:14"
            },
            "returnParameters": {
              "id": 20336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34668:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20372,
            "nodeType": "FunctionDefinition",
            "src": "34785:187:14",
            "body": {
              "id": 20371,
              "nodeType": "Block",
              "src": "34863:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c616464726573732c626f6f6c29",
                            "id": 20363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34913:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_82112a429657399db0318af6ca78ff56626aa907939e7cf56b60b07035dcc190",
                              "typeString": "literal_string \"log(string,uint256,address,bool)\""
                            },
                            "value": "log(string,uint256,address,bool)"
                          },
                          {
                            "id": 20364,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20351,
                            "src": "34949:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20365,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20353,
                            "src": "34953:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20366,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "34957:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20367,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20357,
                            "src": "34961:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_82112a429657399db0318af6ca78ff56626aa907939e7cf56b60b07035dcc190",
                              "typeString": "literal_string \"log(string,uint256,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20361,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34889:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34893:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34889:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34889:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20360,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "34873:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34873:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20370,
                  "nodeType": "ExpressionStatement",
                  "src": "34873:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34794:3:14",
            "parameters": {
              "id": 20358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20351,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34812:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20372,
                  "src": "34798:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20350,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34798:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20353,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34824:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20372,
                  "src": "34816:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20352,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "34816:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20355,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34836:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20372,
                  "src": "34828:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34828:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20357,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34845:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20372,
                  "src": "34840:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20356,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34840:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34797:51:14"
            },
            "returnParameters": {
              "id": 20359,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34863:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20395,
            "nodeType": "FunctionDefinition",
            "src": "34978:193:14",
            "body": {
              "id": 20394,
              "nodeType": "Block",
              "src": "35059:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e743235362c616464726573732c6164647265737329",
                            "id": 20386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35109:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ea2b7aea4409bbe3ef8ca502419b3574b002a6123a1f864be076316b8efcd1d",
                              "typeString": "literal_string \"log(string,uint256,address,address)\""
                            },
                            "value": "log(string,uint256,address,address)"
                          },
                          {
                            "id": 20387,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20374,
                            "src": "35148:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20388,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20376,
                            "src": "35152:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20389,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20378,
                            "src": "35156:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20390,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20380,
                            "src": "35160:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ea2b7aea4409bbe3ef8ca502419b3574b002a6123a1f864be076316b8efcd1d",
                              "typeString": "literal_string \"log(string,uint256,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20384,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35085:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35089:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35085:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35085:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20383,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "35069:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35069:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20393,
                  "nodeType": "ExpressionStatement",
                  "src": "35069:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34987:3:14",
            "parameters": {
              "id": 20381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20374,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35005:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "34991:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20373,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34991:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20376,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35017:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35009:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20375,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35009:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20378,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35029:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35021:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20377,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35021:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20380,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35041:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20395,
                  "src": "35033:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35033:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34990:54:14"
            },
            "returnParameters": {
              "id": 20382,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35059:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20418,
            "nodeType": "FunctionDefinition",
            "src": "35177:198:14",
            "body": {
              "id": 20417,
              "nodeType": "Block",
              "src": "35264:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e743235362c75696e7432353629",
                            "id": 20409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35314:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f45d7d2cd1abe030b09347ce21ce66b503ffdad3e7a1ad6df9e55da5d9367776",
                              "typeString": "literal_string \"log(string,string,uint256,uint256)\""
                            },
                            "value": "log(string,string,uint256,uint256)"
                          },
                          {
                            "id": 20410,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20397,
                            "src": "35352:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20411,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20399,
                            "src": "35356:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20412,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20401,
                            "src": "35360:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20413,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20403,
                            "src": "35364:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f45d7d2cd1abe030b09347ce21ce66b503ffdad3e7a1ad6df9e55da5d9367776",
                              "typeString": "literal_string \"log(string,string,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20407,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35290:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35294:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35290:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35290:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20406,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "35274:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35274:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20416,
                  "nodeType": "ExpressionStatement",
                  "src": "35274:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35186:3:14",
            "parameters": {
              "id": 20404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20397,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35204:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20418,
                  "src": "35190:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20396,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35190:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20399,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35222:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20418,
                  "src": "35208:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20398,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35208:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20401,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35234:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20418,
                  "src": "35226:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20400,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35226:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20403,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35246:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20418,
                  "src": "35238:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35238:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35189:60:14"
            },
            "returnParameters": {
              "id": 20405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35264:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20441,
            "nodeType": "FunctionDefinition",
            "src": "35381:203:14",
            "body": {
              "id": 20440,
              "nodeType": "Block",
              "src": "35474:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e743235362c737472696e6729",
                            "id": 20432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35524:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d1a971aebb8f2fbb7526a470ca55e409230d59ee63217090d29ce11b768e909",
                              "typeString": "literal_string \"log(string,string,uint256,string)\""
                            },
                            "value": "log(string,string,uint256,string)"
                          },
                          {
                            "id": 20433,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20420,
                            "src": "35561:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20434,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20422,
                            "src": "35565:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20435,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20424,
                            "src": "35569:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20436,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20426,
                            "src": "35573:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d1a971aebb8f2fbb7526a470ca55e409230d59ee63217090d29ce11b768e909",
                              "typeString": "literal_string \"log(string,string,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20430,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35500:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35504:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35500:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35500:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20429,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "35484:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35484:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20439,
                  "nodeType": "ExpressionStatement",
                  "src": "35484:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35390:3:14",
            "parameters": {
              "id": 20427,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20420,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35408:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20441,
                  "src": "35394:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20419,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35394:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20422,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35426:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20441,
                  "src": "35412:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20421,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35412:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20424,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35438:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20441,
                  "src": "35430:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20423,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35430:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20426,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35456:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20441,
                  "src": "35442:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20425,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35442:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35393:66:14"
            },
            "returnParameters": {
              "id": 20428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35474:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20464,
            "nodeType": "FunctionDefinition",
            "src": "35590:192:14",
            "body": {
              "id": 20463,
              "nodeType": "Block",
              "src": "35674:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e743235362c626f6f6c29",
                            "id": 20455,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35724:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c3a8a6546b97cf01562dd9ca797c4955f3bab9bc163d02081737c20b686446d2",
                              "typeString": "literal_string \"log(string,string,uint256,bool)\""
                            },
                            "value": "log(string,string,uint256,bool)"
                          },
                          {
                            "id": 20456,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20443,
                            "src": "35759:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20457,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20445,
                            "src": "35763:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20458,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20447,
                            "src": "35767:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20459,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20449,
                            "src": "35771:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c3a8a6546b97cf01562dd9ca797c4955f3bab9bc163d02081737c20b686446d2",
                              "typeString": "literal_string \"log(string,string,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20453,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35700:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35704:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35700:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35700:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20452,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "35684:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35684:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20462,
                  "nodeType": "ExpressionStatement",
                  "src": "35684:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35599:3:14",
            "parameters": {
              "id": 20450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20443,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35617:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20464,
                  "src": "35603:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20442,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35603:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20445,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35635:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20464,
                  "src": "35621:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20444,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35621:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20447,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35647:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20464,
                  "src": "35639:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35639:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20449,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35656:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20464,
                  "src": "35651:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20448,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35651:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35602:57:14"
            },
            "returnParameters": {
              "id": 20451,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35674:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20487,
            "nodeType": "FunctionDefinition",
            "src": "35788:198:14",
            "body": {
              "id": 20486,
              "nodeType": "Block",
              "src": "35875:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e743235362c6164647265737329",
                            "id": 20478,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35925:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1023f7b286378387abf24b7020dbd1ddde789519cf7f13da727146a2a8a61fc6",
                              "typeString": "literal_string \"log(string,string,uint256,address)\""
                            },
                            "value": "log(string,string,uint256,address)"
                          },
                          {
                            "id": 20479,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20466,
                            "src": "35963:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20480,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20468,
                            "src": "35967:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20481,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20470,
                            "src": "35971:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20482,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20472,
                            "src": "35975:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1023f7b286378387abf24b7020dbd1ddde789519cf7f13da727146a2a8a61fc6",
                              "typeString": "literal_string \"log(string,string,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20476,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35901:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35905:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35901:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35901:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20475,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "35885:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35885:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20485,
                  "nodeType": "ExpressionStatement",
                  "src": "35885:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35797:3:14",
            "parameters": {
              "id": 20473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20466,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35815:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20487,
                  "src": "35801:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20465,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35801:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20468,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35833:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20487,
                  "src": "35819:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20467,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35819:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20470,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35845:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20487,
                  "src": "35837:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20469,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35837:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20472,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35857:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20487,
                  "src": "35849:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20471,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35849:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35800:60:14"
            },
            "returnParameters": {
              "id": 20474,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35875:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20510,
            "nodeType": "FunctionDefinition",
            "src": "35992:203:14",
            "body": {
              "id": 20509,
              "nodeType": "Block",
              "src": "36085:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c75696e7432353629",
                            "id": 20501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36135:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8eafb02b2f27070f4cef3c26d2b8a8d041c7bf077352780062dc5a70550ac689",
                              "typeString": "literal_string \"log(string,string,string,uint256)\""
                            },
                            "value": "log(string,string,string,uint256)"
                          },
                          {
                            "id": 20502,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20489,
                            "src": "36172:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20503,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20491,
                            "src": "36176:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20504,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20493,
                            "src": "36180:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20505,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20495,
                            "src": "36184:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8eafb02b2f27070f4cef3c26d2b8a8d041c7bf077352780062dc5a70550ac689",
                              "typeString": "literal_string \"log(string,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20499,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36111:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36115:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36111:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36111:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20498,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "36095:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36095:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20508,
                  "nodeType": "ExpressionStatement",
                  "src": "36095:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36001:3:14",
            "parameters": {
              "id": 20496,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20489,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36019:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "36005:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20488,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36005:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20491,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36037:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "36023:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20490,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36023:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20493,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36055:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "36041:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20492,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36041:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20495,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36067:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20510,
                  "src": "36059:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20494,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "36059:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36004:66:14"
            },
            "returnParameters": {
              "id": 20497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36085:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20533,
            "nodeType": "FunctionDefinition",
            "src": "36201:208:14",
            "body": {
              "id": 20532,
              "nodeType": "Block",
              "src": "36300:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c737472696e6729",
                            "id": 20524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36350:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                              "typeString": "literal_string \"log(string,string,string,string)\""
                            },
                            "value": "log(string,string,string,string)"
                          },
                          {
                            "id": 20525,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20512,
                            "src": "36386:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20526,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20514,
                            "src": "36390:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20527,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20516,
                            "src": "36394:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20528,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20518,
                            "src": "36398:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                              "typeString": "literal_string \"log(string,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20522,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36326:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36330:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36326:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36326:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20521,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "36310:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36310:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20531,
                  "nodeType": "ExpressionStatement",
                  "src": "36310:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36210:3:14",
            "parameters": {
              "id": 20519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20512,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36228:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20533,
                  "src": "36214:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20511,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36214:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20514,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36246:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20533,
                  "src": "36232:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20513,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36232:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20516,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36264:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20533,
                  "src": "36250:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20515,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36250:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20518,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36282:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20533,
                  "src": "36268:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20517,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36268:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36213:72:14"
            },
            "returnParameters": {
              "id": 20520,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36300:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20556,
            "nodeType": "FunctionDefinition",
            "src": "36415:197:14",
            "body": {
              "id": 20555,
              "nodeType": "Block",
              "src": "36505:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c626f6f6c29",
                            "id": 20547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36555:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                              "typeString": "literal_string \"log(string,string,string,bool)\""
                            },
                            "value": "log(string,string,string,bool)"
                          },
                          {
                            "id": 20548,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20535,
                            "src": "36589:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20549,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20537,
                            "src": "36593:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20550,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20539,
                            "src": "36597:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20551,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20541,
                            "src": "36601:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                              "typeString": "literal_string \"log(string,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20545,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36531:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36535:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36531:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36531:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20544,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "36515:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20553,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36515:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20554,
                  "nodeType": "ExpressionStatement",
                  "src": "36515:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36424:3:14",
            "parameters": {
              "id": 20542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20535,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36442:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20556,
                  "src": "36428:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20534,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36428:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20537,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36460:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20556,
                  "src": "36446:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20536,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36446:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20539,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36478:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20556,
                  "src": "36464:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20538,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36464:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20541,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36487:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20556,
                  "src": "36482:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20540,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "36482:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36427:63:14"
            },
            "returnParameters": {
              "id": 20543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36505:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20579,
            "nodeType": "FunctionDefinition",
            "src": "36618:203:14",
            "body": {
              "id": 20578,
              "nodeType": "Block",
              "src": "36711:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c6164647265737329",
                            "id": 20570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36761:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                              "typeString": "literal_string \"log(string,string,string,address)\""
                            },
                            "value": "log(string,string,string,address)"
                          },
                          {
                            "id": 20571,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20558,
                            "src": "36798:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20572,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20560,
                            "src": "36802:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20573,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20562,
                            "src": "36806:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20574,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20564,
                            "src": "36810:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                              "typeString": "literal_string \"log(string,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20568,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36737:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36741:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36737:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36737:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20567,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "36721:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36721:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20577,
                  "nodeType": "ExpressionStatement",
                  "src": "36721:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36627:3:14",
            "parameters": {
              "id": 20565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20558,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36645:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20579,
                  "src": "36631:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20557,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36631:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20560,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36663:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20579,
                  "src": "36649:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20559,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36649:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20562,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36681:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20579,
                  "src": "36667:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20561,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36667:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20564,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36693:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20579,
                  "src": "36685:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20563,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36685:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36630:66:14"
            },
            "returnParameters": {
              "id": 20566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36711:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20602,
            "nodeType": "FunctionDefinition",
            "src": "36827:192:14",
            "body": {
              "id": 20601,
              "nodeType": "Block",
              "src": "36911:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c75696e7432353629",
                            "id": 20593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36961:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d6aefad2ecee6d91421acc41f939bded56985ac5c9cf6e49011ee16b1bb31729",
                              "typeString": "literal_string \"log(string,string,bool,uint256)\""
                            },
                            "value": "log(string,string,bool,uint256)"
                          },
                          {
                            "id": 20594,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20581,
                            "src": "36996:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20595,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20583,
                            "src": "37000:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20596,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20585,
                            "src": "37004:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20597,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20587,
                            "src": "37008:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d6aefad2ecee6d91421acc41f939bded56985ac5c9cf6e49011ee16b1bb31729",
                              "typeString": "literal_string \"log(string,string,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20591,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36937:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36941:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36937:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20598,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36937:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20590,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "36921:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36921:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20600,
                  "nodeType": "ExpressionStatement",
                  "src": "36921:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36836:3:14",
            "parameters": {
              "id": 20588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20581,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36854:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20602,
                  "src": "36840:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20580,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36840:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20583,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36872:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20602,
                  "src": "36858:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20582,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36858:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20585,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36881:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20602,
                  "src": "36876:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20584,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "36876:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20587,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36893:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20602,
                  "src": "36885:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "36885:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36839:57:14"
            },
            "returnParameters": {
              "id": 20589,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36911:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20625,
            "nodeType": "FunctionDefinition",
            "src": "37025:197:14",
            "body": {
              "id": 20624,
              "nodeType": "Block",
              "src": "37115:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c737472696e6729",
                            "id": 20616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37165:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                              "typeString": "literal_string \"log(string,string,bool,string)\""
                            },
                            "value": "log(string,string,bool,string)"
                          },
                          {
                            "id": 20617,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20604,
                            "src": "37199:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20618,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20606,
                            "src": "37203:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20619,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20608,
                            "src": "37207:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20620,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20610,
                            "src": "37211:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                              "typeString": "literal_string \"log(string,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20614,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37141:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37145:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37141:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37141:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20613,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "37125:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37125:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20623,
                  "nodeType": "ExpressionStatement",
                  "src": "37125:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37034:3:14",
            "parameters": {
              "id": 20611,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20604,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37052:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "37038:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20603,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37038:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20606,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37070:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "37056:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20605,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37056:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20608,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37079:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "37074:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20607,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37074:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20610,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37097:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20625,
                  "src": "37083:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20609,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37083:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37037:63:14"
            },
            "returnParameters": {
              "id": 20612,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37115:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20648,
            "nodeType": "FunctionDefinition",
            "src": "37228:186:14",
            "body": {
              "id": 20647,
              "nodeType": "Block",
              "src": "37309:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 20639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37359:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                              "typeString": "literal_string \"log(string,string,bool,bool)\""
                            },
                            "value": "log(string,string,bool,bool)"
                          },
                          {
                            "id": 20640,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20627,
                            "src": "37391:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20641,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20629,
                            "src": "37395:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20642,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20631,
                            "src": "37399:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20643,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20633,
                            "src": "37403:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                              "typeString": "literal_string \"log(string,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20637,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37335:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37339:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37335:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37335:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20636,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "37319:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37319:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20646,
                  "nodeType": "ExpressionStatement",
                  "src": "37319:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37237:3:14",
            "parameters": {
              "id": 20634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20627,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37255:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20648,
                  "src": "37241:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20626,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37241:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20629,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37273:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20648,
                  "src": "37259:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20628,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37259:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20631,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37282:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20648,
                  "src": "37277:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20630,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37277:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20633,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37291:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20648,
                  "src": "37286:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20632,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37286:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37240:54:14"
            },
            "returnParameters": {
              "id": 20635,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37309:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20671,
            "nodeType": "FunctionDefinition",
            "src": "37420:192:14",
            "body": {
              "id": 20670,
              "nodeType": "Block",
              "src": "37504:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c6164647265737329",
                            "id": 20662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37554:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                              "typeString": "literal_string \"log(string,string,bool,address)\""
                            },
                            "value": "log(string,string,bool,address)"
                          },
                          {
                            "id": 20663,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20650,
                            "src": "37589:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20664,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20652,
                            "src": "37593:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20665,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20654,
                            "src": "37597:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20666,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20656,
                            "src": "37601:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                              "typeString": "literal_string \"log(string,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20660,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37530:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37534:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37530:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20667,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37530:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20659,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "37514:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20668,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37514:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20669,
                  "nodeType": "ExpressionStatement",
                  "src": "37514:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37429:3:14",
            "parameters": {
              "id": 20657,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20650,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37447:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20671,
                  "src": "37433:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20649,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37433:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20652,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37465:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20671,
                  "src": "37451:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20651,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37451:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20654,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37474:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20671,
                  "src": "37469:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20653,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37469:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20656,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37486:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20671,
                  "src": "37478:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "37478:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37432:57:14"
            },
            "returnParameters": {
              "id": 20658,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37504:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20694,
            "nodeType": "FunctionDefinition",
            "src": "37618:198:14",
            "body": {
              "id": 20693,
              "nodeType": "Block",
              "src": "37705:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c75696e7432353629",
                            "id": 20685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37755:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7cc3c607046f21bb2d1cc4864448de2e6c44029beb9bfc36cf6ca90777ae5a00",
                              "typeString": "literal_string \"log(string,string,address,uint256)\""
                            },
                            "value": "log(string,string,address,uint256)"
                          },
                          {
                            "id": 20686,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20673,
                            "src": "37793:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20687,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20675,
                            "src": "37797:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20688,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20677,
                            "src": "37801:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20689,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20679,
                            "src": "37805:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7cc3c607046f21bb2d1cc4864448de2e6c44029beb9bfc36cf6ca90777ae5a00",
                              "typeString": "literal_string \"log(string,string,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20683,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37731:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37735:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37731:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37731:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20682,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "37715:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37715:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20692,
                  "nodeType": "ExpressionStatement",
                  "src": "37715:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37627:3:14",
            "parameters": {
              "id": 20680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20673,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37645:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20694,
                  "src": "37631:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20672,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37631:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20675,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37663:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20694,
                  "src": "37649:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20674,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37649:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20677,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37675:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20694,
                  "src": "37667:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20676,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "37667:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20679,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37687:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20694,
                  "src": "37679:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "37679:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37630:60:14"
            },
            "returnParameters": {
              "id": 20681,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37705:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20717,
            "nodeType": "FunctionDefinition",
            "src": "37822:203:14",
            "body": {
              "id": 20716,
              "nodeType": "Block",
              "src": "37915:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c737472696e6729",
                            "id": 20708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37965:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                              "typeString": "literal_string \"log(string,string,address,string)\""
                            },
                            "value": "log(string,string,address,string)"
                          },
                          {
                            "id": 20709,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20696,
                            "src": "38002:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20710,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20698,
                            "src": "38006:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20711,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20700,
                            "src": "38010:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20712,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20702,
                            "src": "38014:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                              "typeString": "literal_string \"log(string,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20706,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37941:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37945:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37941:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37941:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20705,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "37925:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37925:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20715,
                  "nodeType": "ExpressionStatement",
                  "src": "37925:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37831:3:14",
            "parameters": {
              "id": 20703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20696,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37849:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20717,
                  "src": "37835:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20695,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37835:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20698,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37867:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20717,
                  "src": "37853:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20697,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37853:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20700,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20717,
                  "src": "37871:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20699,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "37871:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20702,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37897:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20717,
                  "src": "37883:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20701,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37883:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37834:66:14"
            },
            "returnParameters": {
              "id": 20704,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37915:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20740,
            "nodeType": "FunctionDefinition",
            "src": "38031:192:14",
            "body": {
              "id": 20739,
              "nodeType": "Block",
              "src": "38115:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c626f6f6c29",
                            "id": 20731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38165:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                              "typeString": "literal_string \"log(string,string,address,bool)\""
                            },
                            "value": "log(string,string,address,bool)"
                          },
                          {
                            "id": 20732,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20719,
                            "src": "38200:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20733,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20721,
                            "src": "38204:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20734,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20723,
                            "src": "38208:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20735,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20725,
                            "src": "38212:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                              "typeString": "literal_string \"log(string,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20729,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38141:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38145:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38141:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38141:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20728,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "38125:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38125:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20738,
                  "nodeType": "ExpressionStatement",
                  "src": "38125:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38040:3:14",
            "parameters": {
              "id": 20726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20719,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38058:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20740,
                  "src": "38044:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20718,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38044:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20721,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38076:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20740,
                  "src": "38062:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20720,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38062:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20723,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38088:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20740,
                  "src": "38080:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20722,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38080:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20725,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38097:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20740,
                  "src": "38092:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20724,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38092:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38043:57:14"
            },
            "returnParameters": {
              "id": 20727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38115:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20763,
            "nodeType": "FunctionDefinition",
            "src": "38229:198:14",
            "body": {
              "id": 20762,
              "nodeType": "Block",
              "src": "38316:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c6164647265737329",
                            "id": 20754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38366:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                              "typeString": "literal_string \"log(string,string,address,address)\""
                            },
                            "value": "log(string,string,address,address)"
                          },
                          {
                            "id": 20755,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20742,
                            "src": "38404:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20756,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20744,
                            "src": "38408:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20757,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20746,
                            "src": "38412:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20758,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20748,
                            "src": "38416:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                              "typeString": "literal_string \"log(string,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20752,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38342:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38346:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38342:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38342:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20751,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "38326:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38326:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20761,
                  "nodeType": "ExpressionStatement",
                  "src": "38326:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38238:3:14",
            "parameters": {
              "id": 20749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20742,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38256:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20763,
                  "src": "38242:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20741,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38242:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20744,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38274:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20763,
                  "src": "38260:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20743,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38260:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20746,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38286:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20763,
                  "src": "38278:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20745,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38278:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20748,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38298:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20763,
                  "src": "38290:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20747,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38290:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38241:60:14"
            },
            "returnParameters": {
              "id": 20750,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38316:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20786,
            "nodeType": "FunctionDefinition",
            "src": "38433:187:14",
            "body": {
              "id": 20785,
              "nodeType": "Block",
              "src": "38511:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e743235362c75696e7432353629",
                            "id": 20777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38561:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_64b5bb671d0911515c2d999ed3f7f689c3b5762a99b342dfee4a1d88fec7b25e",
                              "typeString": "literal_string \"log(string,bool,uint256,uint256)\""
                            },
                            "value": "log(string,bool,uint256,uint256)"
                          },
                          {
                            "id": 20778,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20765,
                            "src": "38597:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20779,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20767,
                            "src": "38601:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20780,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20769,
                            "src": "38605:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20781,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20771,
                            "src": "38609:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_64b5bb671d0911515c2d999ed3f7f689c3b5762a99b342dfee4a1d88fec7b25e",
                              "typeString": "literal_string \"log(string,bool,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20775,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38537:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38541:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38537:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38537:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20774,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "38521:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38521:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20784,
                  "nodeType": "ExpressionStatement",
                  "src": "38521:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38442:3:14",
            "parameters": {
              "id": 20772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20765,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38460:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20786,
                  "src": "38446:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20764,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38446:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20767,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38469:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20786,
                  "src": "38464:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20766,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38464:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20769,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38481:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20786,
                  "src": "38473:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38473:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20771,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38493:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20786,
                  "src": "38485:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20770,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38485:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38445:51:14"
            },
            "returnParameters": {
              "id": 20773,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38511:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20809,
            "nodeType": "FunctionDefinition",
            "src": "38626:192:14",
            "body": {
              "id": 20808,
              "nodeType": "Block",
              "src": "38710:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e743235362c737472696e6729",
                            "id": 20800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38760:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_742d6ee771df9df1dec5a8b70ff5f7f41567f6ae9fe27e7e391b2811f9978b00",
                              "typeString": "literal_string \"log(string,bool,uint256,string)\""
                            },
                            "value": "log(string,bool,uint256,string)"
                          },
                          {
                            "id": 20801,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20788,
                            "src": "38795:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20802,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20790,
                            "src": "38799:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20803,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20792,
                            "src": "38803:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20804,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20794,
                            "src": "38807:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_742d6ee771df9df1dec5a8b70ff5f7f41567f6ae9fe27e7e391b2811f9978b00",
                              "typeString": "literal_string \"log(string,bool,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20798,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38736:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38740:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38736:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38736:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20797,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "38720:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38720:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20807,
                  "nodeType": "ExpressionStatement",
                  "src": "38720:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38635:3:14",
            "parameters": {
              "id": 20795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20788,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38653:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20809,
                  "src": "38639:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20787,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38639:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20790,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38662:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20809,
                  "src": "38657:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20789,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38657:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20792,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38674:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20809,
                  "src": "38666:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38666:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20794,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38692:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20809,
                  "src": "38678:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20793,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38678:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38638:57:14"
            },
            "returnParameters": {
              "id": 20796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38710:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20832,
            "nodeType": "FunctionDefinition",
            "src": "38824:181:14",
            "body": {
              "id": 20831,
              "nodeType": "Block",
              "src": "38899:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e743235362c626f6f6c29",
                            "id": 20823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38949:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8af7cf8a379b674b00a81c3841f4203ce23fde0db10f1f8c2a0017ca424d79e2",
                              "typeString": "literal_string \"log(string,bool,uint256,bool)\""
                            },
                            "value": "log(string,bool,uint256,bool)"
                          },
                          {
                            "id": 20824,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20811,
                            "src": "38982:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20825,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20813,
                            "src": "38986:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20826,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20815,
                            "src": "38990:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20827,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20817,
                            "src": "38994:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8af7cf8a379b674b00a81c3841f4203ce23fde0db10f1f8c2a0017ca424d79e2",
                              "typeString": "literal_string \"log(string,bool,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20821,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38925:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38929:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38925:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38925:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20820,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "38909:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38909:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20830,
                  "nodeType": "ExpressionStatement",
                  "src": "38909:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38833:3:14",
            "parameters": {
              "id": 20818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20811,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38851:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20832,
                  "src": "38837:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20810,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38837:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20813,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38860:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20832,
                  "src": "38855:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20812,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38855:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20815,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38872:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20832,
                  "src": "38864:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20814,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "38864:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20817,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38881:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20832,
                  "src": "38876:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20816,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38876:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38836:48:14"
            },
            "returnParameters": {
              "id": 20819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38899:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20855,
            "nodeType": "FunctionDefinition",
            "src": "39011:187:14",
            "body": {
              "id": 20854,
              "nodeType": "Block",
              "src": "39089:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e743235362c6164647265737329",
                            "id": 20846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39139:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_935e09bfd29779a7e049f17e6e907bb9f7181e93c0c486cf646b7471eb4a9d1e",
                              "typeString": "literal_string \"log(string,bool,uint256,address)\""
                            },
                            "value": "log(string,bool,uint256,address)"
                          },
                          {
                            "id": 20847,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20834,
                            "src": "39175:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20848,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20836,
                            "src": "39179:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20849,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20838,
                            "src": "39183:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20850,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20840,
                            "src": "39187:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_935e09bfd29779a7e049f17e6e907bb9f7181e93c0c486cf646b7471eb4a9d1e",
                              "typeString": "literal_string \"log(string,bool,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20844,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39115:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39119:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39115:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39115:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20843,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "39099:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39099:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20853,
                  "nodeType": "ExpressionStatement",
                  "src": "39099:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39020:3:14",
            "parameters": {
              "id": 20841,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20834,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39038:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20855,
                  "src": "39024:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20833,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39024:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20836,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39047:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20855,
                  "src": "39042:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20835,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39042:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20838,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39059:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20855,
                  "src": "39051:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20837,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "39051:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20840,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39071:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20855,
                  "src": "39063:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20839,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39063:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39023:51:14"
            },
            "returnParameters": {
              "id": 20842,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39089:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20878,
            "nodeType": "FunctionDefinition",
            "src": "39204:192:14",
            "body": {
              "id": 20877,
              "nodeType": "Block",
              "src": "39288:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c75696e7432353629",
                            "id": 20869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39338:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_24f9146562ee02c43db65ac014241fab3a51c9e29435f60d2ed133a186cac03a",
                              "typeString": "literal_string \"log(string,bool,string,uint256)\""
                            },
                            "value": "log(string,bool,string,uint256)"
                          },
                          {
                            "id": 20870,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20857,
                            "src": "39373:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20871,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20859,
                            "src": "39377:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20872,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20861,
                            "src": "39381:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20873,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20863,
                            "src": "39385:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_24f9146562ee02c43db65ac014241fab3a51c9e29435f60d2ed133a186cac03a",
                              "typeString": "literal_string \"log(string,bool,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20867,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39314:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39318:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39314:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39314:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20866,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "39298:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39298:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20876,
                  "nodeType": "ExpressionStatement",
                  "src": "39298:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39213:3:14",
            "parameters": {
              "id": 20864,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20857,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39231:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20878,
                  "src": "39217:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20856,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39217:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20859,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39240:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20878,
                  "src": "39235:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20858,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39235:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20861,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39258:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20878,
                  "src": "39244:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39244:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20863,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39270:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20878,
                  "src": "39262:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20862,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "39262:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39216:57:14"
            },
            "returnParameters": {
              "id": 20865,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39288:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20901,
            "nodeType": "FunctionDefinition",
            "src": "39402:197:14",
            "body": {
              "id": 20900,
              "nodeType": "Block",
              "src": "39492:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c737472696e6729",
                            "id": 20892,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39542:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                              "typeString": "literal_string \"log(string,bool,string,string)\""
                            },
                            "value": "log(string,bool,string,string)"
                          },
                          {
                            "id": 20893,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20880,
                            "src": "39576:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20894,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20882,
                            "src": "39580:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20895,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20884,
                            "src": "39584:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20896,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20886,
                            "src": "39588:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                              "typeString": "literal_string \"log(string,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20890,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39518:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39522:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39518:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39518:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20889,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "39502:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39502:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20899,
                  "nodeType": "ExpressionStatement",
                  "src": "39502:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39411:3:14",
            "parameters": {
              "id": 20887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20880,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39429:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20901,
                  "src": "39415:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20879,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39415:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20882,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39438:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20901,
                  "src": "39433:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20881,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39433:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20884,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39456:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20901,
                  "src": "39442:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20883,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39442:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20886,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39474:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20901,
                  "src": "39460:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20885,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39460:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39414:63:14"
            },
            "returnParameters": {
              "id": 20888,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39492:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20924,
            "nodeType": "FunctionDefinition",
            "src": "39605:186:14",
            "body": {
              "id": 20923,
              "nodeType": "Block",
              "src": "39686:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 20915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39736:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                              "typeString": "literal_string \"log(string,bool,string,bool)\""
                            },
                            "value": "log(string,bool,string,bool)"
                          },
                          {
                            "id": 20916,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20903,
                            "src": "39768:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20917,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20905,
                            "src": "39772:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20918,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20907,
                            "src": "39776:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20919,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20909,
                            "src": "39780:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                              "typeString": "literal_string \"log(string,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20913,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39712:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39716:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39712:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20920,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39712:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20912,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "39696:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39696:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20922,
                  "nodeType": "ExpressionStatement",
                  "src": "39696:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39614:3:14",
            "parameters": {
              "id": 20910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20903,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39632:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20924,
                  "src": "39618:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20902,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39618:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20905,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39641:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20924,
                  "src": "39636:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20904,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39636:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20907,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39659:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20924,
                  "src": "39645:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20906,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39645:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20909,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39668:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20924,
                  "src": "39663:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20908,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39663:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39617:54:14"
            },
            "returnParameters": {
              "id": 20911,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39686:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20947,
            "nodeType": "FunctionDefinition",
            "src": "39797:192:14",
            "body": {
              "id": 20946,
              "nodeType": "Block",
              "src": "39881:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c6164647265737329",
                            "id": 20938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39931:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                              "typeString": "literal_string \"log(string,bool,string,address)\""
                            },
                            "value": "log(string,bool,string,address)"
                          },
                          {
                            "id": 20939,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20926,
                            "src": "39966:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20940,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20928,
                            "src": "39970:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20941,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20930,
                            "src": "39974:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20942,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20932,
                            "src": "39978:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                              "typeString": "literal_string \"log(string,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20936,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39907:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39911:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39907:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39907:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20935,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "39891:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39891:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20945,
                  "nodeType": "ExpressionStatement",
                  "src": "39891:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39806:3:14",
            "parameters": {
              "id": 20933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20926,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39824:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20947,
                  "src": "39810:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20925,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39810:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20928,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39833:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20947,
                  "src": "39828:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20927,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39828:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20930,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39851:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20947,
                  "src": "39837:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20929,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39837:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20932,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39863:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20947,
                  "src": "39855:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20931,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39855:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39809:57:14"
            },
            "returnParameters": {
              "id": 20934,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39881:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20970,
            "nodeType": "FunctionDefinition",
            "src": "39995:181:14",
            "body": {
              "id": 20969,
              "nodeType": "Block",
              "src": "40070:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c75696e7432353629",
                            "id": 20961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40120:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8e3f78a95b6137f6ae9ccc69d6fedacb3b283b432b4367bfc497a4b3b428665c",
                              "typeString": "literal_string \"log(string,bool,bool,uint256)\""
                            },
                            "value": "log(string,bool,bool,uint256)"
                          },
                          {
                            "id": 20962,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20949,
                            "src": "40153:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20963,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20951,
                            "src": "40157:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20964,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20953,
                            "src": "40161:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20965,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20955,
                            "src": "40165:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8e3f78a95b6137f6ae9ccc69d6fedacb3b283b432b4367bfc497a4b3b428665c",
                              "typeString": "literal_string \"log(string,bool,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20959,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40096:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40100:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40096:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40096:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20958,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "40080:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40080:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20968,
                  "nodeType": "ExpressionStatement",
                  "src": "40080:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40004:3:14",
            "parameters": {
              "id": 20956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20949,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40022:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20970,
                  "src": "40008:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20948,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40008:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20951,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40031:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20970,
                  "src": "40026:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20950,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40026:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20953,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40040:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20970,
                  "src": "40035:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20952,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40035:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20955,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40052:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20970,
                  "src": "40044:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20954,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "40044:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40007:48:14"
            },
            "returnParameters": {
              "id": 20957,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40070:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20993,
            "nodeType": "FunctionDefinition",
            "src": "40182:186:14",
            "body": {
              "id": 20992,
              "nodeType": "Block",
              "src": "40263:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 20984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40313:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                              "typeString": "literal_string \"log(string,bool,bool,string)\""
                            },
                            "value": "log(string,bool,bool,string)"
                          },
                          {
                            "id": 20985,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20972,
                            "src": "40345:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20986,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20974,
                            "src": "40349:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20987,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20976,
                            "src": "40353:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20988,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20978,
                            "src": "40357:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                              "typeString": "literal_string \"log(string,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20982,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40289:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40293:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40289:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40289:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20981,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "40273:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40273:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20991,
                  "nodeType": "ExpressionStatement",
                  "src": "40273:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40191:3:14",
            "parameters": {
              "id": 20979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20972,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40209:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20993,
                  "src": "40195:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20971,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40195:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20974,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40218:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20993,
                  "src": "40213:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20973,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40213:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20976,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40227:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20993,
                  "src": "40222:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20975,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40222:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20978,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40245:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 20993,
                  "src": "40231:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20977,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40231:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40194:54:14"
            },
            "returnParameters": {
              "id": 20980,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40263:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21016,
            "nodeType": "FunctionDefinition",
            "src": "40374:175:14",
            "body": {
              "id": 21015,
              "nodeType": "Block",
              "src": "40446:103:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 21007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40496:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                              "typeString": "literal_string \"log(string,bool,bool,bool)\""
                            },
                            "value": "log(string,bool,bool,bool)"
                          },
                          {
                            "id": 21008,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20995,
                            "src": "40526:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21009,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20997,
                            "src": "40530:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21010,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20999,
                            "src": "40534:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21011,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21001,
                            "src": "40538:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                              "typeString": "literal_string \"log(string,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21005,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40472:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40476:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40472:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40472:69:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21004,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "40456:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40456:86:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21014,
                  "nodeType": "ExpressionStatement",
                  "src": "40456:86:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40383:3:14",
            "parameters": {
              "id": 21002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20995,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40401:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21016,
                  "src": "40387:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20994,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40387:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20997,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40410:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21016,
                  "src": "40405:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20996,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40405:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20999,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40419:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21016,
                  "src": "40414:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20998,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40414:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21001,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40428:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21016,
                  "src": "40423:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21000,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40423:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40386:45:14"
            },
            "returnParameters": {
              "id": 21003,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40446:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21039,
            "nodeType": "FunctionDefinition",
            "src": "40555:181:14",
            "body": {
              "id": 21038,
              "nodeType": "Block",
              "src": "40630:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 21030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40680:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                              "typeString": "literal_string \"log(string,bool,bool,address)\""
                            },
                            "value": "log(string,bool,bool,address)"
                          },
                          {
                            "id": 21031,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21018,
                            "src": "40713:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21032,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21020,
                            "src": "40717:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21033,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21022,
                            "src": "40721:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21034,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21024,
                            "src": "40725:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                              "typeString": "literal_string \"log(string,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21028,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40656:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40660:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40656:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40656:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21027,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "40640:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40640:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21037,
                  "nodeType": "ExpressionStatement",
                  "src": "40640:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40564:3:14",
            "parameters": {
              "id": 21025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21018,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40582:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21039,
                  "src": "40568:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21017,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40568:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21020,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40591:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21039,
                  "src": "40586:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21019,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40586:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21022,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40600:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21039,
                  "src": "40595:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21021,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40595:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21024,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40612:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21039,
                  "src": "40604:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21023,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40604:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40567:48:14"
            },
            "returnParameters": {
              "id": 21026,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40630:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21062,
            "nodeType": "FunctionDefinition",
            "src": "40742:187:14",
            "body": {
              "id": 21061,
              "nodeType": "Block",
              "src": "40820:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c75696e7432353629",
                            "id": 21053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40870:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d08bb051545e1af26b8dc05172e6aa8a0bd85212ec19e971b10cea364c21531",
                              "typeString": "literal_string \"log(string,bool,address,uint256)\""
                            },
                            "value": "log(string,bool,address,uint256)"
                          },
                          {
                            "id": 21054,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21041,
                            "src": "40906:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21055,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21043,
                            "src": "40910:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21056,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21045,
                            "src": "40914:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21057,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21047,
                            "src": "40918:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d08bb051545e1af26b8dc05172e6aa8a0bd85212ec19e971b10cea364c21531",
                              "typeString": "literal_string \"log(string,bool,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21051,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40846:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40850:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40846:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21058,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40846:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21050,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "40830:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40830:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21060,
                  "nodeType": "ExpressionStatement",
                  "src": "40830:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40751:3:14",
            "parameters": {
              "id": 21048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21041,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40769:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21062,
                  "src": "40755:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21040,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40755:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21043,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40778:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21062,
                  "src": "40773:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21042,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40773:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21045,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40790:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21062,
                  "src": "40782:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40782:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21047,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40802:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21062,
                  "src": "40794:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21046,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "40794:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40754:51:14"
            },
            "returnParameters": {
              "id": 21049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40820:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21085,
            "nodeType": "FunctionDefinition",
            "src": "40935:192:14",
            "body": {
              "id": 21084,
              "nodeType": "Block",
              "src": "41019:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c737472696e6729",
                            "id": 21076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41069:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                              "typeString": "literal_string \"log(string,bool,address,string)\""
                            },
                            "value": "log(string,bool,address,string)"
                          },
                          {
                            "id": 21077,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21064,
                            "src": "41104:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21078,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21066,
                            "src": "41108:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21079,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21068,
                            "src": "41112:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21080,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21070,
                            "src": "41116:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                              "typeString": "literal_string \"log(string,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21074,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41045:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41049:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41045:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41045:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21073,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "41029:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41029:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21083,
                  "nodeType": "ExpressionStatement",
                  "src": "41029:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40944:3:14",
            "parameters": {
              "id": 21071,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21064,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40962:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21085,
                  "src": "40948:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21063,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40948:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21066,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40971:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21085,
                  "src": "40966:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21065,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40966:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21068,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40983:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21085,
                  "src": "40975:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21067,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40975:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21070,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41001:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21085,
                  "src": "40987:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21069,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40987:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40947:57:14"
            },
            "returnParameters": {
              "id": 21072,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41019:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21108,
            "nodeType": "FunctionDefinition",
            "src": "41133:181:14",
            "body": {
              "id": 21107,
              "nodeType": "Block",
              "src": "41208:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 21099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41258:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                              "typeString": "literal_string \"log(string,bool,address,bool)\""
                            },
                            "value": "log(string,bool,address,bool)"
                          },
                          {
                            "id": 21100,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21087,
                            "src": "41291:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21101,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21089,
                            "src": "41295:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21102,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21091,
                            "src": "41299:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21103,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21093,
                            "src": "41303:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                              "typeString": "literal_string \"log(string,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21097,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41234:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41238:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41234:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41234:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21096,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "41218:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41218:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21106,
                  "nodeType": "ExpressionStatement",
                  "src": "41218:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41142:3:14",
            "parameters": {
              "id": 21094,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21087,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41160:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21108,
                  "src": "41146:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21086,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41146:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21089,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41169:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21108,
                  "src": "41164:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21088,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41164:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21091,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41181:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21108,
                  "src": "41173:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21090,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41173:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21093,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41190:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21108,
                  "src": "41185:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21092,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41185:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41145:48:14"
            },
            "returnParameters": {
              "id": 21095,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41208:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21131,
            "nodeType": "FunctionDefinition",
            "src": "41320:187:14",
            "body": {
              "id": 21130,
              "nodeType": "Block",
              "src": "41398:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c6164647265737329",
                            "id": 21122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41448:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                              "typeString": "literal_string \"log(string,bool,address,address)\""
                            },
                            "value": "log(string,bool,address,address)"
                          },
                          {
                            "id": 21123,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21110,
                            "src": "41484:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21124,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21112,
                            "src": "41488:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21125,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21114,
                            "src": "41492:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21126,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21116,
                            "src": "41496:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                              "typeString": "literal_string \"log(string,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21120,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41424:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41428:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41424:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41424:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21119,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "41408:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41408:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21129,
                  "nodeType": "ExpressionStatement",
                  "src": "41408:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41329:3:14",
            "parameters": {
              "id": 21117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21110,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41347:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21131,
                  "src": "41333:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21109,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41333:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21112,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41356:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21131,
                  "src": "41351:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21111,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41351:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21114,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41368:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21131,
                  "src": "41360:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41360:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21116,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41380:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21131,
                  "src": "41372:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41372:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41332:51:14"
            },
            "returnParameters": {
              "id": 21118,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41398:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21154,
            "nodeType": "FunctionDefinition",
            "src": "41513:193:14",
            "body": {
              "id": 21153,
              "nodeType": "Block",
              "src": "41594:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e743235362c75696e7432353629",
                            "id": 21145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41644:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f8f51b1efa50f24f22e6d84ce2fe784a33e1301484ada1546e913ae05d6370e9",
                              "typeString": "literal_string \"log(string,address,uint256,uint256)\""
                            },
                            "value": "log(string,address,uint256,uint256)"
                          },
                          {
                            "id": 21146,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21133,
                            "src": "41683:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21147,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21135,
                            "src": "41687:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21148,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21137,
                            "src": "41691:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21149,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21139,
                            "src": "41695:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f8f51b1efa50f24f22e6d84ce2fe784a33e1301484ada1546e913ae05d6370e9",
                              "typeString": "literal_string \"log(string,address,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21143,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41620:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41624:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41620:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41620:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21142,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "41604:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41604:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21152,
                  "nodeType": "ExpressionStatement",
                  "src": "41604:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41522:3:14",
            "parameters": {
              "id": 21140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21133,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41540:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21154,
                  "src": "41526:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41526:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21135,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41552:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21154,
                  "src": "41544:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21134,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41544:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21137,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41564:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21154,
                  "src": "41556:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "41556:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21139,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41576:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21154,
                  "src": "41568:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21138,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "41568:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41525:54:14"
            },
            "returnParameters": {
              "id": 21141,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41594:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21177,
            "nodeType": "FunctionDefinition",
            "src": "41712:198:14",
            "body": {
              "id": 21176,
              "nodeType": "Block",
              "src": "41799:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e743235362c737472696e6729",
                            "id": 21168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41849:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5a477632ed0f8b7872a83c9247644de555db395491f2f355c6edb676d8bcb46c",
                              "typeString": "literal_string \"log(string,address,uint256,string)\""
                            },
                            "value": "log(string,address,uint256,string)"
                          },
                          {
                            "id": 21169,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21156,
                            "src": "41887:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21170,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21158,
                            "src": "41891:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21171,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21160,
                            "src": "41895:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21172,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21162,
                            "src": "41899:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5a477632ed0f8b7872a83c9247644de555db395491f2f355c6edb676d8bcb46c",
                              "typeString": "literal_string \"log(string,address,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21166,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41825:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41829:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41825:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41825:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21165,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "41809:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41809:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21175,
                  "nodeType": "ExpressionStatement",
                  "src": "41809:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41721:3:14",
            "parameters": {
              "id": 21163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21156,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41739:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21177,
                  "src": "41725:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21155,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41725:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21158,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41751:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21177,
                  "src": "41743:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41743:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21160,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41763:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21177,
                  "src": "41755:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "41755:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21162,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41781:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21177,
                  "src": "41767:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21161,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41767:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41724:60:14"
            },
            "returnParameters": {
              "id": 21164,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41799:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21200,
            "nodeType": "FunctionDefinition",
            "src": "41916:187:14",
            "body": {
              "id": 21199,
              "nodeType": "Block",
              "src": "41994:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e743235362c626f6f6c29",
                            "id": 21191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42044:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fc4845f029f76ed29f7b800fe92a7851214073a807806d7d808676b2cbe7a1c7",
                              "typeString": "literal_string \"log(string,address,uint256,bool)\""
                            },
                            "value": "log(string,address,uint256,bool)"
                          },
                          {
                            "id": 21192,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21179,
                            "src": "42080:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21193,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21181,
                            "src": "42084:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21194,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21183,
                            "src": "42088:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21195,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21185,
                            "src": "42092:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fc4845f029f76ed29f7b800fe92a7851214073a807806d7d808676b2cbe7a1c7",
                              "typeString": "literal_string \"log(string,address,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21189,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42020:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42024:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42020:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42020:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21188,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "42004:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42004:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21198,
                  "nodeType": "ExpressionStatement",
                  "src": "42004:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41925:3:14",
            "parameters": {
              "id": 21186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21179,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41943:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21200,
                  "src": "41929:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21178,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41929:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21181,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41955:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21200,
                  "src": "41947:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21180,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41947:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21183,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41967:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21200,
                  "src": "41959:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "41959:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21185,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41976:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21200,
                  "src": "41971:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21184,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41971:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41928:51:14"
            },
            "returnParameters": {
              "id": 21187,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41994:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21223,
            "nodeType": "FunctionDefinition",
            "src": "42109:193:14",
            "body": {
              "id": 21222,
              "nodeType": "Block",
              "src": "42190:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e743235362c6164647265737329",
                            "id": 21214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42240:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_63fb8bc57476e3f2139504feb3fa304f43eeecc15ac8e150b7b3c9fdfa4ea83a",
                              "typeString": "literal_string \"log(string,address,uint256,address)\""
                            },
                            "value": "log(string,address,uint256,address)"
                          },
                          {
                            "id": 21215,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21202,
                            "src": "42279:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21216,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21204,
                            "src": "42283:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21217,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21206,
                            "src": "42287:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21218,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21208,
                            "src": "42291:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_63fb8bc57476e3f2139504feb3fa304f43eeecc15ac8e150b7b3c9fdfa4ea83a",
                              "typeString": "literal_string \"log(string,address,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21212,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42216:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42220:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42216:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42216:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21211,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "42200:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42200:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21221,
                  "nodeType": "ExpressionStatement",
                  "src": "42200:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42118:3:14",
            "parameters": {
              "id": 21209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21202,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42136:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21223,
                  "src": "42122:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21201,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42122:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21204,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42148:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21223,
                  "src": "42140:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42140:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21206,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42160:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21223,
                  "src": "42152:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21205,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "42152:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21208,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42172:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21223,
                  "src": "42164:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21207,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42164:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42121:54:14"
            },
            "returnParameters": {
              "id": 21210,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42190:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21246,
            "nodeType": "FunctionDefinition",
            "src": "42308:198:14",
            "body": {
              "id": 21245,
              "nodeType": "Block",
              "src": "42395:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c75696e7432353629",
                            "id": 21237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42445:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_91d1112e9ca774de680c78512401449500c1938a4e449f6e73f80a84d95cfcfd",
                              "typeString": "literal_string \"log(string,address,string,uint256)\""
                            },
                            "value": "log(string,address,string,uint256)"
                          },
                          {
                            "id": 21238,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21225,
                            "src": "42483:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21239,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21227,
                            "src": "42487:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21240,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21229,
                            "src": "42491:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21241,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21231,
                            "src": "42495:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_91d1112e9ca774de680c78512401449500c1938a4e449f6e73f80a84d95cfcfd",
                              "typeString": "literal_string \"log(string,address,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21235,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42421:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42425:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42421:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42421:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21234,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "42405:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42405:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21244,
                  "nodeType": "ExpressionStatement",
                  "src": "42405:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42317:3:14",
            "parameters": {
              "id": 21232,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21225,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42335:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "42321:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21224,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42321:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21227,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42347:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "42339:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21226,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42339:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21229,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42365:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "42351:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21228,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42351:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21231,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42377:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21246,
                  "src": "42369:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21230,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "42369:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42320:60:14"
            },
            "returnParameters": {
              "id": 21233,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42395:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21269,
            "nodeType": "FunctionDefinition",
            "src": "42512:203:14",
            "body": {
              "id": 21268,
              "nodeType": "Block",
              "src": "42605:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c737472696e6729",
                            "id": 21260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42655:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                              "typeString": "literal_string \"log(string,address,string,string)\""
                            },
                            "value": "log(string,address,string,string)"
                          },
                          {
                            "id": 21261,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21248,
                            "src": "42692:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21262,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21250,
                            "src": "42696:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21263,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21252,
                            "src": "42700:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21264,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21254,
                            "src": "42704:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                              "typeString": "literal_string \"log(string,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21258,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42631:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42635:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42631:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42631:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21257,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "42615:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42615:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21267,
                  "nodeType": "ExpressionStatement",
                  "src": "42615:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42521:3:14",
            "parameters": {
              "id": 21255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21248,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42539:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21269,
                  "src": "42525:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21247,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42525:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21250,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42551:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21269,
                  "src": "42543:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21249,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42543:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21252,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42569:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21269,
                  "src": "42555:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21251,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42555:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21254,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42587:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21269,
                  "src": "42573:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21253,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42573:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42524:66:14"
            },
            "returnParameters": {
              "id": 21256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42605:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21292,
            "nodeType": "FunctionDefinition",
            "src": "42721:192:14",
            "body": {
              "id": 21291,
              "nodeType": "Block",
              "src": "42805:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c626f6f6c29",
                            "id": 21283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42855:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                              "typeString": "literal_string \"log(string,address,string,bool)\""
                            },
                            "value": "log(string,address,string,bool)"
                          },
                          {
                            "id": 21284,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21271,
                            "src": "42890:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21285,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21273,
                            "src": "42894:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21286,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21275,
                            "src": "42898:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21287,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21277,
                            "src": "42902:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                              "typeString": "literal_string \"log(string,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21281,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42831:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42835:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42831:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42831:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21280,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "42815:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42815:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21290,
                  "nodeType": "ExpressionStatement",
                  "src": "42815:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42730:3:14",
            "parameters": {
              "id": 21278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21271,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42748:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21292,
                  "src": "42734:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21270,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42734:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21273,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42760:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21292,
                  "src": "42752:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21272,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42752:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21275,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42778:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21292,
                  "src": "42764:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21274,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42764:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21277,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21292,
                  "src": "42782:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21276,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "42782:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42733:57:14"
            },
            "returnParameters": {
              "id": 21279,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42805:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21315,
            "nodeType": "FunctionDefinition",
            "src": "42919:198:14",
            "body": {
              "id": 21314,
              "nodeType": "Block",
              "src": "43006:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c6164647265737329",
                            "id": 21306,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43056:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                              "typeString": "literal_string \"log(string,address,string,address)\""
                            },
                            "value": "log(string,address,string,address)"
                          },
                          {
                            "id": 21307,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21294,
                            "src": "43094:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21308,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21296,
                            "src": "43098:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21309,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21298,
                            "src": "43102:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21310,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21300,
                            "src": "43106:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                              "typeString": "literal_string \"log(string,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21304,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43032:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43036:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43032:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43032:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21303,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43016:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43016:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21313,
                  "nodeType": "ExpressionStatement",
                  "src": "43016:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42928:3:14",
            "parameters": {
              "id": 21301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21294,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42946:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21315,
                  "src": "42932:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21293,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42932:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21296,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42958:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21315,
                  "src": "42950:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21295,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42950:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21298,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42976:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21315,
                  "src": "42962:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21297,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42962:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21300,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42988:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21315,
                  "src": "42980:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21299,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42980:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42931:60:14"
            },
            "returnParameters": {
              "id": 21302,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43006:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21338,
            "nodeType": "FunctionDefinition",
            "src": "43123:187:14",
            "body": {
              "id": 21337,
              "nodeType": "Block",
              "src": "43201:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c75696e7432353629",
                            "id": 21329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43251:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e9f866aadef9b1f2b0257e0ed5e2df8882ba55e598b4f5282674b64ae3f06b5",
                              "typeString": "literal_string \"log(string,address,bool,uint256)\""
                            },
                            "value": "log(string,address,bool,uint256)"
                          },
                          {
                            "id": 21330,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21317,
                            "src": "43287:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21331,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21319,
                            "src": "43291:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21332,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21321,
                            "src": "43295:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21333,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21323,
                            "src": "43299:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3e9f866aadef9b1f2b0257e0ed5e2df8882ba55e598b4f5282674b64ae3f06b5",
                              "typeString": "literal_string \"log(string,address,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21327,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43227:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43231:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43227:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21334,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43227:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21326,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43211:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43211:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21336,
                  "nodeType": "ExpressionStatement",
                  "src": "43211:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43132:3:14",
            "parameters": {
              "id": 21324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21317,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43150:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21338,
                  "src": "43136:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21316,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43136:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21319,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43162:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21338,
                  "src": "43154:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21318,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43154:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21321,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43171:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21338,
                  "src": "43166:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21320,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43166:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21323,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43183:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21338,
                  "src": "43175:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21322,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "43175:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43135:51:14"
            },
            "returnParameters": {
              "id": 21325,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43201:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21361,
            "nodeType": "FunctionDefinition",
            "src": "43316:192:14",
            "body": {
              "id": 21360,
              "nodeType": "Block",
              "src": "43400:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c737472696e6729",
                            "id": 21352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43450:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                              "typeString": "literal_string \"log(string,address,bool,string)\""
                            },
                            "value": "log(string,address,bool,string)"
                          },
                          {
                            "id": 21353,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21340,
                            "src": "43485:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21354,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21342,
                            "src": "43489:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21355,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21344,
                            "src": "43493:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21356,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21346,
                            "src": "43497:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                              "typeString": "literal_string \"log(string,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21350,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43426:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43430:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43426:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43426:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21349,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43410:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43410:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21359,
                  "nodeType": "ExpressionStatement",
                  "src": "43410:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43325:3:14",
            "parameters": {
              "id": 21347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21340,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43343:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21361,
                  "src": "43329:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21339,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43329:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21342,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43355:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21361,
                  "src": "43347:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21341,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43347:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21344,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43364:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21361,
                  "src": "43359:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21343,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43359:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21346,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43382:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21361,
                  "src": "43368:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21345,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43368:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43328:57:14"
            },
            "returnParameters": {
              "id": 21348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43400:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21384,
            "nodeType": "FunctionDefinition",
            "src": "43514:181:14",
            "body": {
              "id": 21383,
              "nodeType": "Block",
              "src": "43589:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 21375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43639:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                              "typeString": "literal_string \"log(string,address,bool,bool)\""
                            },
                            "value": "log(string,address,bool,bool)"
                          },
                          {
                            "id": 21376,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21363,
                            "src": "43672:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21377,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21365,
                            "src": "43676:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21378,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21367,
                            "src": "43680:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21379,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21369,
                            "src": "43684:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                              "typeString": "literal_string \"log(string,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21373,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43615:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43619:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43615:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43615:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21372,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43599:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43599:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21382,
                  "nodeType": "ExpressionStatement",
                  "src": "43599:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43523:3:14",
            "parameters": {
              "id": 21370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21363,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43541:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21384,
                  "src": "43527:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21362,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43527:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21365,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43553:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21384,
                  "src": "43545:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21364,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43545:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21367,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43562:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21384,
                  "src": "43557:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21366,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43557:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21369,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43571:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21384,
                  "src": "43566:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21368,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43566:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43526:48:14"
            },
            "returnParameters": {
              "id": 21371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43589:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21407,
            "nodeType": "FunctionDefinition",
            "src": "43701:187:14",
            "body": {
              "id": 21406,
              "nodeType": "Block",
              "src": "43779:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c6164647265737329",
                            "id": 21398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43829:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                              "typeString": "literal_string \"log(string,address,bool,address)\""
                            },
                            "value": "log(string,address,bool,address)"
                          },
                          {
                            "id": 21399,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21386,
                            "src": "43865:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21400,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21388,
                            "src": "43869:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21401,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21390,
                            "src": "43873:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21402,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21392,
                            "src": "43877:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                              "typeString": "literal_string \"log(string,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21396,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43805:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43809:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43805:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43805:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21395,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43789:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43789:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21405,
                  "nodeType": "ExpressionStatement",
                  "src": "43789:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43710:3:14",
            "parameters": {
              "id": 21393,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21386,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43728:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21407,
                  "src": "43714:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21385,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43714:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21388,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43740:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21407,
                  "src": "43732:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21387,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43732:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21390,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43749:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21407,
                  "src": "43744:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21389,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43744:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21392,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43761:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21407,
                  "src": "43753:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21391,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43753:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43713:51:14"
            },
            "returnParameters": {
              "id": 21394,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43779:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21430,
            "nodeType": "FunctionDefinition",
            "src": "43894:193:14",
            "body": {
              "id": 21429,
              "nodeType": "Block",
              "src": "43975:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c75696e7432353629",
                            "id": 21421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44025:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8ef3f399de1ebecd7840dee5f4cdc1bad43021ab37fa3acdd3dfbd36f7092e7b",
                              "typeString": "literal_string \"log(string,address,address,uint256)\""
                            },
                            "value": "log(string,address,address,uint256)"
                          },
                          {
                            "id": 21422,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21409,
                            "src": "44064:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21423,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21411,
                            "src": "44068:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21424,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21413,
                            "src": "44072:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21425,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21415,
                            "src": "44076:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8ef3f399de1ebecd7840dee5f4cdc1bad43021ab37fa3acdd3dfbd36f7092e7b",
                              "typeString": "literal_string \"log(string,address,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21419,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44001:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44005:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44001:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21426,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44001:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21418,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "43985:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21427,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43985:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21428,
                  "nodeType": "ExpressionStatement",
                  "src": "43985:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43903:3:14",
            "parameters": {
              "id": 21416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21409,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43921:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21430,
                  "src": "43907:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21408,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43907:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21411,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43933:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21430,
                  "src": "43925:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21410,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43925:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21413,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43945:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21430,
                  "src": "43937:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21412,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43937:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21415,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43957:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21430,
                  "src": "43949:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "43949:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43906:54:14"
            },
            "returnParameters": {
              "id": 21417,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43975:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21453,
            "nodeType": "FunctionDefinition",
            "src": "44093:198:14",
            "body": {
              "id": 21452,
              "nodeType": "Block",
              "src": "44180:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c737472696e6729",
                            "id": 21444,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44230:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                              "typeString": "literal_string \"log(string,address,address,string)\""
                            },
                            "value": "log(string,address,address,string)"
                          },
                          {
                            "id": 21445,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21432,
                            "src": "44268:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21446,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21434,
                            "src": "44272:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21447,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21436,
                            "src": "44276:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21448,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21438,
                            "src": "44280:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                              "typeString": "literal_string \"log(string,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21442,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44206:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44210:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44206:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44206:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21441,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "44190:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21450,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44190:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21451,
                  "nodeType": "ExpressionStatement",
                  "src": "44190:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44102:3:14",
            "parameters": {
              "id": 21439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21432,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44120:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21453,
                  "src": "44106:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21431,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44106:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21434,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44132:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21453,
                  "src": "44124:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21433,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44124:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21436,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44144:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21453,
                  "src": "44136:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21435,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44136:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21438,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44162:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21453,
                  "src": "44148:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21437,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44148:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44105:60:14"
            },
            "returnParameters": {
              "id": 21440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44180:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21476,
            "nodeType": "FunctionDefinition",
            "src": "44297:187:14",
            "body": {
              "id": 21475,
              "nodeType": "Block",
              "src": "44375:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c626f6f6c29",
                            "id": 21467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44425:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                              "typeString": "literal_string \"log(string,address,address,bool)\""
                            },
                            "value": "log(string,address,address,bool)"
                          },
                          {
                            "id": 21468,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21455,
                            "src": "44461:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21469,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21457,
                            "src": "44465:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21470,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21459,
                            "src": "44469:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21471,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21461,
                            "src": "44473:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                              "typeString": "literal_string \"log(string,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21465,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44401:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44405:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44401:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44401:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21464,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "44385:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21473,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44385:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21474,
                  "nodeType": "ExpressionStatement",
                  "src": "44385:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44306:3:14",
            "parameters": {
              "id": 21462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21455,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44324:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21476,
                  "src": "44310:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21454,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44310:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21457,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44336:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21476,
                  "src": "44328:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21456,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44328:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21459,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44348:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21476,
                  "src": "44340:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21458,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44340:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21461,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44357:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21476,
                  "src": "44352:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21460,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44352:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44309:51:14"
            },
            "returnParameters": {
              "id": 21463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44375:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21499,
            "nodeType": "FunctionDefinition",
            "src": "44490:193:14",
            "body": {
              "id": 21498,
              "nodeType": "Block",
              "src": "44571:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c6164647265737329",
                            "id": 21490,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44621:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                              "typeString": "literal_string \"log(string,address,address,address)\""
                            },
                            "value": "log(string,address,address,address)"
                          },
                          {
                            "id": 21491,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21478,
                            "src": "44660:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21492,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21480,
                            "src": "44664:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21493,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21482,
                            "src": "44668:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21494,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21484,
                            "src": "44672:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                              "typeString": "literal_string \"log(string,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21488,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44597:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44601:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44597:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44597:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21487,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "44581:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44581:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21497,
                  "nodeType": "ExpressionStatement",
                  "src": "44581:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44499:3:14",
            "parameters": {
              "id": 21485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21478,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44517:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21499,
                  "src": "44503:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21477,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44503:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21480,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44529:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21499,
                  "src": "44521:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44521:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21482,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44541:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21499,
                  "src": "44533:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21481,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44533:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21484,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44553:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21499,
                  "src": "44545:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21483,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44545:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44502:54:14"
            },
            "returnParameters": {
              "id": 21486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44571:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21522,
            "nodeType": "FunctionDefinition",
            "src": "44689:182:14",
            "body": {
              "id": 21521,
              "nodeType": "Block",
              "src": "44761:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c75696e743235362c75696e7432353629",
                            "id": 21513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44811:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_374bb4b29e495d2b557643d341fe72136bf6e92f2ac9b1edd86dbbd72a19d62b",
                              "typeString": "literal_string \"log(bool,uint256,uint256,uint256)\""
                            },
                            "value": "log(bool,uint256,uint256,uint256)"
                          },
                          {
                            "id": 21514,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21501,
                            "src": "44848:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21515,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21503,
                            "src": "44852:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21516,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21505,
                            "src": "44856:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21517,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21507,
                            "src": "44860:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_374bb4b29e495d2b557643d341fe72136bf6e92f2ac9b1edd86dbbd72a19d62b",
                              "typeString": "literal_string \"log(bool,uint256,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21511,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44787:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44791:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44787:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21518,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44787:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21510,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "44771:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44771:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21520,
                  "nodeType": "ExpressionStatement",
                  "src": "44771:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44698:3:14",
            "parameters": {
              "id": 21508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21501,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44707:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21522,
                  "src": "44702:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21500,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44702:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21503,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44719:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21522,
                  "src": "44711:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "44711:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21505,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44731:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21522,
                  "src": "44723:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21504,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "44723:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21507,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44743:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21522,
                  "src": "44735:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "44735:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44701:45:14"
            },
            "returnParameters": {
              "id": 21509,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44761:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21545,
            "nodeType": "FunctionDefinition",
            "src": "44877:187:14",
            "body": {
              "id": 21544,
              "nodeType": "Block",
              "src": "44955:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c75696e743235362c737472696e6729",
                            "id": 21536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45005:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8e69fb5dd49f06ae0054ca1d4af84221644c5b45a9306505e04580a4156255c3",
                              "typeString": "literal_string \"log(bool,uint256,uint256,string)\""
                            },
                            "value": "log(bool,uint256,uint256,string)"
                          },
                          {
                            "id": 21537,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21524,
                            "src": "45041:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21538,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21526,
                            "src": "45045:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21539,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21528,
                            "src": "45049:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21540,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21530,
                            "src": "45053:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8e69fb5dd49f06ae0054ca1d4af84221644c5b45a9306505e04580a4156255c3",
                              "typeString": "literal_string \"log(bool,uint256,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21534,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44981:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44985:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44981:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44981:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21533,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "44965:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44965:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21543,
                  "nodeType": "ExpressionStatement",
                  "src": "44965:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44886:3:14",
            "parameters": {
              "id": 21531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21524,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44895:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21545,
                  "src": "44890:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21523,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44890:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21526,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44907:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21545,
                  "src": "44899:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21525,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "44899:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21528,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44919:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21545,
                  "src": "44911:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21527,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "44911:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21530,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44937:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21545,
                  "src": "44923:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21529,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44923:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44889:51:14"
            },
            "returnParameters": {
              "id": 21532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44955:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21568,
            "nodeType": "FunctionDefinition",
            "src": "45070:176:14",
            "body": {
              "id": 21567,
              "nodeType": "Block",
              "src": "45139:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c75696e743235362c626f6f6c29",
                            "id": 21559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45189:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_be9843530e69b1feba88a3a9701a6984aaa8a57e749a7f9d10c857993e79900d",
                              "typeString": "literal_string \"log(bool,uint256,uint256,bool)\""
                            },
                            "value": "log(bool,uint256,uint256,bool)"
                          },
                          {
                            "id": 21560,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21547,
                            "src": "45223:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21561,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21549,
                            "src": "45227:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21562,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21551,
                            "src": "45231:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21563,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21553,
                            "src": "45235:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_be9843530e69b1feba88a3a9701a6984aaa8a57e749a7f9d10c857993e79900d",
                              "typeString": "literal_string \"log(bool,uint256,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21557,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45165:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45169:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45165:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45165:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21556,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "45149:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45149:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21566,
                  "nodeType": "ExpressionStatement",
                  "src": "45149:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45079:3:14",
            "parameters": {
              "id": 21554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21547,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45088:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21568,
                  "src": "45083:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21546,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45083:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21549,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45100:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21568,
                  "src": "45092:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21548,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45092:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21551,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45112:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21568,
                  "src": "45104:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45104:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21553,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45121:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21568,
                  "src": "45116:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21552,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45116:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45082:42:14"
            },
            "returnParameters": {
              "id": 21555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45139:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21591,
            "nodeType": "FunctionDefinition",
            "src": "45252:182:14",
            "body": {
              "id": 21590,
              "nodeType": "Block",
              "src": "45324:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c75696e743235362c6164647265737329",
                            "id": 21582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45374:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_00dd87b926eb0a94d5705f2c40026359b9577dfd5ddb2d0d51c86b3f4acb5010",
                              "typeString": "literal_string \"log(bool,uint256,uint256,address)\""
                            },
                            "value": "log(bool,uint256,uint256,address)"
                          },
                          {
                            "id": 21583,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21570,
                            "src": "45411:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21584,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21572,
                            "src": "45415:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21585,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21574,
                            "src": "45419:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21586,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21576,
                            "src": "45423:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_00dd87b926eb0a94d5705f2c40026359b9577dfd5ddb2d0d51c86b3f4acb5010",
                              "typeString": "literal_string \"log(bool,uint256,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21580,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45350:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45354:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45350:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45350:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21579,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "45334:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45334:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21589,
                  "nodeType": "ExpressionStatement",
                  "src": "45334:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45261:3:14",
            "parameters": {
              "id": 21577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21570,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45270:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21591,
                  "src": "45265:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21569,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45265:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21572,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45282:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21591,
                  "src": "45274:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45274:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21574,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45294:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21591,
                  "src": "45286:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45286:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21576,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45306:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21591,
                  "src": "45298:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21575,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45298:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45264:45:14"
            },
            "returnParameters": {
              "id": 21578,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45324:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21614,
            "nodeType": "FunctionDefinition",
            "src": "45440:187:14",
            "body": {
              "id": 21613,
              "nodeType": "Block",
              "src": "45518:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c737472696e672c75696e7432353629",
                            "id": 21605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45568:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6a1199e21848ce015eabd66ea7f6a3409c7fc6ef9bb322d84e4c06706c42747e",
                              "typeString": "literal_string \"log(bool,uint256,string,uint256)\""
                            },
                            "value": "log(bool,uint256,string,uint256)"
                          },
                          {
                            "id": 21606,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21593,
                            "src": "45604:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21607,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21595,
                            "src": "45608:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21608,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21597,
                            "src": "45612:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21609,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21599,
                            "src": "45616:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6a1199e21848ce015eabd66ea7f6a3409c7fc6ef9bb322d84e4c06706c42747e",
                              "typeString": "literal_string \"log(bool,uint256,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21603,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45544:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45548:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45544:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45544:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21602,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "45528:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45528:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21612,
                  "nodeType": "ExpressionStatement",
                  "src": "45528:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45449:3:14",
            "parameters": {
              "id": 21600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21593,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45458:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21614,
                  "src": "45453:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21592,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45453:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21595,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45470:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21614,
                  "src": "45462:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45462:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21597,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45488:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21614,
                  "src": "45474:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21596,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45474:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21599,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45500:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21614,
                  "src": "45492:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45492:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45452:51:14"
            },
            "returnParameters": {
              "id": 21601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45518:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21637,
            "nodeType": "FunctionDefinition",
            "src": "45633:192:14",
            "body": {
              "id": 21636,
              "nodeType": "Block",
              "src": "45717:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c737472696e672c737472696e6729",
                            "id": 21628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45767:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f5bc2249bce1f463dc4a6cae73d4e7be2aab36b6885cd1506575f16575a67f07",
                              "typeString": "literal_string \"log(bool,uint256,string,string)\""
                            },
                            "value": "log(bool,uint256,string,string)"
                          },
                          {
                            "id": 21629,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21616,
                            "src": "45802:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21630,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21618,
                            "src": "45806:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21631,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21620,
                            "src": "45810:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21632,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21622,
                            "src": "45814:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f5bc2249bce1f463dc4a6cae73d4e7be2aab36b6885cd1506575f16575a67f07",
                              "typeString": "literal_string \"log(bool,uint256,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21626,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45743:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45747:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45743:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45743:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21625,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "45727:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45727:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21635,
                  "nodeType": "ExpressionStatement",
                  "src": "45727:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45642:3:14",
            "parameters": {
              "id": 21623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21616,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45651:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21637,
                  "src": "45646:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21615,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45646:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21618,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45663:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21637,
                  "src": "45655:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21617,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45655:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21620,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45681:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21637,
                  "src": "45667:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21619,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45667:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21622,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45699:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21637,
                  "src": "45685:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21621,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45685:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45645:57:14"
            },
            "returnParameters": {
              "id": 21624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45717:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21660,
            "nodeType": "FunctionDefinition",
            "src": "45831:181:14",
            "body": {
              "id": 21659,
              "nodeType": "Block",
              "src": "45906:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c737472696e672c626f6f6c29",
                            "id": 21651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45956:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e5e70b2b79ba63a1232a1075e7d527614bad7291574e41ebeb8ef428426395c2",
                              "typeString": "literal_string \"log(bool,uint256,string,bool)\""
                            },
                            "value": "log(bool,uint256,string,bool)"
                          },
                          {
                            "id": 21652,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21639,
                            "src": "45989:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21653,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21641,
                            "src": "45993:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21654,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21643,
                            "src": "45997:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21655,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21645,
                            "src": "46001:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e5e70b2b79ba63a1232a1075e7d527614bad7291574e41ebeb8ef428426395c2",
                              "typeString": "literal_string \"log(bool,uint256,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21649,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45932:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45936:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45932:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45932:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21648,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "45916:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45916:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21658,
                  "nodeType": "ExpressionStatement",
                  "src": "45916:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45840:3:14",
            "parameters": {
              "id": 21646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21639,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45849:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21660,
                  "src": "45844:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21638,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45844:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21641,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45861:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21660,
                  "src": "45853:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "45853:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21643,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21660,
                  "src": "45865:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21642,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45865:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21645,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45888:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21660,
                  "src": "45883:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45883:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45843:48:14"
            },
            "returnParameters": {
              "id": 21647,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45906:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21683,
            "nodeType": "FunctionDefinition",
            "src": "46018:187:14",
            "body": {
              "id": 21682,
              "nodeType": "Block",
              "src": "46096:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c737472696e672c6164647265737329",
                            "id": 21674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46146:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fedd1fffaad08b0e5474b192f50d84da9ca48f54859d4d4f42d00bf3f4781fab",
                              "typeString": "literal_string \"log(bool,uint256,string,address)\""
                            },
                            "value": "log(bool,uint256,string,address)"
                          },
                          {
                            "id": 21675,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21662,
                            "src": "46182:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21676,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21664,
                            "src": "46186:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21677,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21666,
                            "src": "46190:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21678,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21668,
                            "src": "46194:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fedd1fffaad08b0e5474b192f50d84da9ca48f54859d4d4f42d00bf3f4781fab",
                              "typeString": "literal_string \"log(bool,uint256,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21672,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46122:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46126:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46122:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46122:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21671,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "46106:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46106:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21681,
                  "nodeType": "ExpressionStatement",
                  "src": "46106:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46027:3:14",
            "parameters": {
              "id": 21669,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21662,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46036:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21683,
                  "src": "46031:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21661,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46031:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21664,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46048:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21683,
                  "src": "46040:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21663,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46040:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21666,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46066:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21683,
                  "src": "46052:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21665,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46052:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21668,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46078:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21683,
                  "src": "46070:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21667,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "46070:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46030:51:14"
            },
            "returnParameters": {
              "id": 21670,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46096:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21706,
            "nodeType": "FunctionDefinition",
            "src": "46211:176:14",
            "body": {
              "id": 21705,
              "nodeType": "Block",
              "src": "46280:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c626f6f6c2c75696e7432353629",
                            "id": 21697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46330:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7f9bbca288abffbb423da5759392c2bb0e6c7c60dc55ee1c76da7b38adac1443",
                              "typeString": "literal_string \"log(bool,uint256,bool,uint256)\""
                            },
                            "value": "log(bool,uint256,bool,uint256)"
                          },
                          {
                            "id": 21698,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21685,
                            "src": "46364:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21699,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21687,
                            "src": "46368:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21700,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21689,
                            "src": "46372:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21701,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21691,
                            "src": "46376:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7f9bbca288abffbb423da5759392c2bb0e6c7c60dc55ee1c76da7b38adac1443",
                              "typeString": "literal_string \"log(bool,uint256,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21695,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46306:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46310:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46306:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46306:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21694,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "46290:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46290:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21704,
                  "nodeType": "ExpressionStatement",
                  "src": "46290:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46220:3:14",
            "parameters": {
              "id": 21692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21685,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46229:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21706,
                  "src": "46224:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21684,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46224:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21687,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46241:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21706,
                  "src": "46233:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21686,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46233:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21689,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46250:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21706,
                  "src": "46245:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21688,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46245:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21691,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46262:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21706,
                  "src": "46254:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21690,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46254:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46223:42:14"
            },
            "returnParameters": {
              "id": 21693,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46280:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21729,
            "nodeType": "FunctionDefinition",
            "src": "46393:181:14",
            "body": {
              "id": 21728,
              "nodeType": "Block",
              "src": "46468:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c626f6f6c2c737472696e6729",
                            "id": 21720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46518:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9143dbb14a0962a6e3d7ec52e236cb9bf165b86383a96499ea4cf52b827d7ce0",
                              "typeString": "literal_string \"log(bool,uint256,bool,string)\""
                            },
                            "value": "log(bool,uint256,bool,string)"
                          },
                          {
                            "id": 21721,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21708,
                            "src": "46551:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21722,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21710,
                            "src": "46555:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21723,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21712,
                            "src": "46559:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21724,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21714,
                            "src": "46563:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9143dbb14a0962a6e3d7ec52e236cb9bf165b86383a96499ea4cf52b827d7ce0",
                              "typeString": "literal_string \"log(bool,uint256,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21718,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46494:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46498:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46494:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46494:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21717,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "46478:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46478:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21727,
                  "nodeType": "ExpressionStatement",
                  "src": "46478:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46402:3:14",
            "parameters": {
              "id": 21715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21708,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46411:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21729,
                  "src": "46406:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21707,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46406:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21710,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46423:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21729,
                  "src": "46415:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21709,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46415:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21712,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46432:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21729,
                  "src": "46427:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21711,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46427:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21714,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46450:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21729,
                  "src": "46436:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21713,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46436:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46405:48:14"
            },
            "returnParameters": {
              "id": 21716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46468:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21752,
            "nodeType": "FunctionDefinition",
            "src": "46580:170:14",
            "body": {
              "id": 21751,
              "nodeType": "Block",
              "src": "46646:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c626f6f6c2c626f6f6c29",
                            "id": 21743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46696:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ceb5f4d77121f3d3cfafeaa403e6fff70e4470d0bfb40c1d850f89e3d65029f2",
                              "typeString": "literal_string \"log(bool,uint256,bool,bool)\""
                            },
                            "value": "log(bool,uint256,bool,bool)"
                          },
                          {
                            "id": 21744,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21731,
                            "src": "46727:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21745,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21733,
                            "src": "46731:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21746,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21735,
                            "src": "46735:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21747,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21737,
                            "src": "46739:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ceb5f4d77121f3d3cfafeaa403e6fff70e4470d0bfb40c1d850f89e3d65029f2",
                              "typeString": "literal_string \"log(bool,uint256,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21741,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46672:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46676:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46672:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46672:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21740,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "46656:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46656:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21750,
                  "nodeType": "ExpressionStatement",
                  "src": "46656:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46589:3:14",
            "parameters": {
              "id": 21738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21731,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46598:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21752,
                  "src": "46593:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21730,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46593:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21733,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46610:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21752,
                  "src": "46602:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46602:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21735,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46619:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21752,
                  "src": "46614:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21734,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46614:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21737,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46628:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21752,
                  "src": "46623:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21736,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46623:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46592:39:14"
            },
            "returnParameters": {
              "id": 21739,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46646:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21775,
            "nodeType": "FunctionDefinition",
            "src": "46756:176:14",
            "body": {
              "id": 21774,
              "nodeType": "Block",
              "src": "46825:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c626f6f6c2c6164647265737329",
                            "id": 21766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46875:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9acd3616ce3d15d7b870c591206f600266707f40592e6070353f762f54c75a2e",
                              "typeString": "literal_string \"log(bool,uint256,bool,address)\""
                            },
                            "value": "log(bool,uint256,bool,address)"
                          },
                          {
                            "id": 21767,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21754,
                            "src": "46909:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21768,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21756,
                            "src": "46913:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21769,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21758,
                            "src": "46917:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21770,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21760,
                            "src": "46921:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9acd3616ce3d15d7b870c591206f600266707f40592e6070353f762f54c75a2e",
                              "typeString": "literal_string \"log(bool,uint256,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21764,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46851:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46855:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46851:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46851:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21763,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "46835:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46835:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21773,
                  "nodeType": "ExpressionStatement",
                  "src": "46835:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46765:3:14",
            "parameters": {
              "id": 21761,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21754,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46774:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21775,
                  "src": "46769:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21753,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46769:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21756,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46786:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21775,
                  "src": "46778:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21755,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46778:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21758,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46795:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21775,
                  "src": "46790:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21757,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46790:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21760,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46807:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21775,
                  "src": "46799:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21759,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "46799:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46768:42:14"
            },
            "returnParameters": {
              "id": 21762,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46825:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21798,
            "nodeType": "FunctionDefinition",
            "src": "46938:182:14",
            "body": {
              "id": 21797,
              "nodeType": "Block",
              "src": "47010:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c616464726573732c75696e7432353629",
                            "id": 21789,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47060:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1537dc87a2086882c18d77c4157142ca3b6771cb00e940824367191cd9b5e560",
                              "typeString": "literal_string \"log(bool,uint256,address,uint256)\""
                            },
                            "value": "log(bool,uint256,address,uint256)"
                          },
                          {
                            "id": 21790,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21777,
                            "src": "47097:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21791,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21779,
                            "src": "47101:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21792,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21781,
                            "src": "47105:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21793,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21783,
                            "src": "47109:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1537dc87a2086882c18d77c4157142ca3b6771cb00e940824367191cd9b5e560",
                              "typeString": "literal_string \"log(bool,uint256,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21787,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47036:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47040:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47036:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47036:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21786,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47020:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47020:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21796,
                  "nodeType": "ExpressionStatement",
                  "src": "47020:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46947:3:14",
            "parameters": {
              "id": 21784,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21777,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46956:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21798,
                  "src": "46951:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21776,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46951:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21779,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46968:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21798,
                  "src": "46960:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21778,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46960:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21781,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46980:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21798,
                  "src": "46972:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21780,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "46972:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21783,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46992:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21798,
                  "src": "46984:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21782,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "46984:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46950:45:14"
            },
            "returnParameters": {
              "id": 21785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47010:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21821,
            "nodeType": "FunctionDefinition",
            "src": "47126:187:14",
            "body": {
              "id": 21820,
              "nodeType": "Block",
              "src": "47204:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c616464726573732c737472696e6729",
                            "id": 21812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47254:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1bb3b09a4221f0a7df6a4e6e8ee3a14c54c5ebf8032d4ada871c774122536c94",
                              "typeString": "literal_string \"log(bool,uint256,address,string)\""
                            },
                            "value": "log(bool,uint256,address,string)"
                          },
                          {
                            "id": 21813,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21800,
                            "src": "47290:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21814,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21802,
                            "src": "47294:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21815,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21804,
                            "src": "47298:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21816,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21806,
                            "src": "47302:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1bb3b09a4221f0a7df6a4e6e8ee3a14c54c5ebf8032d4ada871c774122536c94",
                              "typeString": "literal_string \"log(bool,uint256,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21810,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47230:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47234:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47230:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47230:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21809,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47214:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47214:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21819,
                  "nodeType": "ExpressionStatement",
                  "src": "47214:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47135:3:14",
            "parameters": {
              "id": 21807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21800,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47144:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21821,
                  "src": "47139:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47139:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21802,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47156:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21821,
                  "src": "47148:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47148:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21804,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47168:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21821,
                  "src": "47160:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47160:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21806,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47186:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21821,
                  "src": "47172:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21805,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47172:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47138:51:14"
            },
            "returnParameters": {
              "id": 21808,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47204:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21844,
            "nodeType": "FunctionDefinition",
            "src": "47319:176:14",
            "body": {
              "id": 21843,
              "nodeType": "Block",
              "src": "47388:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c616464726573732c626f6f6c29",
                            "id": 21835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47438:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b4c314ff4d8914c4657179922b73426f4bcee4ae499bd03b5b3cf557ef247ea8",
                              "typeString": "literal_string \"log(bool,uint256,address,bool)\""
                            },
                            "value": "log(bool,uint256,address,bool)"
                          },
                          {
                            "id": 21836,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21823,
                            "src": "47472:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21837,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21825,
                            "src": "47476:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21838,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21827,
                            "src": "47480:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21839,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21829,
                            "src": "47484:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b4c314ff4d8914c4657179922b73426f4bcee4ae499bd03b5b3cf557ef247ea8",
                              "typeString": "literal_string \"log(bool,uint256,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21833,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47414:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47418:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47414:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47414:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21832,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47398:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47398:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21842,
                  "nodeType": "ExpressionStatement",
                  "src": "47398:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47328:3:14",
            "parameters": {
              "id": 21830,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21823,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47337:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21844,
                  "src": "47332:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21822,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47332:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21825,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47349:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21844,
                  "src": "47341:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47341:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21827,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47361:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21844,
                  "src": "47353:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47353:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21829,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47370:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21844,
                  "src": "47365:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21828,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47365:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47331:42:14"
            },
            "returnParameters": {
              "id": 21831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47388:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21867,
            "nodeType": "FunctionDefinition",
            "src": "47501:182:14",
            "body": {
              "id": 21866,
              "nodeType": "Block",
              "src": "47573:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e743235362c616464726573732c6164647265737329",
                            "id": 21858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47623:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_26f560a852938fadf6addef4dd03c86f93715a295417544d6a793cb20f13b8dd",
                              "typeString": "literal_string \"log(bool,uint256,address,address)\""
                            },
                            "value": "log(bool,uint256,address,address)"
                          },
                          {
                            "id": 21859,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21846,
                            "src": "47660:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21860,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21848,
                            "src": "47664:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21861,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21850,
                            "src": "47668:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21862,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21852,
                            "src": "47672:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_26f560a852938fadf6addef4dd03c86f93715a295417544d6a793cb20f13b8dd",
                              "typeString": "literal_string \"log(bool,uint256,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21856,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47599:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47603:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47599:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47599:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21855,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47583:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47583:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21865,
                  "nodeType": "ExpressionStatement",
                  "src": "47583:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47510:3:14",
            "parameters": {
              "id": 21853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21846,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47519:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21867,
                  "src": "47514:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21845,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47514:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21848,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47531:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21867,
                  "src": "47523:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21847,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47523:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21850,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47543:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21867,
                  "src": "47535:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21849,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47535:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21852,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47555:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21867,
                  "src": "47547:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21851,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47547:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47513:45:14"
            },
            "returnParameters": {
              "id": 21854,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47573:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21890,
            "nodeType": "FunctionDefinition",
            "src": "47689:187:14",
            "body": {
              "id": 21889,
              "nodeType": "Block",
              "src": "47767:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e743235362c75696e7432353629",
                            "id": 21881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47817:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_28863fcbec29a80af15c2b8595f162a2324efa0e9f70b928971349e597c15cb0",
                              "typeString": "literal_string \"log(bool,string,uint256,uint256)\""
                            },
                            "value": "log(bool,string,uint256,uint256)"
                          },
                          {
                            "id": 21882,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21869,
                            "src": "47853:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21883,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21871,
                            "src": "47857:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21884,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21873,
                            "src": "47861:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21885,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21875,
                            "src": "47865:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_28863fcbec29a80af15c2b8595f162a2324efa0e9f70b928971349e597c15cb0",
                              "typeString": "literal_string \"log(bool,string,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21879,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47793:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47797:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47793:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47793:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21878,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47777:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47777:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21888,
                  "nodeType": "ExpressionStatement",
                  "src": "47777:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47698:3:14",
            "parameters": {
              "id": 21876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21869,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47707:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21890,
                  "src": "47702:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21868,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47702:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21871,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47725:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21890,
                  "src": "47711:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21870,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47711:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21873,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47737:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21890,
                  "src": "47729:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21872,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47729:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21875,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47749:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21890,
                  "src": "47741:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47741:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47701:51:14"
            },
            "returnParameters": {
              "id": 21877,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47767:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21913,
            "nodeType": "FunctionDefinition",
            "src": "47882:192:14",
            "body": {
              "id": 21912,
              "nodeType": "Block",
              "src": "47966:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e743235362c737472696e6729",
                            "id": 21904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48016:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ad96de6602c0b08f6631d6647303bccf3e586fcfa2c15fa04c5d6cbf0ffc70d",
                              "typeString": "literal_string \"log(bool,string,uint256,string)\""
                            },
                            "value": "log(bool,string,uint256,string)"
                          },
                          {
                            "id": 21905,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21892,
                            "src": "48051:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21906,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21894,
                            "src": "48055:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21907,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21896,
                            "src": "48059:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21908,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21898,
                            "src": "48063:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1ad96de6602c0b08f6631d6647303bccf3e586fcfa2c15fa04c5d6cbf0ffc70d",
                              "typeString": "literal_string \"log(bool,string,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21902,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47992:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47996:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47992:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47992:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21901,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "47976:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21910,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47976:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21911,
                  "nodeType": "ExpressionStatement",
                  "src": "47976:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47891:3:14",
            "parameters": {
              "id": 21899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21892,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47900:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21913,
                  "src": "47895:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21891,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47895:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21894,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47918:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21913,
                  "src": "47904:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21893,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47904:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21896,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47930:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21913,
                  "src": "47922:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "47922:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21898,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47948:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21913,
                  "src": "47934:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21897,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47934:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47894:57:14"
            },
            "returnParameters": {
              "id": 21900,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47966:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21936,
            "nodeType": "FunctionDefinition",
            "src": "48080:181:14",
            "body": {
              "id": 21935,
              "nodeType": "Block",
              "src": "48155:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e743235362c626f6f6c29",
                            "id": 21927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48205:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6b0e5d538cb3332d8fd45a0c2680232536414e292adbc2f70059f1d665e25411",
                              "typeString": "literal_string \"log(bool,string,uint256,bool)\""
                            },
                            "value": "log(bool,string,uint256,bool)"
                          },
                          {
                            "id": 21928,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21915,
                            "src": "48238:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21929,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21917,
                            "src": "48242:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21930,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21919,
                            "src": "48246:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21931,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21921,
                            "src": "48250:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6b0e5d538cb3332d8fd45a0c2680232536414e292adbc2f70059f1d665e25411",
                              "typeString": "literal_string \"log(bool,string,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48181:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48185:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48181:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48181:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21924,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "48165:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48165:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21934,
                  "nodeType": "ExpressionStatement",
                  "src": "48165:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48089:3:14",
            "parameters": {
              "id": 21922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21915,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48098:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21936,
                  "src": "48093:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21914,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48093:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21917,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48116:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21936,
                  "src": "48102:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21916,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48102:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21919,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48128:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21936,
                  "src": "48120:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21918,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "48120:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21921,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48137:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21936,
                  "src": "48132:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21920,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48132:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48092:48:14"
            },
            "returnParameters": {
              "id": 21923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48155:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21959,
            "nodeType": "FunctionDefinition",
            "src": "48267:187:14",
            "body": {
              "id": 21958,
              "nodeType": "Block",
              "src": "48345:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e743235362c6164647265737329",
                            "id": 21950,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48395:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1596a1ceb88c7fe162cbcf294bbc564db1eb943f277b50b442bf55dba1134056",
                              "typeString": "literal_string \"log(bool,string,uint256,address)\""
                            },
                            "value": "log(bool,string,uint256,address)"
                          },
                          {
                            "id": 21951,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21938,
                            "src": "48431:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21952,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "48435:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21953,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21942,
                            "src": "48439:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21954,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21944,
                            "src": "48443:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1596a1ceb88c7fe162cbcf294bbc564db1eb943f277b50b442bf55dba1134056",
                              "typeString": "literal_string \"log(bool,string,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21948,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48371:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48375:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48371:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48371:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21947,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "48355:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48355:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21957,
                  "nodeType": "ExpressionStatement",
                  "src": "48355:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48276:3:14",
            "parameters": {
              "id": 21945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21938,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48285:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21959,
                  "src": "48280:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21937,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48280:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21940,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48303:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21959,
                  "src": "48289:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21939,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48289:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21942,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48315:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21959,
                  "src": "48307:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21941,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "48307:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21944,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48327:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21959,
                  "src": "48319:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48319:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48279:51:14"
            },
            "returnParameters": {
              "id": 21946,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48345:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21982,
            "nodeType": "FunctionDefinition",
            "src": "48460:192:14",
            "body": {
              "id": 21981,
              "nodeType": "Block",
              "src": "48544:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c75696e7432353629",
                            "id": 21973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48594:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7be0c3eb1e87c47c60c12330b930fb496493960f97b03f8342bbe08fec9d20a2",
                              "typeString": "literal_string \"log(bool,string,string,uint256)\""
                            },
                            "value": "log(bool,string,string,uint256)"
                          },
                          {
                            "id": 21974,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21961,
                            "src": "48629:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21975,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21963,
                            "src": "48633:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21976,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21965,
                            "src": "48637:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21977,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21967,
                            "src": "48641:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7be0c3eb1e87c47c60c12330b930fb496493960f97b03f8342bbe08fec9d20a2",
                              "typeString": "literal_string \"log(bool,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21971,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48570:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48574:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48570:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48570:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21970,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "48554:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48554:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21980,
                  "nodeType": "ExpressionStatement",
                  "src": "48554:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48469:3:14",
            "parameters": {
              "id": 21968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21961,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48478:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21982,
                  "src": "48473:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21960,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48473:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21963,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48496:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21982,
                  "src": "48482:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21962,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48482:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21965,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48514:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21982,
                  "src": "48500:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21964,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48500:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21967,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48526:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 21982,
                  "src": "48518:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21966,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "48518:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48472:57:14"
            },
            "returnParameters": {
              "id": 21969,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48544:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22005,
            "nodeType": "FunctionDefinition",
            "src": "48658:197:14",
            "body": {
              "id": 22004,
              "nodeType": "Block",
              "src": "48748:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c737472696e6729",
                            "id": 21996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48798:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                              "typeString": "literal_string \"log(bool,string,string,string)\""
                            },
                            "value": "log(bool,string,string,string)"
                          },
                          {
                            "id": 21997,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21984,
                            "src": "48832:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21998,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21986,
                            "src": "48836:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21999,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21988,
                            "src": "48840:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22000,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21990,
                            "src": "48844:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                              "typeString": "literal_string \"log(bool,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21994,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48774:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48778:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48774:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48774:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21993,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "48758:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48758:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22003,
                  "nodeType": "ExpressionStatement",
                  "src": "48758:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48667:3:14",
            "parameters": {
              "id": 21991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21984,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48676:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22005,
                  "src": "48671:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21983,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48671:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21986,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48694:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22005,
                  "src": "48680:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21985,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48680:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21988,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48712:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22005,
                  "src": "48698:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21987,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48698:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21990,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48730:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22005,
                  "src": "48716:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21989,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48716:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48670:63:14"
            },
            "returnParameters": {
              "id": 21992,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48748:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22028,
            "nodeType": "FunctionDefinition",
            "src": "48861:186:14",
            "body": {
              "id": 22027,
              "nodeType": "Block",
              "src": "48942:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c626f6f6c29",
                            "id": 22019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48992:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                              "typeString": "literal_string \"log(bool,string,string,bool)\""
                            },
                            "value": "log(bool,string,string,bool)"
                          },
                          {
                            "id": 22020,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22007,
                            "src": "49024:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22021,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22009,
                            "src": "49028:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22022,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22011,
                            "src": "49032:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22023,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22013,
                            "src": "49036:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                              "typeString": "literal_string \"log(bool,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22017,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48968:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48972:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48968:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48968:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22016,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "48952:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48952:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22026,
                  "nodeType": "ExpressionStatement",
                  "src": "48952:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48870:3:14",
            "parameters": {
              "id": 22014,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22007,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22028,
                  "src": "48874:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22006,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48874:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22009,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48897:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22028,
                  "src": "48883:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22008,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48883:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22011,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48915:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22028,
                  "src": "48901:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22010,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48901:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22013,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48924:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22028,
                  "src": "48919:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22012,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48919:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48873:54:14"
            },
            "returnParameters": {
              "id": 22015,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48942:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22051,
            "nodeType": "FunctionDefinition",
            "src": "49053:192:14",
            "body": {
              "id": 22050,
              "nodeType": "Block",
              "src": "49137:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c6164647265737329",
                            "id": 22042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49187:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                              "typeString": "literal_string \"log(bool,string,string,address)\""
                            },
                            "value": "log(bool,string,string,address)"
                          },
                          {
                            "id": 22043,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22030,
                            "src": "49222:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22044,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22032,
                            "src": "49226:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22045,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22034,
                            "src": "49230:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22046,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22036,
                            "src": "49234:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                              "typeString": "literal_string \"log(bool,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22040,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49163:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49167:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49163:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22047,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49163:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22039,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "49147:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49147:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22049,
                  "nodeType": "ExpressionStatement",
                  "src": "49147:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49062:3:14",
            "parameters": {
              "id": 22037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22030,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49071:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22051,
                  "src": "49066:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22029,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49066:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22032,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49089:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22051,
                  "src": "49075:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22031,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49075:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22034,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49107:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22051,
                  "src": "49093:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22033,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49093:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22036,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49119:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22051,
                  "src": "49111:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "49111:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49065:57:14"
            },
            "returnParameters": {
              "id": 22038,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49137:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22074,
            "nodeType": "FunctionDefinition",
            "src": "49251:181:14",
            "body": {
              "id": 22073,
              "nodeType": "Block",
              "src": "49326:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c75696e7432353629",
                            "id": 22065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49376:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1606a393d6d8ee0e5b372b3b4baba691a3700cb155888ecb60500deb6038e937",
                              "typeString": "literal_string \"log(bool,string,bool,uint256)\""
                            },
                            "value": "log(bool,string,bool,uint256)"
                          },
                          {
                            "id": 22066,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22053,
                            "src": "49409:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22067,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22055,
                            "src": "49413:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22068,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22057,
                            "src": "49417:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22069,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22059,
                            "src": "49421:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1606a393d6d8ee0e5b372b3b4baba691a3700cb155888ecb60500deb6038e937",
                              "typeString": "literal_string \"log(bool,string,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22063,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49352:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49356:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49352:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22070,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49352:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22062,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "49336:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49336:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22072,
                  "nodeType": "ExpressionStatement",
                  "src": "49336:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49260:3:14",
            "parameters": {
              "id": 22060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22053,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49269:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22074,
                  "src": "49264:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22052,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49264:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22055,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49287:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22074,
                  "src": "49273:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22054,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49273:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22057,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49296:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22074,
                  "src": "49291:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22056,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49291:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22059,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49308:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22074,
                  "src": "49300:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "49300:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49263:48:14"
            },
            "returnParameters": {
              "id": 22061,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49326:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22097,
            "nodeType": "FunctionDefinition",
            "src": "49438:186:14",
            "body": {
              "id": 22096,
              "nodeType": "Block",
              "src": "49519:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c737472696e6729",
                            "id": 22088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49569:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                              "typeString": "literal_string \"log(bool,string,bool,string)\""
                            },
                            "value": "log(bool,string,bool,string)"
                          },
                          {
                            "id": 22089,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22076,
                            "src": "49601:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22090,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22078,
                            "src": "49605:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22091,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22080,
                            "src": "49609:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22092,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22082,
                            "src": "49613:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                              "typeString": "literal_string \"log(bool,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22086,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49545:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49549:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49545:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49545:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22085,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "49529:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49529:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22095,
                  "nodeType": "ExpressionStatement",
                  "src": "49529:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49447:3:14",
            "parameters": {
              "id": 22083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22076,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49456:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22097,
                  "src": "49451:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22075,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49451:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22078,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49474:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22097,
                  "src": "49460:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22077,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49460:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22080,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49483:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22097,
                  "src": "49478:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22079,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49478:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22082,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49501:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22097,
                  "src": "49487:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22081,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49487:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49450:54:14"
            },
            "returnParameters": {
              "id": 22084,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49519:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22120,
            "nodeType": "FunctionDefinition",
            "src": "49630:175:14",
            "body": {
              "id": 22119,
              "nodeType": "Block",
              "src": "49702:103:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 22111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49752:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                              "typeString": "literal_string \"log(bool,string,bool,bool)\""
                            },
                            "value": "log(bool,string,bool,bool)"
                          },
                          {
                            "id": 22112,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22099,
                            "src": "49782:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22113,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22101,
                            "src": "49786:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22114,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22103,
                            "src": "49790:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22115,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22105,
                            "src": "49794:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                              "typeString": "literal_string \"log(bool,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22109,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49728:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49732:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49728:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49728:69:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22108,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "49712:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49712:86:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22118,
                  "nodeType": "ExpressionStatement",
                  "src": "49712:86:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49639:3:14",
            "parameters": {
              "id": 22106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22099,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49648:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22120,
                  "src": "49643:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22098,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49643:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22101,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49666:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22120,
                  "src": "49652:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22100,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49652:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22103,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49675:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22120,
                  "src": "49670:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22102,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49670:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22105,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49684:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22120,
                  "src": "49679:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22104,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49679:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49642:45:14"
            },
            "returnParameters": {
              "id": 22107,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49702:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22143,
            "nodeType": "FunctionDefinition",
            "src": "49811:181:14",
            "body": {
              "id": 22142,
              "nodeType": "Block",
              "src": "49886:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c6164647265737329",
                            "id": 22134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49936:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                              "typeString": "literal_string \"log(bool,string,bool,address)\""
                            },
                            "value": "log(bool,string,bool,address)"
                          },
                          {
                            "id": 22135,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22122,
                            "src": "49969:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22136,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22124,
                            "src": "49973:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22137,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22126,
                            "src": "49977:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22138,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22128,
                            "src": "49981:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                              "typeString": "literal_string \"log(bool,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22132,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49912:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49916:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49912:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49912:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22131,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "49896:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49896:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22141,
                  "nodeType": "ExpressionStatement",
                  "src": "49896:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49820:3:14",
            "parameters": {
              "id": 22129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22122,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49829:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22143,
                  "src": "49824:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22121,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49824:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22124,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49847:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22143,
                  "src": "49833:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22123,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49833:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22126,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49856:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22143,
                  "src": "49851:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22125,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49851:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22128,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49868:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22143,
                  "src": "49860:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22127,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "49860:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49823:48:14"
            },
            "returnParameters": {
              "id": 22130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49886:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22166,
            "nodeType": "FunctionDefinition",
            "src": "49998:187:14",
            "body": {
              "id": 22165,
              "nodeType": "Block",
              "src": "50076:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c75696e7432353629",
                            "id": 22157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50126:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a5cada94c7dfdda57d4cfcf14da44c63431bfd533756a6e0d0d0a684af164218",
                              "typeString": "literal_string \"log(bool,string,address,uint256)\""
                            },
                            "value": "log(bool,string,address,uint256)"
                          },
                          {
                            "id": 22158,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22145,
                            "src": "50162:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22159,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22147,
                            "src": "50166:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22160,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22149,
                            "src": "50170:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22161,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22151,
                            "src": "50174:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a5cada94c7dfdda57d4cfcf14da44c63431bfd533756a6e0d0d0a684af164218",
                              "typeString": "literal_string \"log(bool,string,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22155,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50102:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50106:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50102:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50102:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22154,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "50086:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50086:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22164,
                  "nodeType": "ExpressionStatement",
                  "src": "50086:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50007:3:14",
            "parameters": {
              "id": 22152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22145,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50016:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22166,
                  "src": "50011:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22144,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50011:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22147,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50034:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22166,
                  "src": "50020:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22146,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50020:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22149,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50046:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22166,
                  "src": "50038:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50038:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22151,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50058:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22166,
                  "src": "50050:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22150,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "50050:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50010:51:14"
            },
            "returnParameters": {
              "id": 22153,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50076:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22189,
            "nodeType": "FunctionDefinition",
            "src": "50191:192:14",
            "body": {
              "id": 22188,
              "nodeType": "Block",
              "src": "50275:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c737472696e6729",
                            "id": 22180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50325:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                              "typeString": "literal_string \"log(bool,string,address,string)\""
                            },
                            "value": "log(bool,string,address,string)"
                          },
                          {
                            "id": 22181,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22168,
                            "src": "50360:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22182,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22170,
                            "src": "50364:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22183,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22172,
                            "src": "50368:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22184,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22174,
                            "src": "50372:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                              "typeString": "literal_string \"log(bool,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22178,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50301:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50305:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50301:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50301:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22177,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "50285:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50285:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22187,
                  "nodeType": "ExpressionStatement",
                  "src": "50285:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50200:3:14",
            "parameters": {
              "id": 22175,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22168,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50209:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22189,
                  "src": "50204:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22167,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50204:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22170,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50227:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22189,
                  "src": "50213:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22169,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50213:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22172,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50239:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22189,
                  "src": "50231:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22171,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50231:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22174,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50257:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22189,
                  "src": "50243:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22173,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50243:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50203:57:14"
            },
            "returnParameters": {
              "id": 22176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50275:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22212,
            "nodeType": "FunctionDefinition",
            "src": "50389:181:14",
            "body": {
              "id": 22211,
              "nodeType": "Block",
              "src": "50464:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c626f6f6c29",
                            "id": 22203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50514:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                              "typeString": "literal_string \"log(bool,string,address,bool)\""
                            },
                            "value": "log(bool,string,address,bool)"
                          },
                          {
                            "id": 22204,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22191,
                            "src": "50547:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22205,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22193,
                            "src": "50551:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22206,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22195,
                            "src": "50555:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22207,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22197,
                            "src": "50559:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                              "typeString": "literal_string \"log(bool,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22201,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50490:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50494:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50490:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50490:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22200,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "50474:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50474:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22210,
                  "nodeType": "ExpressionStatement",
                  "src": "50474:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50398:3:14",
            "parameters": {
              "id": 22198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22191,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50407:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22212,
                  "src": "50402:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22190,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50402:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22193,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50425:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22212,
                  "src": "50411:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22192,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50411:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22195,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50437:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22212,
                  "src": "50429:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22194,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50429:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22197,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50446:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22212,
                  "src": "50441:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50441:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50401:48:14"
            },
            "returnParameters": {
              "id": 22199,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50464:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22235,
            "nodeType": "FunctionDefinition",
            "src": "50576:187:14",
            "body": {
              "id": 22234,
              "nodeType": "Block",
              "src": "50654:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c6164647265737329",
                            "id": 22226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50704:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                              "typeString": "literal_string \"log(bool,string,address,address)\""
                            },
                            "value": "log(bool,string,address,address)"
                          },
                          {
                            "id": 22227,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22214,
                            "src": "50740:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22228,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22216,
                            "src": "50744:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22229,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22218,
                            "src": "50748:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22230,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22220,
                            "src": "50752:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                              "typeString": "literal_string \"log(bool,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22224,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50680:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50684:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50680:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50680:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22223,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "50664:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50664:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22233,
                  "nodeType": "ExpressionStatement",
                  "src": "50664:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50585:3:14",
            "parameters": {
              "id": 22221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22214,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50594:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22235,
                  "src": "50589:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22213,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50589:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22216,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50612:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22235,
                  "src": "50598:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22215,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50598:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22218,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50624:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22235,
                  "src": "50616:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22217,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50616:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22220,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50636:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22235,
                  "src": "50628:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22219,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50628:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50588:51:14"
            },
            "returnParameters": {
              "id": 22222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50654:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22258,
            "nodeType": "FunctionDefinition",
            "src": "50769:176:14",
            "body": {
              "id": 22257,
              "nodeType": "Block",
              "src": "50838:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e743235362c75696e7432353629",
                            "id": 22249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50888:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bb00eab8772a517edb34ef48e9be8dbee2f7b7490bba02909d18953766a9d34",
                              "typeString": "literal_string \"log(bool,bool,uint256,uint256)\""
                            },
                            "value": "log(bool,bool,uint256,uint256)"
                          },
                          {
                            "id": 22250,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22237,
                            "src": "50922:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22251,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22239,
                            "src": "50926:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22252,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22241,
                            "src": "50930:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22253,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22243,
                            "src": "50934:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0bb00eab8772a517edb34ef48e9be8dbee2f7b7490bba02909d18953766a9d34",
                              "typeString": "literal_string \"log(bool,bool,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22247,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50864:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50868:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50864:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50864:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22246,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "50848:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50848:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22256,
                  "nodeType": "ExpressionStatement",
                  "src": "50848:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50778:3:14",
            "parameters": {
              "id": 22244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22237,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22258,
                  "src": "50782:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22236,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50782:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22239,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50796:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22258,
                  "src": "50791:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22238,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50791:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22241,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50808:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22258,
                  "src": "50800:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22240,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "50800:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22243,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22258,
                  "src": "50812:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22242,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "50812:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50781:42:14"
            },
            "returnParameters": {
              "id": 22245,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50838:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22281,
            "nodeType": "FunctionDefinition",
            "src": "50951:181:14",
            "body": {
              "id": 22280,
              "nodeType": "Block",
              "src": "51026:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e743235362c737472696e6729",
                            "id": 22272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51076:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7dd4d0e0c518f4b352fd13daccf87a5d9bed9e01e109d2cd329f8180d1bf37cf",
                              "typeString": "literal_string \"log(bool,bool,uint256,string)\""
                            },
                            "value": "log(bool,bool,uint256,string)"
                          },
                          {
                            "id": 22273,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22260,
                            "src": "51109:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22274,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22262,
                            "src": "51113:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22275,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22264,
                            "src": "51117:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22276,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22266,
                            "src": "51121:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7dd4d0e0c518f4b352fd13daccf87a5d9bed9e01e109d2cd329f8180d1bf37cf",
                              "typeString": "literal_string \"log(bool,bool,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22270,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51052:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51056:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51052:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51052:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22269,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51036:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51036:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22279,
                  "nodeType": "ExpressionStatement",
                  "src": "51036:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50960:3:14",
            "parameters": {
              "id": 22267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22260,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50969:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22281,
                  "src": "50964:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22259,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50964:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22262,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50978:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22281,
                  "src": "50973:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22261,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50973:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22264,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50990:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22281,
                  "src": "50982:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "50982:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22266,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51008:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22281,
                  "src": "50994:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22265,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50994:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50963:48:14"
            },
            "returnParameters": {
              "id": 22268,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51026:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22304,
            "nodeType": "FunctionDefinition",
            "src": "51138:170:14",
            "body": {
              "id": 22303,
              "nodeType": "Block",
              "src": "51204:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e743235362c626f6f6c29",
                            "id": 22295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51254:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_619e4d0eef4ca09035d413eaba6f544cfd6dc9e01c2aeecde070c53237f5a842",
                              "typeString": "literal_string \"log(bool,bool,uint256,bool)\""
                            },
                            "value": "log(bool,bool,uint256,bool)"
                          },
                          {
                            "id": 22296,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22283,
                            "src": "51285:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22297,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22285,
                            "src": "51289:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22298,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22287,
                            "src": "51293:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22299,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22289,
                            "src": "51297:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_619e4d0eef4ca09035d413eaba6f544cfd6dc9e01c2aeecde070c53237f5a842",
                              "typeString": "literal_string \"log(bool,bool,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22293,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51230:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51234:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51230:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51230:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22292,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51214:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51214:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22302,
                  "nodeType": "ExpressionStatement",
                  "src": "51214:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51147:3:14",
            "parameters": {
              "id": 22290,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22283,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51156:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22304,
                  "src": "51151:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22282,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51151:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22285,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51165:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22304,
                  "src": "51160:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22284,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51160:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22287,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51177:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22304,
                  "src": "51169:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22286,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "51169:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22289,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51186:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22304,
                  "src": "51181:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22288,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51181:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51150:39:14"
            },
            "returnParameters": {
              "id": 22291,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51204:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22327,
            "nodeType": "FunctionDefinition",
            "src": "51314:176:14",
            "body": {
              "id": 22326,
              "nodeType": "Block",
              "src": "51383:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e743235362c6164647265737329",
                            "id": 22318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51433:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_54a7a9a08e00a28d36d734cc45e318f9adc9ffbfd731cd45d0dc5a2abe2b9ac9",
                              "typeString": "literal_string \"log(bool,bool,uint256,address)\""
                            },
                            "value": "log(bool,bool,uint256,address)"
                          },
                          {
                            "id": 22319,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22306,
                            "src": "51467:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22320,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22308,
                            "src": "51471:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22321,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22310,
                            "src": "51475:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22322,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22312,
                            "src": "51479:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_54a7a9a08e00a28d36d734cc45e318f9adc9ffbfd731cd45d0dc5a2abe2b9ac9",
                              "typeString": "literal_string \"log(bool,bool,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22316,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51409:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51413:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51409:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51409:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22315,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51393:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51393:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22325,
                  "nodeType": "ExpressionStatement",
                  "src": "51393:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51323:3:14",
            "parameters": {
              "id": 22313,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22306,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51332:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22327,
                  "src": "51327:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51327:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22308,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51341:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22327,
                  "src": "51336:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22307,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51336:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22310,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51353:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22327,
                  "src": "51345:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22309,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "51345:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22312,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51365:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22327,
                  "src": "51357:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51357:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51326:42:14"
            },
            "returnParameters": {
              "id": 22314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51383:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22350,
            "nodeType": "FunctionDefinition",
            "src": "51496:181:14",
            "body": {
              "id": 22349,
              "nodeType": "Block",
              "src": "51571:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c75696e7432353629",
                            "id": 22341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51621:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e3a9ca2f5717705d404f75ae4eff025addb4f91e02ce7d2b9a424fc7423a8246",
                              "typeString": "literal_string \"log(bool,bool,string,uint256)\""
                            },
                            "value": "log(bool,bool,string,uint256)"
                          },
                          {
                            "id": 22342,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22329,
                            "src": "51654:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22343,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22331,
                            "src": "51658:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22344,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22333,
                            "src": "51662:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22345,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22335,
                            "src": "51666:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e3a9ca2f5717705d404f75ae4eff025addb4f91e02ce7d2b9a424fc7423a8246",
                              "typeString": "literal_string \"log(bool,bool,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22339,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51597:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51601:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51597:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51597:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22338,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51581:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51581:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22348,
                  "nodeType": "ExpressionStatement",
                  "src": "51581:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51505:3:14",
            "parameters": {
              "id": 22336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22329,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51514:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22350,
                  "src": "51509:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22328,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51509:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22331,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51523:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22350,
                  "src": "51518:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22330,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51518:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22333,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51541:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22350,
                  "src": "51527:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22332,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51527:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22335,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51553:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22350,
                  "src": "51545:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22334,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "51545:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51508:48:14"
            },
            "returnParameters": {
              "id": 22337,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51571:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22373,
            "nodeType": "FunctionDefinition",
            "src": "51683:186:14",
            "body": {
              "id": 22372,
              "nodeType": "Block",
              "src": "51764:105:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c737472696e6729",
                            "id": 22364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51814:30:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                              "typeString": "literal_string \"log(bool,bool,string,string)\""
                            },
                            "value": "log(bool,bool,string,string)"
                          },
                          {
                            "id": 22365,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22352,
                            "src": "51846:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22366,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22354,
                            "src": "51850:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22367,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22356,
                            "src": "51854:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22368,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22358,
                            "src": "51858:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                              "typeString": "literal_string \"log(bool,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22362,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51790:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51794:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51790:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51790:71:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22361,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51774:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51774:88:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22371,
                  "nodeType": "ExpressionStatement",
                  "src": "51774:88:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51692:3:14",
            "parameters": {
              "id": 22359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22352,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51701:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22373,
                  "src": "51696:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22351,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51696:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22354,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51710:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22373,
                  "src": "51705:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22353,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51705:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22356,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51728:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22373,
                  "src": "51714:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22355,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51714:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22358,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51746:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22373,
                  "src": "51732:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22357,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51732:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51695:54:14"
            },
            "returnParameters": {
              "id": 22360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51764:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22396,
            "nodeType": "FunctionDefinition",
            "src": "51875:175:14",
            "body": {
              "id": 22395,
              "nodeType": "Block",
              "src": "51947:103:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 22387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51997:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                              "typeString": "literal_string \"log(bool,bool,string,bool)\""
                            },
                            "value": "log(bool,bool,string,bool)"
                          },
                          {
                            "id": 22388,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22375,
                            "src": "52027:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22389,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22377,
                            "src": "52031:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22390,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22379,
                            "src": "52035:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22391,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22381,
                            "src": "52039:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                              "typeString": "literal_string \"log(bool,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22385,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51973:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51977:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51973:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51973:69:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22384,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "51957:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51957:86:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22394,
                  "nodeType": "ExpressionStatement",
                  "src": "51957:86:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51884:3:14",
            "parameters": {
              "id": 22382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22375,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51893:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22396,
                  "src": "51888:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22374,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51888:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22377,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51902:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22396,
                  "src": "51897:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22376,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51897:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22379,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51920:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22396,
                  "src": "51906:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22378,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51906:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22381,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51929:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22396,
                  "src": "51924:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22380,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51924:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51887:45:14"
            },
            "returnParameters": {
              "id": 22383,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51947:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22419,
            "nodeType": "FunctionDefinition",
            "src": "52056:181:14",
            "body": {
              "id": 22418,
              "nodeType": "Block",
              "src": "52131:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c6164647265737329",
                            "id": 22410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52181:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                              "typeString": "literal_string \"log(bool,bool,string,address)\""
                            },
                            "value": "log(bool,bool,string,address)"
                          },
                          {
                            "id": 22411,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22398,
                            "src": "52214:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22412,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22400,
                            "src": "52218:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22413,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22402,
                            "src": "52222:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22414,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22404,
                            "src": "52226:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                              "typeString": "literal_string \"log(bool,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22408,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52157:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52161:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52157:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52157:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22407,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "52141:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52141:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22417,
                  "nodeType": "ExpressionStatement",
                  "src": "52141:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52065:3:14",
            "parameters": {
              "id": 22405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22398,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52074:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22419,
                  "src": "52069:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22397,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52069:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22400,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52083:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22419,
                  "src": "52078:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22399,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52078:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22402,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52101:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22419,
                  "src": "52087:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22401,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52087:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22404,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52113:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22419,
                  "src": "52105:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22403,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52105:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52068:48:14"
            },
            "returnParameters": {
              "id": 22406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52131:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22442,
            "nodeType": "FunctionDefinition",
            "src": "52243:170:14",
            "body": {
              "id": 22441,
              "nodeType": "Block",
              "src": "52309:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c75696e7432353629",
                            "id": 22433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52359:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6d7045c1b7eb7ef78b5ae54b2426a16952d89f674f6d689a4e37aa73bc076a7c",
                              "typeString": "literal_string \"log(bool,bool,bool,uint256)\""
                            },
                            "value": "log(bool,bool,bool,uint256)"
                          },
                          {
                            "id": 22434,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22421,
                            "src": "52390:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22435,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22423,
                            "src": "52394:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22436,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22425,
                            "src": "52398:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22437,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22427,
                            "src": "52402:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6d7045c1b7eb7ef78b5ae54b2426a16952d89f674f6d689a4e37aa73bc076a7c",
                              "typeString": "literal_string \"log(bool,bool,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22431,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52335:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52339:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52335:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22438,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52335:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22430,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "52319:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52319:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22440,
                  "nodeType": "ExpressionStatement",
                  "src": "52319:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52252:3:14",
            "parameters": {
              "id": 22428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22421,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52261:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22442,
                  "src": "52256:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22420,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52256:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22423,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52270:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22442,
                  "src": "52265:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22422,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52265:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22425,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52279:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22442,
                  "src": "52274:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22424,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52274:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22427,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52291:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22442,
                  "src": "52283:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22426,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52283:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52255:39:14"
            },
            "returnParameters": {
              "id": 22429,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52309:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22465,
            "nodeType": "FunctionDefinition",
            "src": "52419:175:14",
            "body": {
              "id": 22464,
              "nodeType": "Block",
              "src": "52491:103:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 22456,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52541:28:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                              "typeString": "literal_string \"log(bool,bool,bool,string)\""
                            },
                            "value": "log(bool,bool,bool,string)"
                          },
                          {
                            "id": 22457,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22444,
                            "src": "52571:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22458,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22446,
                            "src": "52575:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22459,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22448,
                            "src": "52579:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22460,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22450,
                            "src": "52583:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                              "typeString": "literal_string \"log(bool,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22454,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52517:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52521:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52517:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52517:69:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22453,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "52501:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52501:86:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22463,
                  "nodeType": "ExpressionStatement",
                  "src": "52501:86:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52428:3:14",
            "parameters": {
              "id": 22451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22444,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52437:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22465,
                  "src": "52432:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22443,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52432:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22446,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52446:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22465,
                  "src": "52441:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22445,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52441:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22448,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52455:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22465,
                  "src": "52450:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22447,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52450:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22450,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52473:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22465,
                  "src": "52459:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22449,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52459:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52431:45:14"
            },
            "returnParameters": {
              "id": 22452,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52491:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22488,
            "nodeType": "FunctionDefinition",
            "src": "52600:164:14",
            "body": {
              "id": 22487,
              "nodeType": "Block",
              "src": "52663:101:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 22479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52713:26:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                              "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                            },
                            "value": "log(bool,bool,bool,bool)"
                          },
                          {
                            "id": 22480,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22467,
                            "src": "52741:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22481,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22469,
                            "src": "52745:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22482,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22471,
                            "src": "52749:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22483,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22473,
                            "src": "52753:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                              "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22477,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52689:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52693:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52689:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52689:67:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22476,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "52673:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52673:84:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22486,
                  "nodeType": "ExpressionStatement",
                  "src": "52673:84:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52609:3:14",
            "parameters": {
              "id": 22474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22467,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52618:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22488,
                  "src": "52613:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22466,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52613:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22469,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52627:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22488,
                  "src": "52622:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22468,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52622:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22471,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52636:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22488,
                  "src": "52631:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22470,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52631:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22473,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52645:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22488,
                  "src": "52640:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22472,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52640:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52612:36:14"
            },
            "returnParameters": {
              "id": 22475,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52663:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22511,
            "nodeType": "FunctionDefinition",
            "src": "52770:170:14",
            "body": {
              "id": 22510,
              "nodeType": "Block",
              "src": "52836:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 22502,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52886:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                              "typeString": "literal_string \"log(bool,bool,bool,address)\""
                            },
                            "value": "log(bool,bool,bool,address)"
                          },
                          {
                            "id": 22503,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22490,
                            "src": "52917:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22504,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22492,
                            "src": "52921:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22505,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22494,
                            "src": "52925:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22506,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22496,
                            "src": "52929:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                              "typeString": "literal_string \"log(bool,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22500,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52862:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52866:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52862:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52862:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22499,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "52846:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52846:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22509,
                  "nodeType": "ExpressionStatement",
                  "src": "52846:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52779:3:14",
            "parameters": {
              "id": 22497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22490,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52788:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22511,
                  "src": "52783:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22489,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52783:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22492,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52797:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22511,
                  "src": "52792:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22491,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52792:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22494,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52806:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22511,
                  "src": "52801:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22493,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52801:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22496,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52818:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22511,
                  "src": "52810:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22495,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52810:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52782:39:14"
            },
            "returnParameters": {
              "id": 22498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52836:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22534,
            "nodeType": "FunctionDefinition",
            "src": "52946:176:14",
            "body": {
              "id": 22533,
              "nodeType": "Block",
              "src": "53015:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c75696e7432353629",
                            "id": 22525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53065:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4c123d5798ed03bd59911522da9ad7b1fc4e62f5a5de1c95ef20dc3897657cf1",
                              "typeString": "literal_string \"log(bool,bool,address,uint256)\""
                            },
                            "value": "log(bool,bool,address,uint256)"
                          },
                          {
                            "id": 22526,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22513,
                            "src": "53099:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22527,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22515,
                            "src": "53103:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22528,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22517,
                            "src": "53107:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22529,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22519,
                            "src": "53111:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4c123d5798ed03bd59911522da9ad7b1fc4e62f5a5de1c95ef20dc3897657cf1",
                              "typeString": "literal_string \"log(bool,bool,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22523,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53041:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53045:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53041:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53041:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22522,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53025:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53025:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22532,
                  "nodeType": "ExpressionStatement",
                  "src": "53025:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52955:3:14",
            "parameters": {
              "id": 22520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22513,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52964:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22534,
                  "src": "52959:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22512,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52959:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22515,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52973:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22534,
                  "src": "52968:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22514,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52968:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22517,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52985:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22534,
                  "src": "52977:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22516,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52977:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22519,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52997:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22534,
                  "src": "52989:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "52989:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52958:42:14"
            },
            "returnParameters": {
              "id": 22521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53015:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22557,
            "nodeType": "FunctionDefinition",
            "src": "53128:181:14",
            "body": {
              "id": 22556,
              "nodeType": "Block",
              "src": "53203:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c737472696e6729",
                            "id": 22548,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53253:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                              "typeString": "literal_string \"log(bool,bool,address,string)\""
                            },
                            "value": "log(bool,bool,address,string)"
                          },
                          {
                            "id": 22549,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22536,
                            "src": "53286:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22550,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22538,
                            "src": "53290:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22551,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22540,
                            "src": "53294:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22552,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22542,
                            "src": "53298:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                              "typeString": "literal_string \"log(bool,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22546,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53229:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53233:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53229:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53229:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22545,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53213:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53213:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22555,
                  "nodeType": "ExpressionStatement",
                  "src": "53213:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53137:3:14",
            "parameters": {
              "id": 22543,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22536,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53146:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22557,
                  "src": "53141:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22535,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53141:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22538,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53155:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22557,
                  "src": "53150:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22537,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53150:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22540,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53167:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22557,
                  "src": "53159:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22539,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53159:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22542,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53185:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22557,
                  "src": "53171:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22541,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "53171:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53140:48:14"
            },
            "returnParameters": {
              "id": 22544,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53203:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22580,
            "nodeType": "FunctionDefinition",
            "src": "53315:170:14",
            "body": {
              "id": 22579,
              "nodeType": "Block",
              "src": "53381:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 22571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53431:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                              "typeString": "literal_string \"log(bool,bool,address,bool)\""
                            },
                            "value": "log(bool,bool,address,bool)"
                          },
                          {
                            "id": 22572,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22559,
                            "src": "53462:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22573,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22561,
                            "src": "53466:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22574,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22563,
                            "src": "53470:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22575,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22565,
                            "src": "53474:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                              "typeString": "literal_string \"log(bool,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22569,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53407:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53411:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53407:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53407:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22568,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53391:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53391:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22578,
                  "nodeType": "ExpressionStatement",
                  "src": "53391:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53324:3:14",
            "parameters": {
              "id": 22566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22559,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53333:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22580,
                  "src": "53328:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22558,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53328:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22561,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53342:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22580,
                  "src": "53337:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22560,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53337:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22563,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53354:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22580,
                  "src": "53346:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53346:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22565,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53363:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22580,
                  "src": "53358:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22564,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53358:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53327:39:14"
            },
            "returnParameters": {
              "id": 22567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53381:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22603,
            "nodeType": "FunctionDefinition",
            "src": "53491:176:14",
            "body": {
              "id": 22602,
              "nodeType": "Block",
              "src": "53560:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c6164647265737329",
                            "id": 22594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53610:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                              "typeString": "literal_string \"log(bool,bool,address,address)\""
                            },
                            "value": "log(bool,bool,address,address)"
                          },
                          {
                            "id": 22595,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22582,
                            "src": "53644:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22596,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22584,
                            "src": "53648:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22597,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22586,
                            "src": "53652:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22598,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22588,
                            "src": "53656:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                              "typeString": "literal_string \"log(bool,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22592,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53586:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53590:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53586:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53586:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22591,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53570:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22600,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53570:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22601,
                  "nodeType": "ExpressionStatement",
                  "src": "53570:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53500:3:14",
            "parameters": {
              "id": 22589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22582,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53509:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22603,
                  "src": "53504:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22581,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53504:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22584,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53518:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22603,
                  "src": "53513:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22583,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53513:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22586,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53530:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22603,
                  "src": "53522:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22585,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53522:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22588,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53542:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22603,
                  "src": "53534:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22587,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53534:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53503:42:14"
            },
            "returnParameters": {
              "id": 22590,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53560:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22626,
            "nodeType": "FunctionDefinition",
            "src": "53673:182:14",
            "body": {
              "id": 22625,
              "nodeType": "Block",
              "src": "53745:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e743235362c75696e7432353629",
                            "id": 22617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53795:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7bf181a13b51d775e7d4339fb4fee9749d9226fa1720a2ae5e3183ab5674d16e",
                              "typeString": "literal_string \"log(bool,address,uint256,uint256)\""
                            },
                            "value": "log(bool,address,uint256,uint256)"
                          },
                          {
                            "id": 22618,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22605,
                            "src": "53832:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22619,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22607,
                            "src": "53836:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22620,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22609,
                            "src": "53840:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22621,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22611,
                            "src": "53844:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7bf181a13b51d775e7d4339fb4fee9749d9226fa1720a2ae5e3183ab5674d16e",
                              "typeString": "literal_string \"log(bool,address,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22615,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53771:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53775:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53771:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53771:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22614,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53755:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53755:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22624,
                  "nodeType": "ExpressionStatement",
                  "src": "53755:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53682:3:14",
            "parameters": {
              "id": 22612,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22605,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53691:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22626,
                  "src": "53686:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22604,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53686:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22607,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53703:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22626,
                  "src": "53695:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22606,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53695:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22609,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53715:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22626,
                  "src": "53707:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "53707:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22611,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53727:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22626,
                  "src": "53719:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22610,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "53719:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53685:45:14"
            },
            "returnParameters": {
              "id": 22613,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53745:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22649,
            "nodeType": "FunctionDefinition",
            "src": "53861:187:14",
            "body": {
              "id": 22648,
              "nodeType": "Block",
              "src": "53939:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e743235362c737472696e6729",
                            "id": 22640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53989:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_51f09ff8d49d8535177ce9f46f86e22d6e0ebf6aab24e3ad1fe351dec9cb8af7",
                              "typeString": "literal_string \"log(bool,address,uint256,string)\""
                            },
                            "value": "log(bool,address,uint256,string)"
                          },
                          {
                            "id": 22641,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22628,
                            "src": "54025:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22642,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22630,
                            "src": "54029:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22643,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22632,
                            "src": "54033:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22644,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22634,
                            "src": "54037:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_51f09ff8d49d8535177ce9f46f86e22d6e0ebf6aab24e3ad1fe351dec9cb8af7",
                              "typeString": "literal_string \"log(bool,address,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22638,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53965:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53969:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53965:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53965:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22637,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "53949:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53949:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22647,
                  "nodeType": "ExpressionStatement",
                  "src": "53949:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53870:3:14",
            "parameters": {
              "id": 22635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22628,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53879:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22649,
                  "src": "53874:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22627,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53874:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22630,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53891:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22649,
                  "src": "53883:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22629,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53883:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22632,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53903:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22649,
                  "src": "53895:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22631,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "53895:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22634,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53921:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22649,
                  "src": "53907:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22633,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "53907:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53873:51:14"
            },
            "returnParameters": {
              "id": 22636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53939:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22672,
            "nodeType": "FunctionDefinition",
            "src": "54054:176:14",
            "body": {
              "id": 22671,
              "nodeType": "Block",
              "src": "54123:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e743235362c626f6f6c29",
                            "id": 22663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54173:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d6019f1c844577cb799272d8b580ae7d31e1d26be8513d99f3a91ca8ea67c958",
                              "typeString": "literal_string \"log(bool,address,uint256,bool)\""
                            },
                            "value": "log(bool,address,uint256,bool)"
                          },
                          {
                            "id": 22664,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22651,
                            "src": "54207:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22665,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22653,
                            "src": "54211:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22666,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22655,
                            "src": "54215:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22667,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22657,
                            "src": "54219:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d6019f1c844577cb799272d8b580ae7d31e1d26be8513d99f3a91ca8ea67c958",
                              "typeString": "literal_string \"log(bool,address,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22661,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54149:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54153:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54149:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54149:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22660,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "54133:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54133:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22670,
                  "nodeType": "ExpressionStatement",
                  "src": "54133:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54063:3:14",
            "parameters": {
              "id": 22658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22651,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54072:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22672,
                  "src": "54067:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22650,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54067:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22653,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54084:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22672,
                  "src": "54076:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22652,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54076:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22655,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54096:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22672,
                  "src": "54088:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "54088:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22657,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54105:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22672,
                  "src": "54100:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22656,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54100:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54066:42:14"
            },
            "returnParameters": {
              "id": 22659,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54123:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22695,
            "nodeType": "FunctionDefinition",
            "src": "54236:182:14",
            "body": {
              "id": 22694,
              "nodeType": "Block",
              "src": "54308:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e743235362c6164647265737329",
                            "id": 22686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54358:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_136b05dd56dbfa6e97805ce657954968bb4ea366eef252c9fa3aec31b1aa7ebd",
                              "typeString": "literal_string \"log(bool,address,uint256,address)\""
                            },
                            "value": "log(bool,address,uint256,address)"
                          },
                          {
                            "id": 22687,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22674,
                            "src": "54395:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22688,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22676,
                            "src": "54399:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22689,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22678,
                            "src": "54403:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22690,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22680,
                            "src": "54407:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_136b05dd56dbfa6e97805ce657954968bb4ea366eef252c9fa3aec31b1aa7ebd",
                              "typeString": "literal_string \"log(bool,address,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22684,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54334:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54338:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54334:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54334:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22683,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "54318:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54318:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22693,
                  "nodeType": "ExpressionStatement",
                  "src": "54318:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54245:3:14",
            "parameters": {
              "id": 22681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22674,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54254:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22695,
                  "src": "54249:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22673,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54249:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22676,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54266:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22695,
                  "src": "54258:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22675,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54258:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22678,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54278:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22695,
                  "src": "54270:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "54270:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22680,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54290:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22695,
                  "src": "54282:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54282:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54248:45:14"
            },
            "returnParameters": {
              "id": 22682,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54308:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22718,
            "nodeType": "FunctionDefinition",
            "src": "54424:187:14",
            "body": {
              "id": 22717,
              "nodeType": "Block",
              "src": "54502:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c75696e7432353629",
                            "id": 22709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54552:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c21f64c781c24c69fbdf6daf185e821c3143831e9c7b3ede1933a6cffd68030d",
                              "typeString": "literal_string \"log(bool,address,string,uint256)\""
                            },
                            "value": "log(bool,address,string,uint256)"
                          },
                          {
                            "id": 22710,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22697,
                            "src": "54588:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22711,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22699,
                            "src": "54592:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22712,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22701,
                            "src": "54596:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22713,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22703,
                            "src": "54600:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c21f64c781c24c69fbdf6daf185e821c3143831e9c7b3ede1933a6cffd68030d",
                              "typeString": "literal_string \"log(bool,address,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22707,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54528:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54532:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54528:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54528:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22706,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "54512:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54512:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22716,
                  "nodeType": "ExpressionStatement",
                  "src": "54512:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54433:3:14",
            "parameters": {
              "id": 22704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22697,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54442:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22718,
                  "src": "54437:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22696,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54437:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22699,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54454:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22718,
                  "src": "54446:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22698,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54446:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22701,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54472:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22718,
                  "src": "54458:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22700,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54458:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22703,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54484:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22718,
                  "src": "54476:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "54476:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54436:51:14"
            },
            "returnParameters": {
              "id": 22705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54502:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22741,
            "nodeType": "FunctionDefinition",
            "src": "54617:192:14",
            "body": {
              "id": 22740,
              "nodeType": "Block",
              "src": "54701:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c737472696e6729",
                            "id": 22732,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54751:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                              "typeString": "literal_string \"log(bool,address,string,string)\""
                            },
                            "value": "log(bool,address,string,string)"
                          },
                          {
                            "id": 22733,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22720,
                            "src": "54786:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22734,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22722,
                            "src": "54790:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22735,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22724,
                            "src": "54794:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22736,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22726,
                            "src": "54798:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                              "typeString": "literal_string \"log(bool,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22730,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54727:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54731:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54727:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54727:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22729,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "54711:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22738,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54711:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22739,
                  "nodeType": "ExpressionStatement",
                  "src": "54711:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54626:3:14",
            "parameters": {
              "id": 22727,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22720,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54635:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22741,
                  "src": "54630:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22719,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54630:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22722,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54647:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22741,
                  "src": "54639:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22721,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54639:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22724,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54665:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22741,
                  "src": "54651:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22723,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54651:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22726,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54683:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22741,
                  "src": "54669:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22725,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54669:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54629:57:14"
            },
            "returnParameters": {
              "id": 22728,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54701:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22764,
            "nodeType": "FunctionDefinition",
            "src": "54815:181:14",
            "body": {
              "id": 22763,
              "nodeType": "Block",
              "src": "54890:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c626f6f6c29",
                            "id": 22755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54940:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                              "typeString": "literal_string \"log(bool,address,string,bool)\""
                            },
                            "value": "log(bool,address,string,bool)"
                          },
                          {
                            "id": 22756,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22743,
                            "src": "54973:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22757,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22745,
                            "src": "54977:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22758,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22747,
                            "src": "54981:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22759,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22749,
                            "src": "54985:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                              "typeString": "literal_string \"log(bool,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22753,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54916:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54920:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54916:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54916:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22752,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "54900:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54900:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22762,
                  "nodeType": "ExpressionStatement",
                  "src": "54900:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54824:3:14",
            "parameters": {
              "id": 22750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22743,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54833:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22764,
                  "src": "54828:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22742,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54828:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22745,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54845:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22764,
                  "src": "54837:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22744,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54837:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22747,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54863:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22764,
                  "src": "54849:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22746,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54849:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22749,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54872:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22764,
                  "src": "54867:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22748,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54867:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54827:48:14"
            },
            "returnParameters": {
              "id": 22751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54890:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22787,
            "nodeType": "FunctionDefinition",
            "src": "55002:187:14",
            "body": {
              "id": 22786,
              "nodeType": "Block",
              "src": "55080:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c6164647265737329",
                            "id": 22778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55130:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                              "typeString": "literal_string \"log(bool,address,string,address)\""
                            },
                            "value": "log(bool,address,string,address)"
                          },
                          {
                            "id": 22779,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22766,
                            "src": "55166:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22780,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22768,
                            "src": "55170:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22781,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22770,
                            "src": "55174:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 22782,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22772,
                            "src": "55178:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                              "typeString": "literal_string \"log(bool,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22776,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55106:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55110:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55106:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55106:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22775,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "55090:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55090:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22785,
                  "nodeType": "ExpressionStatement",
                  "src": "55090:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55011:3:14",
            "parameters": {
              "id": 22773,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22766,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55020:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22787,
                  "src": "55015:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22765,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55015:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22768,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55032:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22787,
                  "src": "55024:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22767,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55024:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22770,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55050:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22787,
                  "src": "55036:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22769,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55036:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22772,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55062:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22787,
                  "src": "55054:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22771,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55054:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55014:51:14"
            },
            "returnParameters": {
              "id": 22774,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55080:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22810,
            "nodeType": "FunctionDefinition",
            "src": "55195:176:14",
            "body": {
              "id": 22809,
              "nodeType": "Block",
              "src": "55264:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c75696e7432353629",
                            "id": 22801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55314:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_07831502b96d5b050adbd4ca2f9d4cd011dd7a8d3e1266dadb6c832ee8e56059",
                              "typeString": "literal_string \"log(bool,address,bool,uint256)\""
                            },
                            "value": "log(bool,address,bool,uint256)"
                          },
                          {
                            "id": 22802,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22789,
                            "src": "55348:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22803,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22791,
                            "src": "55352:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22804,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22793,
                            "src": "55356:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22805,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22795,
                            "src": "55360:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_07831502b96d5b050adbd4ca2f9d4cd011dd7a8d3e1266dadb6c832ee8e56059",
                              "typeString": "literal_string \"log(bool,address,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22799,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55290:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55294:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55290:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55290:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22798,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "55274:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55274:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22808,
                  "nodeType": "ExpressionStatement",
                  "src": "55274:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55204:3:14",
            "parameters": {
              "id": 22796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22789,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55213:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22810,
                  "src": "55208:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22788,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55208:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22791,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55225:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22810,
                  "src": "55217:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55217:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22793,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55234:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22810,
                  "src": "55229:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22792,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55229:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22795,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55246:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22810,
                  "src": "55238:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22794,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "55238:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55207:42:14"
            },
            "returnParameters": {
              "id": 22797,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55264:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22833,
            "nodeType": "FunctionDefinition",
            "src": "55377:181:14",
            "body": {
              "id": 22832,
              "nodeType": "Block",
              "src": "55452:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c737472696e6729",
                            "id": 22824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55502:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                              "typeString": "literal_string \"log(bool,address,bool,string)\""
                            },
                            "value": "log(bool,address,bool,string)"
                          },
                          {
                            "id": 22825,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22812,
                            "src": "55535:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22826,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22814,
                            "src": "55539:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22827,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22816,
                            "src": "55543:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22828,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22818,
                            "src": "55547:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                              "typeString": "literal_string \"log(bool,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22822,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55478:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55482:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55478:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55478:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22821,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "55462:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55462:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22831,
                  "nodeType": "ExpressionStatement",
                  "src": "55462:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55386:3:14",
            "parameters": {
              "id": 22819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22812,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55395:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22833,
                  "src": "55390:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22811,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55390:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22814,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55407:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22833,
                  "src": "55399:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22813,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55399:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22816,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55416:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22833,
                  "src": "55411:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22815,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55411:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22818,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55434:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22833,
                  "src": "55420:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22817,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55420:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55389:48:14"
            },
            "returnParameters": {
              "id": 22820,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55452:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22856,
            "nodeType": "FunctionDefinition",
            "src": "55564:170:14",
            "body": {
              "id": 22855,
              "nodeType": "Block",
              "src": "55630:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 22847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55680:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                              "typeString": "literal_string \"log(bool,address,bool,bool)\""
                            },
                            "value": "log(bool,address,bool,bool)"
                          },
                          {
                            "id": 22848,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22835,
                            "src": "55711:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22849,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22837,
                            "src": "55715:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22850,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22839,
                            "src": "55719:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22851,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22841,
                            "src": "55723:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                              "typeString": "literal_string \"log(bool,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22845,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55656:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55660:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55656:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22852,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55656:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22844,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "55640:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55640:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22854,
                  "nodeType": "ExpressionStatement",
                  "src": "55640:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55573:3:14",
            "parameters": {
              "id": 22842,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22835,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55582:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22856,
                  "src": "55577:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22834,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55577:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22837,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55594:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22856,
                  "src": "55586:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22836,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55586:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22839,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55603:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22856,
                  "src": "55598:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22838,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55598:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22841,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55612:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22856,
                  "src": "55607:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22840,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55607:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55576:39:14"
            },
            "returnParameters": {
              "id": 22843,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55630:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22879,
            "nodeType": "FunctionDefinition",
            "src": "55740:176:14",
            "body": {
              "id": 22878,
              "nodeType": "Block",
              "src": "55809:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c6164647265737329",
                            "id": 22870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55859:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                              "typeString": "literal_string \"log(bool,address,bool,address)\""
                            },
                            "value": "log(bool,address,bool,address)"
                          },
                          {
                            "id": 22871,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22858,
                            "src": "55893:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22872,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22860,
                            "src": "55897:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22873,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22862,
                            "src": "55901:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22874,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22864,
                            "src": "55905:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                              "typeString": "literal_string \"log(bool,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22868,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55835:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55839:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55835:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55835:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22867,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "55819:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55819:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22877,
                  "nodeType": "ExpressionStatement",
                  "src": "55819:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55749:3:14",
            "parameters": {
              "id": 22865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22858,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55758:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22879,
                  "src": "55753:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55753:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22860,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55770:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22879,
                  "src": "55762:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22859,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55762:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22862,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55779:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22879,
                  "src": "55774:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22861,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55774:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22864,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55791:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22879,
                  "src": "55783:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22863,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55783:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55752:42:14"
            },
            "returnParameters": {
              "id": 22866,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55809:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22902,
            "nodeType": "FunctionDefinition",
            "src": "55922:182:14",
            "body": {
              "id": 22901,
              "nodeType": "Block",
              "src": "55994:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c75696e7432353629",
                            "id": 22893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56044:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0c66d1be8b80b8d96088c57d6fc12897f737822d5beb6e751a923520a0a509b8",
                              "typeString": "literal_string \"log(bool,address,address,uint256)\""
                            },
                            "value": "log(bool,address,address,uint256)"
                          },
                          {
                            "id": 22894,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22881,
                            "src": "56081:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22895,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22883,
                            "src": "56085:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22896,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22885,
                            "src": "56089:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22897,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22887,
                            "src": "56093:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0c66d1be8b80b8d96088c57d6fc12897f737822d5beb6e751a923520a0a509b8",
                              "typeString": "literal_string \"log(bool,address,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22891,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56020:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56024:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56020:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56020:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22890,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56004:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56004:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22900,
                  "nodeType": "ExpressionStatement",
                  "src": "56004:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55931:3:14",
            "parameters": {
              "id": 22888,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22881,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55940:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22902,
                  "src": "55935:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22880,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55935:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22883,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55952:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22902,
                  "src": "55944:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22882,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55944:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22885,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55964:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22902,
                  "src": "55956:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55956:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22887,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55976:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22902,
                  "src": "55968:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "55968:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55934:45:14"
            },
            "returnParameters": {
              "id": 22889,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55994:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22925,
            "nodeType": "FunctionDefinition",
            "src": "56110:187:14",
            "body": {
              "id": 22924,
              "nodeType": "Block",
              "src": "56188:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c737472696e6729",
                            "id": 22916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56238:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                              "typeString": "literal_string \"log(bool,address,address,string)\""
                            },
                            "value": "log(bool,address,address,string)"
                          },
                          {
                            "id": 22917,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22904,
                            "src": "56274:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22918,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22906,
                            "src": "56278:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22919,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22908,
                            "src": "56282:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22920,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22910,
                            "src": "56286:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                              "typeString": "literal_string \"log(bool,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 22914,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56214:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56218:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56214:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56214:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22913,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56198:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22922,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56198:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22923,
                  "nodeType": "ExpressionStatement",
                  "src": "56198:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56119:3:14",
            "parameters": {
              "id": 22911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22904,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56128:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22925,
                  "src": "56123:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22903,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56123:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22906,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56140:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22925,
                  "src": "56132:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22905,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56132:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22908,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56152:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22925,
                  "src": "56144:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56144:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22910,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56170:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22925,
                  "src": "56156:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 22909,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "56156:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56122:51:14"
            },
            "returnParameters": {
              "id": 22912,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56188:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22948,
            "nodeType": "FunctionDefinition",
            "src": "56303:176:14",
            "body": {
              "id": 22947,
              "nodeType": "Block",
              "src": "56372:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c626f6f6c29",
                            "id": 22939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56422:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                              "typeString": "literal_string \"log(bool,address,address,bool)\""
                            },
                            "value": "log(bool,address,address,bool)"
                          },
                          {
                            "id": 22940,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22927,
                            "src": "56456:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22941,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22929,
                            "src": "56460:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22942,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22931,
                            "src": "56464:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22943,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22933,
                            "src": "56468:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                              "typeString": "literal_string \"log(bool,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 22937,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56398:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56402:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56398:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56398:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22936,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56382:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56382:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22946,
                  "nodeType": "ExpressionStatement",
                  "src": "56382:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56312:3:14",
            "parameters": {
              "id": 22934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22927,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56321:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22948,
                  "src": "56316:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22926,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56316:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22929,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56333:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22948,
                  "src": "56325:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22928,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56325:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22931,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56345:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22948,
                  "src": "56337:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56337:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22933,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56354:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22948,
                  "src": "56349:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22932,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56349:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56315:42:14"
            },
            "returnParameters": {
              "id": 22935,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56372:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22971,
            "nodeType": "FunctionDefinition",
            "src": "56485:182:14",
            "body": {
              "id": 22970,
              "nodeType": "Block",
              "src": "56557:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c6164647265737329",
                            "id": 22962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56607:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                              "typeString": "literal_string \"log(bool,address,address,address)\""
                            },
                            "value": "log(bool,address,address,address)"
                          },
                          {
                            "id": 22963,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22950,
                            "src": "56644:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 22964,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22952,
                            "src": "56648:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22965,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22954,
                            "src": "56652:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22966,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22956,
                            "src": "56656:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                              "typeString": "literal_string \"log(bool,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 22960,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56583:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56587:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56583:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56583:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22959,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56567:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56567:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22969,
                  "nodeType": "ExpressionStatement",
                  "src": "56567:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56494:3:14",
            "parameters": {
              "id": 22957,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22950,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56503:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22971,
                  "src": "56498:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 22949,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56498:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22952,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56515:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22971,
                  "src": "56507:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56507:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22954,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56527:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22971,
                  "src": "56519:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56519:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22956,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56539:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22971,
                  "src": "56531:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56531:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56497:45:14"
            },
            "returnParameters": {
              "id": 22958,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56557:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 22994,
            "nodeType": "FunctionDefinition",
            "src": "56673:188:14",
            "body": {
              "id": 22993,
              "nodeType": "Block",
              "src": "56748:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c75696e743235362c75696e7432353629",
                            "id": 22985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56798:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_34f0e636808ebabd61ce9b247c78c7a38984ab35d5f29c0bd51299288509f6d6",
                              "typeString": "literal_string \"log(address,uint256,uint256,uint256)\""
                            },
                            "value": "log(address,uint256,uint256,uint256)"
                          },
                          {
                            "id": 22986,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22973,
                            "src": "56838:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 22987,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22975,
                            "src": "56842:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22988,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22977,
                            "src": "56846:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 22989,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22979,
                            "src": "56850:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_34f0e636808ebabd61ce9b247c78c7a38984ab35d5f29c0bd51299288509f6d6",
                              "typeString": "literal_string \"log(address,uint256,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 22983,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56774:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 22984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56778:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56774:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 22990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56774:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 22982,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56758:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 22991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56758:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 22992,
                  "nodeType": "ExpressionStatement",
                  "src": "56758:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56682:3:14",
            "parameters": {
              "id": 22980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22973,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56694:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22994,
                  "src": "56686:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22972,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56686:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22975,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56706:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22994,
                  "src": "56698:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22974,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "56698:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22977,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56718:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22994,
                  "src": "56710:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "56710:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22979,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56730:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 22994,
                  "src": "56722:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22978,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "56722:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56685:48:14"
            },
            "returnParameters": {
              "id": 22981,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56748:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23017,
            "nodeType": "FunctionDefinition",
            "src": "56867:193:14",
            "body": {
              "id": 23016,
              "nodeType": "Block",
              "src": "56948:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c75696e743235362c737472696e6729",
                            "id": 23008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56998:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4a28c017e545dc04fb82dd1a46d46ba463e69e0aeff774fbced9bedd205b6cf6",
                              "typeString": "literal_string \"log(address,uint256,uint256,string)\""
                            },
                            "value": "log(address,uint256,uint256,string)"
                          },
                          {
                            "id": 23009,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22996,
                            "src": "57037:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23010,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22998,
                            "src": "57041:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23011,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23000,
                            "src": "57045:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23012,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23002,
                            "src": "57049:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4a28c017e545dc04fb82dd1a46d46ba463e69e0aeff774fbced9bedd205b6cf6",
                              "typeString": "literal_string \"log(address,uint256,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23006,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56974:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56978:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56974:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56974:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23005,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "56958:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56958:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23015,
                  "nodeType": "ExpressionStatement",
                  "src": "56958:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56876:3:14",
            "parameters": {
              "id": 23003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22996,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56888:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23017,
                  "src": "56880:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 22995,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56880:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22998,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56900:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23017,
                  "src": "56892:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22997,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "56892:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23000,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56912:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23017,
                  "src": "56904:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22999,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "56904:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23002,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56930:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23017,
                  "src": "56916:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23001,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "56916:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56879:54:14"
            },
            "returnParameters": {
              "id": 23004,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56948:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23040,
            "nodeType": "FunctionDefinition",
            "src": "57066:182:14",
            "body": {
              "id": 23039,
              "nodeType": "Block",
              "src": "57138:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c75696e743235362c626f6f6c29",
                            "id": 23031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57188:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_66f1bc67b5cb59260b3541ed684f0a38ab8f590dfff7947bd562de33eae3c57e",
                              "typeString": "literal_string \"log(address,uint256,uint256,bool)\""
                            },
                            "value": "log(address,uint256,uint256,bool)"
                          },
                          {
                            "id": 23032,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23019,
                            "src": "57225:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23033,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23021,
                            "src": "57229:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23034,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23023,
                            "src": "57233:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23035,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23025,
                            "src": "57237:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_66f1bc67b5cb59260b3541ed684f0a38ab8f590dfff7947bd562de33eae3c57e",
                              "typeString": "literal_string \"log(address,uint256,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23029,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57164:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57168:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57164:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57164:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23028,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "57148:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57148:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23038,
                  "nodeType": "ExpressionStatement",
                  "src": "57148:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57075:3:14",
            "parameters": {
              "id": 23026,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23019,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57087:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23040,
                  "src": "57079:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23018,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57079:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23021,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57099:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23040,
                  "src": "57091:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23020,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57091:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23023,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57111:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23040,
                  "src": "57103:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57103:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23025,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57120:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23040,
                  "src": "57115:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23024,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "57115:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57078:45:14"
            },
            "returnParameters": {
              "id": 23027,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57138:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23063,
            "nodeType": "FunctionDefinition",
            "src": "57254:188:14",
            "body": {
              "id": 23062,
              "nodeType": "Block",
              "src": "57329:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c75696e743235362c6164647265737329",
                            "id": 23054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57379:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_20e3984d0b91232a40a479187d959e3fb7102cd2a40a0267e07a4f648290e390",
                              "typeString": "literal_string \"log(address,uint256,uint256,address)\""
                            },
                            "value": "log(address,uint256,uint256,address)"
                          },
                          {
                            "id": 23055,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23042,
                            "src": "57419:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23056,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23044,
                            "src": "57423:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23057,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23046,
                            "src": "57427:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23058,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23048,
                            "src": "57431:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_20e3984d0b91232a40a479187d959e3fb7102cd2a40a0267e07a4f648290e390",
                              "typeString": "literal_string \"log(address,uint256,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23052,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57355:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57359:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57355:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57355:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23051,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "57339:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57339:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23061,
                  "nodeType": "ExpressionStatement",
                  "src": "57339:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57263:3:14",
            "parameters": {
              "id": 23049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23042,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57275:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23063,
                  "src": "57267:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23041,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57267:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23044,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57287:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23063,
                  "src": "57279:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23043,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57279:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23046,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57299:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23063,
                  "src": "57291:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57291:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23048,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57311:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23063,
                  "src": "57303:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57303:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57266:48:14"
            },
            "returnParameters": {
              "id": 23050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57329:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23086,
            "nodeType": "FunctionDefinition",
            "src": "57448:193:14",
            "body": {
              "id": 23085,
              "nodeType": "Block",
              "src": "57529:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c737472696e672c75696e7432353629",
                            "id": 23077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57579:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bf01f89152073297823dffc184d44302911f7269a4d8bb68457feda7325d0054",
                              "typeString": "literal_string \"log(address,uint256,string,uint256)\""
                            },
                            "value": "log(address,uint256,string,uint256)"
                          },
                          {
                            "id": 23078,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23065,
                            "src": "57618:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23079,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23067,
                            "src": "57622:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23080,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23069,
                            "src": "57626:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23081,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23071,
                            "src": "57630:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bf01f89152073297823dffc184d44302911f7269a4d8bb68457feda7325d0054",
                              "typeString": "literal_string \"log(address,uint256,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23075,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57555:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57559:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57555:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57555:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23074,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "57539:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57539:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23084,
                  "nodeType": "ExpressionStatement",
                  "src": "57539:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57457:3:14",
            "parameters": {
              "id": 23072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23065,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57469:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23086,
                  "src": "57461:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23064,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57461:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23067,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57481:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23086,
                  "src": "57473:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23066,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57473:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23069,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57499:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23086,
                  "src": "57485:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23068,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57485:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23071,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57511:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23086,
                  "src": "57503:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23070,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57503:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57460:54:14"
            },
            "returnParameters": {
              "id": 23073,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57529:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23109,
            "nodeType": "FunctionDefinition",
            "src": "57647:198:14",
            "body": {
              "id": 23108,
              "nodeType": "Block",
              "src": "57734:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c737472696e672c737472696e6729",
                            "id": 23100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57784:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_88a8c40673ee8948292248925b0e9d44ca87355f3f886942e848cf22ee50e1c9",
                              "typeString": "literal_string \"log(address,uint256,string,string)\""
                            },
                            "value": "log(address,uint256,string,string)"
                          },
                          {
                            "id": 23101,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23088,
                            "src": "57822:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23102,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23090,
                            "src": "57826:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23103,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23092,
                            "src": "57830:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23104,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23094,
                            "src": "57834:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_88a8c40673ee8948292248925b0e9d44ca87355f3f886942e848cf22ee50e1c9",
                              "typeString": "literal_string \"log(address,uint256,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23098,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57760:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57764:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57760:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57760:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23097,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "57744:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57744:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23107,
                  "nodeType": "ExpressionStatement",
                  "src": "57744:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57656:3:14",
            "parameters": {
              "id": 23095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23088,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57668:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23109,
                  "src": "57660:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23087,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57660:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23090,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57680:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23109,
                  "src": "57672:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23089,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57672:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23092,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57698:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23109,
                  "src": "57684:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23091,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57684:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23094,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57716:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23109,
                  "src": "57702:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23093,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57702:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57659:60:14"
            },
            "returnParameters": {
              "id": 23096,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57734:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23132,
            "nodeType": "FunctionDefinition",
            "src": "57851:187:14",
            "body": {
              "id": 23131,
              "nodeType": "Block",
              "src": "57929:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c737472696e672c626f6f6c29",
                            "id": 23123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57979:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf18105cbdc058258aaac7d4703aebeff683e464ae87b167f8bcabefd4799184",
                              "typeString": "literal_string \"log(address,uint256,string,bool)\""
                            },
                            "value": "log(address,uint256,string,bool)"
                          },
                          {
                            "id": 23124,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23111,
                            "src": "58015:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23125,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23113,
                            "src": "58019:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23126,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23115,
                            "src": "58023:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23127,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23117,
                            "src": "58027:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf18105cbdc058258aaac7d4703aebeff683e464ae87b167f8bcabefd4799184",
                              "typeString": "literal_string \"log(address,uint256,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23121,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57955:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57959:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57955:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57955:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23120,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "57939:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57939:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23130,
                  "nodeType": "ExpressionStatement",
                  "src": "57939:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57860:3:14",
            "parameters": {
              "id": 23118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23111,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57872:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23132,
                  "src": "57864:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57864:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23113,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57884:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23132,
                  "src": "57876:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23112,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "57876:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23115,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57902:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23132,
                  "src": "57888:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23114,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57888:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23117,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57911:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23132,
                  "src": "57906:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23116,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "57906:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57863:51:14"
            },
            "returnParameters": {
              "id": 23119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57929:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23155,
            "nodeType": "FunctionDefinition",
            "src": "58044:193:14",
            "body": {
              "id": 23154,
              "nodeType": "Block",
              "src": "58125:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c737472696e672c6164647265737329",
                            "id": 23146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58175:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5c430d475ad8236f34d086a6aae3612106ae74c8621b8677d58f13dcda27570a",
                              "typeString": "literal_string \"log(address,uint256,string,address)\""
                            },
                            "value": "log(address,uint256,string,address)"
                          },
                          {
                            "id": 23147,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23134,
                            "src": "58214:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23148,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23136,
                            "src": "58218:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23149,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23138,
                            "src": "58222:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23150,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23140,
                            "src": "58226:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5c430d475ad8236f34d086a6aae3612106ae74c8621b8677d58f13dcda27570a",
                              "typeString": "literal_string \"log(address,uint256,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23144,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58151:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58155:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58151:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58151:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23143,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "58135:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58135:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23153,
                  "nodeType": "ExpressionStatement",
                  "src": "58135:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58053:3:14",
            "parameters": {
              "id": 23141,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23134,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58065:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23155,
                  "src": "58057:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23133,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58057:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23136,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58077:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23155,
                  "src": "58069:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23135,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58069:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23138,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58095:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23155,
                  "src": "58081:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23137,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58081:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23140,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58107:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23155,
                  "src": "58099:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23139,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58099:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58056:54:14"
            },
            "returnParameters": {
              "id": 23142,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58125:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23178,
            "nodeType": "FunctionDefinition",
            "src": "58243:182:14",
            "body": {
              "id": 23177,
              "nodeType": "Block",
              "src": "58315:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c626f6f6c2c75696e7432353629",
                            "id": 23169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58365:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_22f6b999343c50207803e85ddd9e714a5457dacc91c49407b8de02bdaf889e5e",
                              "typeString": "literal_string \"log(address,uint256,bool,uint256)\""
                            },
                            "value": "log(address,uint256,bool,uint256)"
                          },
                          {
                            "id": 23170,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23157,
                            "src": "58402:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23171,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23159,
                            "src": "58406:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23172,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23161,
                            "src": "58410:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23173,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23163,
                            "src": "58414:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_22f6b999343c50207803e85ddd9e714a5457dacc91c49407b8de02bdaf889e5e",
                              "typeString": "literal_string \"log(address,uint256,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23167,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58341:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58345:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58341:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58341:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23166,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "58325:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58325:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23176,
                  "nodeType": "ExpressionStatement",
                  "src": "58325:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58252:3:14",
            "parameters": {
              "id": 23164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23157,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58264:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23178,
                  "src": "58256:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23156,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58256:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23159,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58276:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23178,
                  "src": "58268:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23158,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58268:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23161,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58285:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23178,
                  "src": "58280:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23160,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58280:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23163,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58297:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23178,
                  "src": "58289:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23162,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58289:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58255:45:14"
            },
            "returnParameters": {
              "id": 23165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58315:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23201,
            "nodeType": "FunctionDefinition",
            "src": "58431:187:14",
            "body": {
              "id": 23200,
              "nodeType": "Block",
              "src": "58509:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c626f6f6c2c737472696e6729",
                            "id": 23192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58559:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5ad85f9b1e72940e5c2ff98bcaf10dac65873a2d1f60566284e5a9bba66ce0b",
                              "typeString": "literal_string \"log(address,uint256,bool,string)\""
                            },
                            "value": "log(address,uint256,bool,string)"
                          },
                          {
                            "id": 23193,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23180,
                            "src": "58595:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23194,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23182,
                            "src": "58599:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23195,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23184,
                            "src": "58603:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23196,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23186,
                            "src": "58607:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5ad85f9b1e72940e5c2ff98bcaf10dac65873a2d1f60566284e5a9bba66ce0b",
                              "typeString": "literal_string \"log(address,uint256,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23190,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58535:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58539:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58535:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58535:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23189,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "58519:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58519:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23199,
                  "nodeType": "ExpressionStatement",
                  "src": "58519:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58440:3:14",
            "parameters": {
              "id": 23187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23180,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58452:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23201,
                  "src": "58444:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58444:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23182,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58464:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23201,
                  "src": "58456:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23181,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58456:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23184,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58473:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23201,
                  "src": "58468:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23183,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58468:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23186,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58491:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23201,
                  "src": "58477:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23185,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58477:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58443:51:14"
            },
            "returnParameters": {
              "id": 23188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58509:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23224,
            "nodeType": "FunctionDefinition",
            "src": "58624:176:14",
            "body": {
              "id": 23223,
              "nodeType": "Block",
              "src": "58693:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c626f6f6c2c626f6f6c29",
                            "id": 23215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58743:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3bf5e5379bfb03415fbd47322e912c55a56b102cc24fbed41ca848047f460ae7",
                              "typeString": "literal_string \"log(address,uint256,bool,bool)\""
                            },
                            "value": "log(address,uint256,bool,bool)"
                          },
                          {
                            "id": 23216,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23203,
                            "src": "58777:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23217,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23205,
                            "src": "58781:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23218,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23207,
                            "src": "58785:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23219,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23209,
                            "src": "58789:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3bf5e5379bfb03415fbd47322e912c55a56b102cc24fbed41ca848047f460ae7",
                              "typeString": "literal_string \"log(address,uint256,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23213,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58719:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58723:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58719:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58719:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23212,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "58703:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58703:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23222,
                  "nodeType": "ExpressionStatement",
                  "src": "58703:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58633:3:14",
            "parameters": {
              "id": 23210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23203,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58645:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23224,
                  "src": "58637:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23202,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58637:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23205,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58657:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23224,
                  "src": "58649:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58649:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23207,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58666:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23224,
                  "src": "58661:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23206,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58661:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23209,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58675:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23224,
                  "src": "58670:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23208,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58670:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58636:42:14"
            },
            "returnParameters": {
              "id": 23211,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58693:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23247,
            "nodeType": "FunctionDefinition",
            "src": "58806:182:14",
            "body": {
              "id": 23246,
              "nodeType": "Block",
              "src": "58878:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c626f6f6c2c6164647265737329",
                            "id": 23238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58928:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a31bfdcce87cf9e77dc577737a291feb3aa727a8fbb8205e53519527c85ff290",
                              "typeString": "literal_string \"log(address,uint256,bool,address)\""
                            },
                            "value": "log(address,uint256,bool,address)"
                          },
                          {
                            "id": 23239,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23226,
                            "src": "58965:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23240,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23228,
                            "src": "58969:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23241,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23230,
                            "src": "58973:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23242,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23232,
                            "src": "58977:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a31bfdcce87cf9e77dc577737a291feb3aa727a8fbb8205e53519527c85ff290",
                              "typeString": "literal_string \"log(address,uint256,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23236,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58904:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58908:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58904:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58904:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23235,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "58888:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58888:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23245,
                  "nodeType": "ExpressionStatement",
                  "src": "58888:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58815:3:14",
            "parameters": {
              "id": 23233,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23226,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58827:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23247,
                  "src": "58819:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58819:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23228,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58839:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23247,
                  "src": "58831:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23227,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "58831:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23230,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58848:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23247,
                  "src": "58843:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23229,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58843:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23232,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58860:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23247,
                  "src": "58852:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23231,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58852:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58818:45:14"
            },
            "returnParameters": {
              "id": 23234,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58878:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23270,
            "nodeType": "FunctionDefinition",
            "src": "58994:188:14",
            "body": {
              "id": 23269,
              "nodeType": "Block",
              "src": "59069:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c616464726573732c75696e7432353629",
                            "id": 23261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59119:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_100f650ebf81cb406bb4fb842e06128992c5a86986b0eab3b9e965c3254516e6",
                              "typeString": "literal_string \"log(address,uint256,address,uint256)\""
                            },
                            "value": "log(address,uint256,address,uint256)"
                          },
                          {
                            "id": 23262,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23249,
                            "src": "59159:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23263,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23251,
                            "src": "59163:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23264,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23253,
                            "src": "59167:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23265,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23255,
                            "src": "59171:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_100f650ebf81cb406bb4fb842e06128992c5a86986b0eab3b9e965c3254516e6",
                              "typeString": "literal_string \"log(address,uint256,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23259,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59095:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59099:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59095:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59095:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23258,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "59079:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59079:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23268,
                  "nodeType": "ExpressionStatement",
                  "src": "59079:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59003:3:14",
            "parameters": {
              "id": 23256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23249,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59015:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23270,
                  "src": "59007:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23248,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59007:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23251,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59027:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23270,
                  "src": "59019:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59019:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23253,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59039:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23270,
                  "src": "59031:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23252,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59031:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23255,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59051:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23270,
                  "src": "59043:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23254,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59043:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59006:48:14"
            },
            "returnParameters": {
              "id": 23257,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59069:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23293,
            "nodeType": "FunctionDefinition",
            "src": "59188:193:14",
            "body": {
              "id": 23292,
              "nodeType": "Block",
              "src": "59269:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c616464726573732c737472696e6729",
                            "id": 23284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59319:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1da986ea2505037a166dd31728d673db1dd36bf0935c0201f0d23934a6acafdb",
                              "typeString": "literal_string \"log(address,uint256,address,string)\""
                            },
                            "value": "log(address,uint256,address,string)"
                          },
                          {
                            "id": 23285,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23272,
                            "src": "59358:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23286,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23274,
                            "src": "59362:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23287,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23276,
                            "src": "59366:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23288,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23278,
                            "src": "59370:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1da986ea2505037a166dd31728d673db1dd36bf0935c0201f0d23934a6acafdb",
                              "typeString": "literal_string \"log(address,uint256,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23282,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59295:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59299:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59295:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59295:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23281,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "59279:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59279:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23291,
                  "nodeType": "ExpressionStatement",
                  "src": "59279:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59197:3:14",
            "parameters": {
              "id": 23279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23272,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59209:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23293,
                  "src": "59201:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59201:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23274,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59221:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23293,
                  "src": "59213:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59213:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23276,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59233:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23293,
                  "src": "59225:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59225:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23278,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59251:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23293,
                  "src": "59237:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23277,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59237:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59200:54:14"
            },
            "returnParameters": {
              "id": 23280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59269:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23316,
            "nodeType": "FunctionDefinition",
            "src": "59387:182:14",
            "body": {
              "id": 23315,
              "nodeType": "Block",
              "src": "59459:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c616464726573732c626f6f6c29",
                            "id": 23307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59509:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1bcc9b3f106a0ac6ebf0cd2eda5f636e4ab1afa891b1acb460dd180f14bb322",
                              "typeString": "literal_string \"log(address,uint256,address,bool)\""
                            },
                            "value": "log(address,uint256,address,bool)"
                          },
                          {
                            "id": 23308,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23295,
                            "src": "59546:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23309,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23297,
                            "src": "59550:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23310,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23299,
                            "src": "59554:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23311,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23301,
                            "src": "59558:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a1bcc9b3f106a0ac6ebf0cd2eda5f636e4ab1afa891b1acb460dd180f14bb322",
                              "typeString": "literal_string \"log(address,uint256,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23305,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59485:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59489:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59485:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59485:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23304,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "59469:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59469:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23314,
                  "nodeType": "ExpressionStatement",
                  "src": "59469:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59396:3:14",
            "parameters": {
              "id": 23302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23295,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59408:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "59400:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23294,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59400:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23297,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59420:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "59412:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59412:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23299,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59432:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "59424:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59424:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23301,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59441:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23316,
                  "src": "59436:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23300,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59436:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59399:45:14"
            },
            "returnParameters": {
              "id": 23303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59459:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23339,
            "nodeType": "FunctionDefinition",
            "src": "59575:188:14",
            "body": {
              "id": 23338,
              "nodeType": "Block",
              "src": "59650:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e743235362c616464726573732c6164647265737329",
                            "id": 23330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59700:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_478d1c625a50f0548fbd6ce5c9463f034dc2ce146c930b3546dac402346457d4",
                              "typeString": "literal_string \"log(address,uint256,address,address)\""
                            },
                            "value": "log(address,uint256,address,address)"
                          },
                          {
                            "id": 23331,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23318,
                            "src": "59740:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23332,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23320,
                            "src": "59744:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23333,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23322,
                            "src": "59748:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23334,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23324,
                            "src": "59752:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_478d1c625a50f0548fbd6ce5c9463f034dc2ce146c930b3546dac402346457d4",
                              "typeString": "literal_string \"log(address,uint256,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23328,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59676:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59680:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59676:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59676:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23327,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "59660:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59660:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23337,
                  "nodeType": "ExpressionStatement",
                  "src": "59660:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59584:3:14",
            "parameters": {
              "id": 23325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23318,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59596:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23339,
                  "src": "59588:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23317,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59588:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23320,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59608:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23339,
                  "src": "59600:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23319,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59600:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23322,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59620:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23339,
                  "src": "59612:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23321,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59612:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23324,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59632:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23339,
                  "src": "59624:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23323,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59624:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59587:48:14"
            },
            "returnParameters": {
              "id": 23326,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59650:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23362,
            "nodeType": "FunctionDefinition",
            "src": "59769:193:14",
            "body": {
              "id": 23361,
              "nodeType": "Block",
              "src": "59850:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e743235362c75696e7432353629",
                            "id": 23353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59900:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1dc8e1b86f5e8cc33f88f9c9577316d392566cde443e43069eebe8e56a0a0562",
                              "typeString": "literal_string \"log(address,string,uint256,uint256)\""
                            },
                            "value": "log(address,string,uint256,uint256)"
                          },
                          {
                            "id": 23354,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23341,
                            "src": "59939:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23355,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23343,
                            "src": "59943:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23356,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23345,
                            "src": "59947:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23357,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23347,
                            "src": "59951:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1dc8e1b86f5e8cc33f88f9c9577316d392566cde443e43069eebe8e56a0a0562",
                              "typeString": "literal_string \"log(address,string,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23351,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59876:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59880:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59876:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59876:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23350,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "59860:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59860:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23360,
                  "nodeType": "ExpressionStatement",
                  "src": "59860:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59778:3:14",
            "parameters": {
              "id": 23348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23341,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59790:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23362,
                  "src": "59782:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59782:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23343,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59808:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23362,
                  "src": "59794:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23342,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59794:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23345,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59820:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23362,
                  "src": "59812:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23344,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59812:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23347,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59832:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23362,
                  "src": "59824:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "59824:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59781:54:14"
            },
            "returnParameters": {
              "id": 23349,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59850:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23385,
            "nodeType": "FunctionDefinition",
            "src": "59968:198:14",
            "body": {
              "id": 23384,
              "nodeType": "Block",
              "src": "60055:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e743235362c737472696e6729",
                            "id": 23376,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60105:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_448830a8c1281c2ef562207eb8a81eaf8ce3a05f5db2e480f1a7741f740725d3",
                              "typeString": "literal_string \"log(address,string,uint256,string)\""
                            },
                            "value": "log(address,string,uint256,string)"
                          },
                          {
                            "id": 23377,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23364,
                            "src": "60143:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23378,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23366,
                            "src": "60147:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23379,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23368,
                            "src": "60151:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23380,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23370,
                            "src": "60155:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_448830a8c1281c2ef562207eb8a81eaf8ce3a05f5db2e480f1a7741f740725d3",
                              "typeString": "literal_string \"log(address,string,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23374,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60081:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60085:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60081:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60081:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23373,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "60065:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60065:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23383,
                  "nodeType": "ExpressionStatement",
                  "src": "60065:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59977:3:14",
            "parameters": {
              "id": 23371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23364,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59989:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23385,
                  "src": "59981:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23363,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59981:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23366,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60007:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23385,
                  "src": "59993:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23365,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59993:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23368,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60019:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23385,
                  "src": "60011:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "60011:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23370,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60037:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23385,
                  "src": "60023:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23369,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60023:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59980:60:14"
            },
            "returnParameters": {
              "id": 23372,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60055:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23408,
            "nodeType": "FunctionDefinition",
            "src": "60172:187:14",
            "body": {
              "id": 23407,
              "nodeType": "Block",
              "src": "60250:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e743235362c626f6f6c29",
                            "id": 23399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60300:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0ef7e050655c297a96024e476b2cd79b6c7fd3efbcd797a5d2723a888114ada4",
                              "typeString": "literal_string \"log(address,string,uint256,bool)\""
                            },
                            "value": "log(address,string,uint256,bool)"
                          },
                          {
                            "id": 23400,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23387,
                            "src": "60336:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23401,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23389,
                            "src": "60340:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23402,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23391,
                            "src": "60344:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23403,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23393,
                            "src": "60348:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0ef7e050655c297a96024e476b2cd79b6c7fd3efbcd797a5d2723a888114ada4",
                              "typeString": "literal_string \"log(address,string,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23397,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60276:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60280:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60276:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60276:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23396,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "60260:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60260:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23406,
                  "nodeType": "ExpressionStatement",
                  "src": "60260:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60181:3:14",
            "parameters": {
              "id": 23394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23387,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60193:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23408,
                  "src": "60185:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60185:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23389,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60211:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23408,
                  "src": "60197:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23388,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60197:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23391,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60223:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23408,
                  "src": "60215:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23390,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "60215:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23393,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60232:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23408,
                  "src": "60227:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23392,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "60227:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60184:51:14"
            },
            "returnParameters": {
              "id": 23395,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60250:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23431,
            "nodeType": "FunctionDefinition",
            "src": "60365:193:14",
            "body": {
              "id": 23430,
              "nodeType": "Block",
              "src": "60446:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e743235362c6164647265737329",
                            "id": 23422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60496:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_631836789e813227d6b1cf492359a1dbdd837663758bd3e55e319e4a730f0a18",
                              "typeString": "literal_string \"log(address,string,uint256,address)\""
                            },
                            "value": "log(address,string,uint256,address)"
                          },
                          {
                            "id": 23423,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23410,
                            "src": "60535:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23424,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23412,
                            "src": "60539:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23425,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23414,
                            "src": "60543:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23426,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23416,
                            "src": "60547:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_631836789e813227d6b1cf492359a1dbdd837663758bd3e55e319e4a730f0a18",
                              "typeString": "literal_string \"log(address,string,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23420,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60472:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60476:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60472:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60472:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23419,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "60456:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60456:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23429,
                  "nodeType": "ExpressionStatement",
                  "src": "60456:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60374:3:14",
            "parameters": {
              "id": 23417,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23410,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60386:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23431,
                  "src": "60378:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23409,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60378:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23412,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60404:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23431,
                  "src": "60390:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23411,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60390:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23414,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60416:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23431,
                  "src": "60408:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23413,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "60408:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23416,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60428:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23431,
                  "src": "60420:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60420:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60377:54:14"
            },
            "returnParameters": {
              "id": 23418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60446:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23454,
            "nodeType": "FunctionDefinition",
            "src": "60564:198:14",
            "body": {
              "id": 23453,
              "nodeType": "Block",
              "src": "60651:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c75696e7432353629",
                            "id": 23445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60701:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_159f89272dbf40436b74fcc844c992c1f5cc6a7cc05a9db80782be1a20a8f265",
                              "typeString": "literal_string \"log(address,string,string,uint256)\""
                            },
                            "value": "log(address,string,string,uint256)"
                          },
                          {
                            "id": 23446,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23433,
                            "src": "60739:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23447,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23435,
                            "src": "60743:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23448,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23437,
                            "src": "60747:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23449,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23439,
                            "src": "60751:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_159f89272dbf40436b74fcc844c992c1f5cc6a7cc05a9db80782be1a20a8f265",
                              "typeString": "literal_string \"log(address,string,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23443,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60677:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60681:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60677:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60677:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23442,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "60661:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60661:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23452,
                  "nodeType": "ExpressionStatement",
                  "src": "60661:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60573:3:14",
            "parameters": {
              "id": 23440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23433,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60585:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23454,
                  "src": "60577:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23432,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60577:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23435,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60603:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23454,
                  "src": "60589:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23434,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60589:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23437,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60621:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23454,
                  "src": "60607:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23436,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60607:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23439,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60633:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23454,
                  "src": "60625:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23438,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "60625:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60576:60:14"
            },
            "returnParameters": {
              "id": 23441,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60651:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23477,
            "nodeType": "FunctionDefinition",
            "src": "60768:203:14",
            "body": {
              "id": 23476,
              "nodeType": "Block",
              "src": "60861:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c737472696e6729",
                            "id": 23468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60911:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                              "typeString": "literal_string \"log(address,string,string,string)\""
                            },
                            "value": "log(address,string,string,string)"
                          },
                          {
                            "id": 23469,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23456,
                            "src": "60948:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23470,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23458,
                            "src": "60952:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23471,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23460,
                            "src": "60956:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23472,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23462,
                            "src": "60960:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                              "typeString": "literal_string \"log(address,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23466,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60887:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60891:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60887:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60887:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23465,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "60871:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60871:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23475,
                  "nodeType": "ExpressionStatement",
                  "src": "60871:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60777:3:14",
            "parameters": {
              "id": 23463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23456,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60789:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23477,
                  "src": "60781:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23455,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60781:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23458,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60807:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23477,
                  "src": "60793:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23457,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60793:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23460,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60825:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23477,
                  "src": "60811:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23459,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60811:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23462,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60843:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23477,
                  "src": "60829:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23461,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60829:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60780:66:14"
            },
            "returnParameters": {
              "id": 23464,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60861:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23500,
            "nodeType": "FunctionDefinition",
            "src": "60977:192:14",
            "body": {
              "id": 23499,
              "nodeType": "Block",
              "src": "61061:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c626f6f6c29",
                            "id": 23491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61111:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                              "typeString": "literal_string \"log(address,string,string,bool)\""
                            },
                            "value": "log(address,string,string,bool)"
                          },
                          {
                            "id": 23492,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23479,
                            "src": "61146:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23493,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23481,
                            "src": "61150:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23494,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23483,
                            "src": "61154:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23495,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23485,
                            "src": "61158:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                              "typeString": "literal_string \"log(address,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23489,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61087:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61091:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61087:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61087:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23488,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "61071:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61071:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23498,
                  "nodeType": "ExpressionStatement",
                  "src": "61071:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60986:3:14",
            "parameters": {
              "id": 23486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23479,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60998:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23500,
                  "src": "60990:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23478,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60990:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23481,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61016:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23500,
                  "src": "61002:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23480,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61002:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23483,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61034:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23500,
                  "src": "61020:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61020:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23485,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61043:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23500,
                  "src": "61038:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23484,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61038:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60989:57:14"
            },
            "returnParameters": {
              "id": 23487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61061:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23523,
            "nodeType": "FunctionDefinition",
            "src": "61175:198:14",
            "body": {
              "id": 23522,
              "nodeType": "Block",
              "src": "61262:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c6164647265737329",
                            "id": 23514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61312:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                              "typeString": "literal_string \"log(address,string,string,address)\""
                            },
                            "value": "log(address,string,string,address)"
                          },
                          {
                            "id": 23515,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23502,
                            "src": "61350:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23516,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23504,
                            "src": "61354:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23517,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23506,
                            "src": "61358:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23518,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23508,
                            "src": "61362:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                              "typeString": "literal_string \"log(address,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23512,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61288:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61292:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61288:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61288:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23511,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "61272:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61272:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23521,
                  "nodeType": "ExpressionStatement",
                  "src": "61272:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61184:3:14",
            "parameters": {
              "id": 23509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23502,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61196:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23523,
                  "src": "61188:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23501,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61188:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23504,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61214:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23523,
                  "src": "61200:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23503,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61200:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23506,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61232:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23523,
                  "src": "61218:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61218:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23508,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61244:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23523,
                  "src": "61236:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23507,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61236:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61187:60:14"
            },
            "returnParameters": {
              "id": 23510,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61262:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23546,
            "nodeType": "FunctionDefinition",
            "src": "61379:187:14",
            "body": {
              "id": 23545,
              "nodeType": "Block",
              "src": "61457:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c75696e7432353629",
                            "id": 23537,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61507:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_515e38b61b40d622a4c0448953be005b3991f6a70155c59b5dca42a264aa0345",
                              "typeString": "literal_string \"log(address,string,bool,uint256)\""
                            },
                            "value": "log(address,string,bool,uint256)"
                          },
                          {
                            "id": 23538,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23525,
                            "src": "61543:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23539,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23527,
                            "src": "61547:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23540,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23529,
                            "src": "61551:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23541,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23531,
                            "src": "61555:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_515e38b61b40d622a4c0448953be005b3991f6a70155c59b5dca42a264aa0345",
                              "typeString": "literal_string \"log(address,string,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23535,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61483:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61487:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61483:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61483:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23534,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "61467:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61467:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23544,
                  "nodeType": "ExpressionStatement",
                  "src": "61467:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61388:3:14",
            "parameters": {
              "id": 23532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23525,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61400:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23546,
                  "src": "61392:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23524,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61392:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23527,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61418:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23546,
                  "src": "61404:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23526,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61404:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23529,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61427:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23546,
                  "src": "61422:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23528,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61422:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23531,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61439:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23546,
                  "src": "61431:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23530,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "61431:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61391:51:14"
            },
            "returnParameters": {
              "id": 23533,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61457:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23569,
            "nodeType": "FunctionDefinition",
            "src": "61572:192:14",
            "body": {
              "id": 23568,
              "nodeType": "Block",
              "src": "61656:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c737472696e6729",
                            "id": 23560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61706:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                              "typeString": "literal_string \"log(address,string,bool,string)\""
                            },
                            "value": "log(address,string,bool,string)"
                          },
                          {
                            "id": 23561,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23548,
                            "src": "61741:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23562,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23550,
                            "src": "61745:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23563,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23552,
                            "src": "61749:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23564,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23554,
                            "src": "61753:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                              "typeString": "literal_string \"log(address,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23558,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61682:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61686:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61682:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61682:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23557,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "61666:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61666:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23567,
                  "nodeType": "ExpressionStatement",
                  "src": "61666:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61581:3:14",
            "parameters": {
              "id": 23555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23548,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61593:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23569,
                  "src": "61585:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23547,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61585:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23550,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61611:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23569,
                  "src": "61597:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23549,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61597:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23552,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61620:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23569,
                  "src": "61615:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23551,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61615:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23554,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61638:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23569,
                  "src": "61624:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23553,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61624:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61584:57:14"
            },
            "returnParameters": {
              "id": 23556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61656:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23592,
            "nodeType": "FunctionDefinition",
            "src": "61770:181:14",
            "body": {
              "id": 23591,
              "nodeType": "Block",
              "src": "61845:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 23583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61895:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                              "typeString": "literal_string \"log(address,string,bool,bool)\""
                            },
                            "value": "log(address,string,bool,bool)"
                          },
                          {
                            "id": 23584,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23571,
                            "src": "61928:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23585,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23573,
                            "src": "61932:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23586,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23575,
                            "src": "61936:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23587,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23577,
                            "src": "61940:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                              "typeString": "literal_string \"log(address,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23581,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61871:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61875:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61871:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61871:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23580,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "61855:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61855:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23590,
                  "nodeType": "ExpressionStatement",
                  "src": "61855:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61779:3:14",
            "parameters": {
              "id": 23578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23571,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61791:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23592,
                  "src": "61783:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23570,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61783:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23573,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61809:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23592,
                  "src": "61795:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23572,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61795:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23575,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61818:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23592,
                  "src": "61813:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23574,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61813:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23577,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61827:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23592,
                  "src": "61822:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23576,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61822:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61782:48:14"
            },
            "returnParameters": {
              "id": 23579,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61845:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23615,
            "nodeType": "FunctionDefinition",
            "src": "61957:187:14",
            "body": {
              "id": 23614,
              "nodeType": "Block",
              "src": "62035:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c6164647265737329",
                            "id": 23606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62085:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                              "typeString": "literal_string \"log(address,string,bool,address)\""
                            },
                            "value": "log(address,string,bool,address)"
                          },
                          {
                            "id": 23607,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23594,
                            "src": "62121:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23608,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23596,
                            "src": "62125:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23609,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23598,
                            "src": "62129:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23610,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23600,
                            "src": "62133:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                              "typeString": "literal_string \"log(address,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23604,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62061:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62065:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62061:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23611,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62061:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23603,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "62045:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62045:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23613,
                  "nodeType": "ExpressionStatement",
                  "src": "62045:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61966:3:14",
            "parameters": {
              "id": 23601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23594,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61978:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23615,
                  "src": "61970:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23593,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61970:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23596,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61996:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23615,
                  "src": "61982:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23595,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61982:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23598,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62005:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23615,
                  "src": "62000:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23597,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62000:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23600,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62017:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23615,
                  "src": "62009:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23599,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62009:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61969:51:14"
            },
            "returnParameters": {
              "id": 23602,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62035:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23638,
            "nodeType": "FunctionDefinition",
            "src": "62150:193:14",
            "body": {
              "id": 23637,
              "nodeType": "Block",
              "src": "62231:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c75696e7432353629",
                            "id": 23629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62281:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_457fe3cf7da0d45ce051e53ef9adc21213d4d7779b5a0fadf99dea432be4beb7",
                              "typeString": "literal_string \"log(address,string,address,uint256)\""
                            },
                            "value": "log(address,string,address,uint256)"
                          },
                          {
                            "id": 23630,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23617,
                            "src": "62320:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23631,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23619,
                            "src": "62324:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23632,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23621,
                            "src": "62328:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23633,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23623,
                            "src": "62332:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_457fe3cf7da0d45ce051e53ef9adc21213d4d7779b5a0fadf99dea432be4beb7",
                              "typeString": "literal_string \"log(address,string,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23627,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62257:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62261:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62257:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62257:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23626,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "62241:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62241:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23636,
                  "nodeType": "ExpressionStatement",
                  "src": "62241:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62159:3:14",
            "parameters": {
              "id": 23624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23617,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62171:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23638,
                  "src": "62163:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62163:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23619,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62189:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23638,
                  "src": "62175:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23618,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62175:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23621,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62201:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23638,
                  "src": "62193:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23620,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62193:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23623,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62213:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23638,
                  "src": "62205:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23622,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "62205:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62162:54:14"
            },
            "returnParameters": {
              "id": 23625,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62231:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23661,
            "nodeType": "FunctionDefinition",
            "src": "62349:198:14",
            "body": {
              "id": 23660,
              "nodeType": "Block",
              "src": "62436:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c737472696e6729",
                            "id": 23652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62486:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                              "typeString": "literal_string \"log(address,string,address,string)\""
                            },
                            "value": "log(address,string,address,string)"
                          },
                          {
                            "id": 23653,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23640,
                            "src": "62524:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23654,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23642,
                            "src": "62528:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23655,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23644,
                            "src": "62532:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23656,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23646,
                            "src": "62536:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                              "typeString": "literal_string \"log(address,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23650,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62462:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62466:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62462:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62462:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23649,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "62446:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62446:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23659,
                  "nodeType": "ExpressionStatement",
                  "src": "62446:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62358:3:14",
            "parameters": {
              "id": 23647,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23640,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62370:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23661,
                  "src": "62362:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23639,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62362:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23642,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62388:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23661,
                  "src": "62374:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23641,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62374:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23644,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62400:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23661,
                  "src": "62392:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23643,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62392:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23646,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62418:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23661,
                  "src": "62404:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62404:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62361:60:14"
            },
            "returnParameters": {
              "id": 23648,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62436:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23684,
            "nodeType": "FunctionDefinition",
            "src": "62553:187:14",
            "body": {
              "id": 23683,
              "nodeType": "Block",
              "src": "62631:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c626f6f6c29",
                            "id": 23675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62681:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                              "typeString": "literal_string \"log(address,string,address,bool)\""
                            },
                            "value": "log(address,string,address,bool)"
                          },
                          {
                            "id": 23676,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23663,
                            "src": "62717:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23677,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23665,
                            "src": "62721:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23678,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23667,
                            "src": "62725:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23679,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23669,
                            "src": "62729:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                              "typeString": "literal_string \"log(address,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23673,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62657:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62661:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62657:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62657:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23672,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "62641:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62641:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23682,
                  "nodeType": "ExpressionStatement",
                  "src": "62641:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62562:3:14",
            "parameters": {
              "id": 23670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23663,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62574:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23684,
                  "src": "62566:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62566:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23665,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62592:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23684,
                  "src": "62578:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62578:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23667,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62604:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23684,
                  "src": "62596:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62596:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23669,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62613:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23684,
                  "src": "62608:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23668,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62608:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62565:51:14"
            },
            "returnParameters": {
              "id": 23671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62631:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23707,
            "nodeType": "FunctionDefinition",
            "src": "62746:193:14",
            "body": {
              "id": 23706,
              "nodeType": "Block",
              "src": "62827:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c6164647265737329",
                            "id": 23698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62877:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                              "typeString": "literal_string \"log(address,string,address,address)\""
                            },
                            "value": "log(address,string,address,address)"
                          },
                          {
                            "id": 23699,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23686,
                            "src": "62916:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23700,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23688,
                            "src": "62920:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23701,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23690,
                            "src": "62924:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23702,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "62928:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                              "typeString": "literal_string \"log(address,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23696,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62853:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62857:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62853:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62853:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23695,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "62837:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62837:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23705,
                  "nodeType": "ExpressionStatement",
                  "src": "62837:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62755:3:14",
            "parameters": {
              "id": 23693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23686,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62767:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23707,
                  "src": "62759:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62759:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23688,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62785:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23707,
                  "src": "62771:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23687,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62771:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23690,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62797:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23707,
                  "src": "62789:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62789:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23692,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62809:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23707,
                  "src": "62801:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23691,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62801:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62758:54:14"
            },
            "returnParameters": {
              "id": 23694,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62827:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23730,
            "nodeType": "FunctionDefinition",
            "src": "62945:182:14",
            "body": {
              "id": 23729,
              "nodeType": "Block",
              "src": "63017:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e743235362c75696e7432353629",
                            "id": 23721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63067:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_386ff5f4530ea008cf639214e5b8a55077ec58314989bc72a4ee1f3ffe9617a4",
                              "typeString": "literal_string \"log(address,bool,uint256,uint256)\""
                            },
                            "value": "log(address,bool,uint256,uint256)"
                          },
                          {
                            "id": 23722,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23709,
                            "src": "63104:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23723,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23711,
                            "src": "63108:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23724,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23713,
                            "src": "63112:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23725,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23715,
                            "src": "63116:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_386ff5f4530ea008cf639214e5b8a55077ec58314989bc72a4ee1f3ffe9617a4",
                              "typeString": "literal_string \"log(address,bool,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23719,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63043:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63047:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63043:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63043:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23718,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63027:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63027:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23728,
                  "nodeType": "ExpressionStatement",
                  "src": "63027:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62954:3:14",
            "parameters": {
              "id": 23716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23709,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62966:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23730,
                  "src": "62958:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23708,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62958:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23711,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62975:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23730,
                  "src": "62970:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23710,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62970:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23713,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62987:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23730,
                  "src": "62979:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23712,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "62979:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23715,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62999:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23730,
                  "src": "62991:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "62991:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62957:45:14"
            },
            "returnParameters": {
              "id": 23717,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63017:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23753,
            "nodeType": "FunctionDefinition",
            "src": "63133:187:14",
            "body": {
              "id": 23752,
              "nodeType": "Block",
              "src": "63211:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e743235362c737472696e6729",
                            "id": 23744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63261:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0aa6cfad2c268cd387390ada6d4a75b3aa3e38d6511517eb59fcd07a90f9c283",
                              "typeString": "literal_string \"log(address,bool,uint256,string)\""
                            },
                            "value": "log(address,bool,uint256,string)"
                          },
                          {
                            "id": 23745,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23732,
                            "src": "63297:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23746,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23734,
                            "src": "63301:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23747,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23736,
                            "src": "63305:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23748,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23738,
                            "src": "63309:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0aa6cfad2c268cd387390ada6d4a75b3aa3e38d6511517eb59fcd07a90f9c283",
                              "typeString": "literal_string \"log(address,bool,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23742,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63237:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63241:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63237:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63237:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23741,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63221:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63221:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23751,
                  "nodeType": "ExpressionStatement",
                  "src": "63221:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63142:3:14",
            "parameters": {
              "id": 23739,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23732,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63154:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "63146:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23731,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63146:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23734,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63163:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "63158:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23733,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63158:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23736,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63175:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "63167:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23735,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "63167:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23738,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63193:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "63179:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23737,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63179:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63145:51:14"
            },
            "returnParameters": {
              "id": 23740,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63211:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23776,
            "nodeType": "FunctionDefinition",
            "src": "63326:176:14",
            "body": {
              "id": 23775,
              "nodeType": "Block",
              "src": "63395:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e743235362c626f6f6c29",
                            "id": 23767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63445:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c4643e20494ddb98fe78bc587bcecbcc7db255edcee8232992e8be9b00c4713c",
                              "typeString": "literal_string \"log(address,bool,uint256,bool)\""
                            },
                            "value": "log(address,bool,uint256,bool)"
                          },
                          {
                            "id": 23768,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23755,
                            "src": "63479:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23769,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23757,
                            "src": "63483:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23770,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23759,
                            "src": "63487:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23771,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23761,
                            "src": "63491:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c4643e20494ddb98fe78bc587bcecbcc7db255edcee8232992e8be9b00c4713c",
                              "typeString": "literal_string \"log(address,bool,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23765,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63421:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63425:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63421:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63421:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23764,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63405:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63405:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23774,
                  "nodeType": "ExpressionStatement",
                  "src": "63405:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63335:3:14",
            "parameters": {
              "id": 23762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23755,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63347:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23776,
                  "src": "63339:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23754,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63339:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23757,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63356:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23776,
                  "src": "63351:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23756,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63351:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23759,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63368:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23776,
                  "src": "63360:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23758,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "63360:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23761,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63377:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23776,
                  "src": "63372:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23760,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63372:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63338:42:14"
            },
            "returnParameters": {
              "id": 23763,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63395:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23799,
            "nodeType": "FunctionDefinition",
            "src": "63508:182:14",
            "body": {
              "id": 23798,
              "nodeType": "Block",
              "src": "63580:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e743235362c6164647265737329",
                            "id": 23790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63630:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ccf790a175b1b762ef5bfd3564f0b74c078f15eca08b8ee654a38a96a5ad2aee",
                              "typeString": "literal_string \"log(address,bool,uint256,address)\""
                            },
                            "value": "log(address,bool,uint256,address)"
                          },
                          {
                            "id": 23791,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23778,
                            "src": "63667:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23792,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23780,
                            "src": "63671:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23793,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23782,
                            "src": "63675:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 23794,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23784,
                            "src": "63679:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ccf790a175b1b762ef5bfd3564f0b74c078f15eca08b8ee654a38a96a5ad2aee",
                              "typeString": "literal_string \"log(address,bool,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23788,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63606:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63610:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63606:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63606:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23787,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63590:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63590:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23797,
                  "nodeType": "ExpressionStatement",
                  "src": "63590:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63517:3:14",
            "parameters": {
              "id": 23785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23778,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63529:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23799,
                  "src": "63521:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23777,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63521:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23780,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63538:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23799,
                  "src": "63533:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23779,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63533:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23782,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63550:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23799,
                  "src": "63542:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "63542:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23784,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63562:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23799,
                  "src": "63554:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63554:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63520:45:14"
            },
            "returnParameters": {
              "id": 23786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63580:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23822,
            "nodeType": "FunctionDefinition",
            "src": "63696:187:14",
            "body": {
              "id": 23821,
              "nodeType": "Block",
              "src": "63774:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c75696e7432353629",
                            "id": 23813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63824:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_80e6a20b48643c1f2494eae694f173a69e42da349d0e193e48fece80e869df69",
                              "typeString": "literal_string \"log(address,bool,string,uint256)\""
                            },
                            "value": "log(address,bool,string,uint256)"
                          },
                          {
                            "id": 23814,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23801,
                            "src": "63860:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23815,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23803,
                            "src": "63864:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23816,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23805,
                            "src": "63868:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23817,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23807,
                            "src": "63872:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_80e6a20b48643c1f2494eae694f173a69e42da349d0e193e48fece80e869df69",
                              "typeString": "literal_string \"log(address,bool,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23811,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63800:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63804:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63800:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63800:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23810,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63784:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63784:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23820,
                  "nodeType": "ExpressionStatement",
                  "src": "63784:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63705:3:14",
            "parameters": {
              "id": 23808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23801,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63717:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23822,
                  "src": "63709:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23800,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63709:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23803,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63726:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23822,
                  "src": "63721:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23802,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63721:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23805,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63744:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23822,
                  "src": "63730:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23804,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63730:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23807,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63756:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23822,
                  "src": "63748:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23806,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "63748:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63708:51:14"
            },
            "returnParameters": {
              "id": 23809,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63774:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23845,
            "nodeType": "FunctionDefinition",
            "src": "63889:192:14",
            "body": {
              "id": 23844,
              "nodeType": "Block",
              "src": "63973:108:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c737472696e6729",
                            "id": 23836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64023:33:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                              "typeString": "literal_string \"log(address,bool,string,string)\""
                            },
                            "value": "log(address,bool,string,string)"
                          },
                          {
                            "id": 23837,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23824,
                            "src": "64058:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23838,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23826,
                            "src": "64062:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23839,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23828,
                            "src": "64066:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23840,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23830,
                            "src": "64070:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                              "typeString": "literal_string \"log(address,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23834,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63999:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64003:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63999:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23841,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63999:74:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23833,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "63983:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63983:91:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23843,
                  "nodeType": "ExpressionStatement",
                  "src": "63983:91:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63898:3:14",
            "parameters": {
              "id": 23831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23824,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63910:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23845,
                  "src": "63902:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63902:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23826,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63919:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23845,
                  "src": "63914:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23825,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63914:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23828,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63937:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23845,
                  "src": "63923:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23827,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63923:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23830,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63955:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23845,
                  "src": "63941:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23829,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63941:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63901:57:14"
            },
            "returnParameters": {
              "id": 23832,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63973:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23868,
            "nodeType": "FunctionDefinition",
            "src": "64087:181:14",
            "body": {
              "id": 23867,
              "nodeType": "Block",
              "src": "64162:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 23859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64212:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                              "typeString": "literal_string \"log(address,bool,string,bool)\""
                            },
                            "value": "log(address,bool,string,bool)"
                          },
                          {
                            "id": 23860,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23847,
                            "src": "64245:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23861,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23849,
                            "src": "64249:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23862,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23851,
                            "src": "64253:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23863,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23853,
                            "src": "64257:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                              "typeString": "literal_string \"log(address,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23857,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64188:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64192:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64188:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64188:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23856,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "64172:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64172:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23866,
                  "nodeType": "ExpressionStatement",
                  "src": "64172:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64096:3:14",
            "parameters": {
              "id": 23854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23847,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64108:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23868,
                  "src": "64100:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64100:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23849,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64117:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23868,
                  "src": "64112:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23848,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64112:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23851,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64135:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23868,
                  "src": "64121:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23850,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64121:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23853,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64144:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23868,
                  "src": "64139:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23852,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64139:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64099:48:14"
            },
            "returnParameters": {
              "id": 23855,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64162:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23891,
            "nodeType": "FunctionDefinition",
            "src": "64274:187:14",
            "body": {
              "id": 23890,
              "nodeType": "Block",
              "src": "64352:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c6164647265737329",
                            "id": 23882,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64402:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                              "typeString": "literal_string \"log(address,bool,string,address)\""
                            },
                            "value": "log(address,bool,string,address)"
                          },
                          {
                            "id": 23883,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23870,
                            "src": "64438:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23884,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23872,
                            "src": "64442:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23885,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23874,
                            "src": "64446:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 23886,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23876,
                            "src": "64450:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                              "typeString": "literal_string \"log(address,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23880,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64378:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64382:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64378:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64378:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23879,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "64362:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64362:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23889,
                  "nodeType": "ExpressionStatement",
                  "src": "64362:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64283:3:14",
            "parameters": {
              "id": 23877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23870,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64295:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23891,
                  "src": "64287:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23869,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64287:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23872,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64304:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23891,
                  "src": "64299:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23871,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64299:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23874,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64322:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23891,
                  "src": "64308:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23873,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64308:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23876,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64334:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23891,
                  "src": "64326:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64326:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64286:51:14"
            },
            "returnParameters": {
              "id": 23878,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64352:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23914,
            "nodeType": "FunctionDefinition",
            "src": "64467:176:14",
            "body": {
              "id": 23913,
              "nodeType": "Block",
              "src": "64536:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c75696e7432353629",
                            "id": 23905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64586:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8c4e5de62881fec144fb423112f08d23c6aca116363a7b195024519470acf22e",
                              "typeString": "literal_string \"log(address,bool,bool,uint256)\""
                            },
                            "value": "log(address,bool,bool,uint256)"
                          },
                          {
                            "id": 23906,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23893,
                            "src": "64620:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23907,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23895,
                            "src": "64624:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23908,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23897,
                            "src": "64628:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23909,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23899,
                            "src": "64632:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8c4e5de62881fec144fb423112f08d23c6aca116363a7b195024519470acf22e",
                              "typeString": "literal_string \"log(address,bool,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23903,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64562:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64566:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64562:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64562:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23902,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "64546:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64546:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23912,
                  "nodeType": "ExpressionStatement",
                  "src": "64546:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64476:3:14",
            "parameters": {
              "id": 23900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23893,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64488:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23914,
                  "src": "64480:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64480:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23895,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64497:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23914,
                  "src": "64492:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23894,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64492:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23897,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64506:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23914,
                  "src": "64501:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23896,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64501:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23899,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64518:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23914,
                  "src": "64510:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "64510:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64479:42:14"
            },
            "returnParameters": {
              "id": 23901,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64536:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23937,
            "nodeType": "FunctionDefinition",
            "src": "64649:181:14",
            "body": {
              "id": 23936,
              "nodeType": "Block",
              "src": "64724:106:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 23928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64774:31:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                              "typeString": "literal_string \"log(address,bool,bool,string)\""
                            },
                            "value": "log(address,bool,bool,string)"
                          },
                          {
                            "id": 23929,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23916,
                            "src": "64807:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23930,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23918,
                            "src": "64811:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23931,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23920,
                            "src": "64815:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23932,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23922,
                            "src": "64819:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                              "typeString": "literal_string \"log(address,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 23926,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64750:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64754:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64750:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64750:72:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23925,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "64734:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64734:89:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23935,
                  "nodeType": "ExpressionStatement",
                  "src": "64734:89:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64658:3:14",
            "parameters": {
              "id": 23923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23916,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64670:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23937,
                  "src": "64662:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23915,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64662:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23918,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64679:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23937,
                  "src": "64674:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23917,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64674:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23920,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64688:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23937,
                  "src": "64683:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23919,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64683:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23922,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64706:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23937,
                  "src": "64692:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23921,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64692:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64661:48:14"
            },
            "returnParameters": {
              "id": 23924,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64724:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23960,
            "nodeType": "FunctionDefinition",
            "src": "64836:170:14",
            "body": {
              "id": 23959,
              "nodeType": "Block",
              "src": "64902:104:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 23951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64952:29:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                              "typeString": "literal_string \"log(address,bool,bool,bool)\""
                            },
                            "value": "log(address,bool,bool,bool)"
                          },
                          {
                            "id": 23952,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23939,
                            "src": "64983:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23953,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23941,
                            "src": "64987:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23954,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23943,
                            "src": "64991:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23955,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23945,
                            "src": "64995:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                              "typeString": "literal_string \"log(address,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 23949,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64928:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64932:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64928:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64928:70:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23948,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "64912:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64912:87:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23958,
                  "nodeType": "ExpressionStatement",
                  "src": "64912:87:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64845:3:14",
            "parameters": {
              "id": 23946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23939,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64857:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23960,
                  "src": "64849:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64849:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23941,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64866:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23960,
                  "src": "64861:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23940,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64861:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23943,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64875:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23960,
                  "src": "64870:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23942,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64870:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23945,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64884:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23960,
                  "src": "64879:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23944,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64879:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64848:39:14"
            },
            "returnParameters": {
              "id": 23947,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64902:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 23983,
            "nodeType": "FunctionDefinition",
            "src": "65012:176:14",
            "body": {
              "id": 23982,
              "nodeType": "Block",
              "src": "65081:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 23974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65131:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                              "typeString": "literal_string \"log(address,bool,bool,address)\""
                            },
                            "value": "log(address,bool,bool,address)"
                          },
                          {
                            "id": 23975,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23962,
                            "src": "65165:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23976,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23964,
                            "src": "65169:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23977,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23966,
                            "src": "65173:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 23978,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23968,
                            "src": "65177:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                              "typeString": "literal_string \"log(address,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 23972,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65107:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65111:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65107:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 23979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65107:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23971,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "65091:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 23980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65091:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23981,
                  "nodeType": "ExpressionStatement",
                  "src": "65091:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65021:3:14",
            "parameters": {
              "id": 23969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23962,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65033:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23983,
                  "src": "65025:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23961,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65025:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23964,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65042:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23983,
                  "src": "65037:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23963,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65037:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23966,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65051:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23983,
                  "src": "65046:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23965,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65046:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23968,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65063:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 23983,
                  "src": "65055:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65055:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65024:42:14"
            },
            "returnParameters": {
              "id": 23970,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65081:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24006,
            "nodeType": "FunctionDefinition",
            "src": "65194:182:14",
            "body": {
              "id": 24005,
              "nodeType": "Block",
              "src": "65266:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c75696e7432353629",
                            "id": 23997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65316:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a75c59de36827f2596ade7bd79f668ae219518c12b79ebf06071586765c3e039",
                              "typeString": "literal_string \"log(address,bool,address,uint256)\""
                            },
                            "value": "log(address,bool,address,uint256)"
                          },
                          {
                            "id": 23998,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23985,
                            "src": "65353:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 23999,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23987,
                            "src": "65357:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24000,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23989,
                            "src": "65361:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24001,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23991,
                            "src": "65365:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a75c59de36827f2596ade7bd79f668ae219518c12b79ebf06071586765c3e039",
                              "typeString": "literal_string \"log(address,bool,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 23995,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65292:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 23996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65296:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65292:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65292:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 23994,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "65276:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65276:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24004,
                  "nodeType": "ExpressionStatement",
                  "src": "65276:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65203:3:14",
            "parameters": {
              "id": 23992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23985,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65215:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24006,
                  "src": "65207:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65207:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23987,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65224:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24006,
                  "src": "65219:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23986,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65219:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23989,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65236:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24006,
                  "src": "65228:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23988,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65228:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23991,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65248:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24006,
                  "src": "65240:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23990,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "65240:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65206:45:14"
            },
            "returnParameters": {
              "id": 23993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65266:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24029,
            "nodeType": "FunctionDefinition",
            "src": "65382:187:14",
            "body": {
              "id": 24028,
              "nodeType": "Block",
              "src": "65460:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c737472696e6729",
                            "id": 24020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65510:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                              "typeString": "literal_string \"log(address,bool,address,string)\""
                            },
                            "value": "log(address,bool,address,string)"
                          },
                          {
                            "id": 24021,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24008,
                            "src": "65546:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24022,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24010,
                            "src": "65550:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24023,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24012,
                            "src": "65554:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24024,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24014,
                            "src": "65558:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                              "typeString": "literal_string \"log(address,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24018,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65486:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65490:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65486:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65486:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24017,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "65470:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65470:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24027,
                  "nodeType": "ExpressionStatement",
                  "src": "65470:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65391:3:14",
            "parameters": {
              "id": 24015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24008,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65403:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24029,
                  "src": "65395:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65395:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24010,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65412:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24029,
                  "src": "65407:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24009,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65407:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24012,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65424:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24029,
                  "src": "65416:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24011,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65416:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24014,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65442:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24029,
                  "src": "65428:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24013,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "65428:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65394:51:14"
            },
            "returnParameters": {
              "id": 24016,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65460:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24052,
            "nodeType": "FunctionDefinition",
            "src": "65575:176:14",
            "body": {
              "id": 24051,
              "nodeType": "Block",
              "src": "65644:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 24043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65694:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                              "typeString": "literal_string \"log(address,bool,address,bool)\""
                            },
                            "value": "log(address,bool,address,bool)"
                          },
                          {
                            "id": 24044,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24031,
                            "src": "65728:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24045,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24033,
                            "src": "65732:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24046,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24035,
                            "src": "65736:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24047,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24037,
                            "src": "65740:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                              "typeString": "literal_string \"log(address,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 24041,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65670:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65674:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65670:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65670:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24040,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "65654:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65654:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24050,
                  "nodeType": "ExpressionStatement",
                  "src": "65654:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65584:3:14",
            "parameters": {
              "id": 24038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24031,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65596:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24052,
                  "src": "65588:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65588:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24033,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65605:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24052,
                  "src": "65600:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24032,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65600:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24035,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65617:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24052,
                  "src": "65609:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24034,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65609:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24037,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65626:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24052,
                  "src": "65621:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24036,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65621:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65587:42:14"
            },
            "returnParameters": {
              "id": 24039,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65644:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24075,
            "nodeType": "FunctionDefinition",
            "src": "65757:182:14",
            "body": {
              "id": 24074,
              "nodeType": "Block",
              "src": "65829:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c6164647265737329",
                            "id": 24066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65879:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                              "typeString": "literal_string \"log(address,bool,address,address)\""
                            },
                            "value": "log(address,bool,address,address)"
                          },
                          {
                            "id": 24067,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24054,
                            "src": "65916:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24068,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24056,
                            "src": "65920:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24069,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24058,
                            "src": "65924:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24070,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24060,
                            "src": "65928:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                              "typeString": "literal_string \"log(address,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 24064,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65855:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65859:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65855:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65855:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24063,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "65839:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65839:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24073,
                  "nodeType": "ExpressionStatement",
                  "src": "65839:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65766:3:14",
            "parameters": {
              "id": 24061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24054,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65778:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24075,
                  "src": "65770:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24053,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65770:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24056,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65787:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24075,
                  "src": "65782:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24055,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65782:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24058,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65799:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24075,
                  "src": "65791:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24057,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65791:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24060,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65811:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24075,
                  "src": "65803:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65803:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65769:45:14"
            },
            "returnParameters": {
              "id": 24062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65829:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24098,
            "nodeType": "FunctionDefinition",
            "src": "65945:188:14",
            "body": {
              "id": 24097,
              "nodeType": "Block",
              "src": "66020:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e743235362c75696e7432353629",
                            "id": 24089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66070:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_be55348107f27daf63b48e87ab23840f2cbf20bdfa1dd4b92b4c2b337967fa25",
                              "typeString": "literal_string \"log(address,address,uint256,uint256)\""
                            },
                            "value": "log(address,address,uint256,uint256)"
                          },
                          {
                            "id": 24090,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24077,
                            "src": "66110:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24091,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24079,
                            "src": "66114:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24092,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24081,
                            "src": "66118:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24093,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24083,
                            "src": "66122:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_be55348107f27daf63b48e87ab23840f2cbf20bdfa1dd4b92b4c2b337967fa25",
                              "typeString": "literal_string \"log(address,address,uint256,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 24087,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66046:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66050:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66046:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66046:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24086,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "66030:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66030:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24096,
                  "nodeType": "ExpressionStatement",
                  "src": "66030:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65954:3:14",
            "parameters": {
              "id": 24084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24077,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65966:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24098,
                  "src": "65958:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24076,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65958:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24079,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65978:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24098,
                  "src": "65970:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24078,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65970:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24081,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65990:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24098,
                  "src": "65982:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24080,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "65982:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24083,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66002:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24098,
                  "src": "65994:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24082,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "65994:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65957:48:14"
            },
            "returnParameters": {
              "id": 24085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66020:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24121,
            "nodeType": "FunctionDefinition",
            "src": "66139:193:14",
            "body": {
              "id": 24120,
              "nodeType": "Block",
              "src": "66220:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e743235362c737472696e6729",
                            "id": 24112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66270:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fdb4f99053c71d9229026b69fabc5567b4324649a228ca0935bada4975f57343",
                              "typeString": "literal_string \"log(address,address,uint256,string)\""
                            },
                            "value": "log(address,address,uint256,string)"
                          },
                          {
                            "id": 24113,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24100,
                            "src": "66309:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24114,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24102,
                            "src": "66313:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24115,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24104,
                            "src": "66317:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24116,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24106,
                            "src": "66321:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fdb4f99053c71d9229026b69fabc5567b4324649a228ca0935bada4975f57343",
                              "typeString": "literal_string \"log(address,address,uint256,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24110,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66246:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66250:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66246:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66246:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24109,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "66230:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66230:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24119,
                  "nodeType": "ExpressionStatement",
                  "src": "66230:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66148:3:14",
            "parameters": {
              "id": 24107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24100,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66160:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24121,
                  "src": "66152:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24099,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66152:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24102,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66172:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24121,
                  "src": "66164:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66164:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24104,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66184:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24121,
                  "src": "66176:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24103,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "66176:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24106,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66202:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24121,
                  "src": "66188:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24105,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "66188:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66151:54:14"
            },
            "returnParameters": {
              "id": 24108,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66220:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24144,
            "nodeType": "FunctionDefinition",
            "src": "66338:182:14",
            "body": {
              "id": 24143,
              "nodeType": "Block",
              "src": "66410:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e743235362c626f6f6c29",
                            "id": 24135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66460:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9b4254e23753cb4c7d637e38638d109b03aeabf8705961d18d943c5bfa6672cd",
                              "typeString": "literal_string \"log(address,address,uint256,bool)\""
                            },
                            "value": "log(address,address,uint256,bool)"
                          },
                          {
                            "id": 24136,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24123,
                            "src": "66497:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24137,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24125,
                            "src": "66501:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24138,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24127,
                            "src": "66505:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24139,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24129,
                            "src": "66509:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9b4254e23753cb4c7d637e38638d109b03aeabf8705961d18d943c5bfa6672cd",
                              "typeString": "literal_string \"log(address,address,uint256,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 24133,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66436:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66440:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66436:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66436:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24132,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "66420:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24141,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66420:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24142,
                  "nodeType": "ExpressionStatement",
                  "src": "66420:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66347:3:14",
            "parameters": {
              "id": 24130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24123,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66359:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24144,
                  "src": "66351:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24122,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66351:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24125,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66371:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24144,
                  "src": "66363:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24124,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66363:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24127,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66383:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24144,
                  "src": "66375:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24126,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "66375:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24129,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66392:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24144,
                  "src": "66387:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24128,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "66387:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66350:45:14"
            },
            "returnParameters": {
              "id": 24131,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66410:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24167,
            "nodeType": "FunctionDefinition",
            "src": "66526:188:14",
            "body": {
              "id": 24166,
              "nodeType": "Block",
              "src": "66601:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e743235362c6164647265737329",
                            "id": 24158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66651:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8da6def55c582f2ce59d561e896a66e570478eda5169747a6ea3575cfa60d28b",
                              "typeString": "literal_string \"log(address,address,uint256,address)\""
                            },
                            "value": "log(address,address,uint256,address)"
                          },
                          {
                            "id": 24159,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24146,
                            "src": "66691:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24160,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24148,
                            "src": "66695:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24161,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24150,
                            "src": "66699:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24162,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24152,
                            "src": "66703:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8da6def55c582f2ce59d561e896a66e570478eda5169747a6ea3575cfa60d28b",
                              "typeString": "literal_string \"log(address,address,uint256,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 24156,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66627:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66631:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66627:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66627:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24155,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "66611:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66611:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24165,
                  "nodeType": "ExpressionStatement",
                  "src": "66611:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66535:3:14",
            "parameters": {
              "id": 24153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24146,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66547:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24167,
                  "src": "66539:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24145,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66539:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24148,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66559:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24167,
                  "src": "66551:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24147,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66551:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24150,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66571:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24167,
                  "src": "66563:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "66563:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24152,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66583:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24167,
                  "src": "66575:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24151,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66575:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66538:48:14"
            },
            "returnParameters": {
              "id": 24154,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66601:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24190,
            "nodeType": "FunctionDefinition",
            "src": "66720:193:14",
            "body": {
              "id": 24189,
              "nodeType": "Block",
              "src": "66801:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c75696e7432353629",
                            "id": 24181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66851:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ef1cefe7e092dcc5b0ed6bc72a78756f9c352fc002139efb9b181c734d5d45d5",
                              "typeString": "literal_string \"log(address,address,string,uint256)\""
                            },
                            "value": "log(address,address,string,uint256)"
                          },
                          {
                            "id": 24182,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24169,
                            "src": "66890:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24183,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24171,
                            "src": "66894:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24184,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24173,
                            "src": "66898:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 24185,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24175,
                            "src": "66902:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ef1cefe7e092dcc5b0ed6bc72a78756f9c352fc002139efb9b181c734d5d45d5",
                              "typeString": "literal_string \"log(address,address,string,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 24179,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66827:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66831:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66827:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66827:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24178,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "66811:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66811:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24188,
                  "nodeType": "ExpressionStatement",
                  "src": "66811:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66729:3:14",
            "parameters": {
              "id": 24176,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24169,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66741:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24190,
                  "src": "66733:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24168,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66733:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24171,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66753:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24190,
                  "src": "66745:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24170,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66745:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24173,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66771:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24190,
                  "src": "66757:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24172,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "66757:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24175,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66783:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24190,
                  "src": "66775:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24174,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "66775:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66732:54:14"
            },
            "returnParameters": {
              "id": 24177,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66801:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24213,
            "nodeType": "FunctionDefinition",
            "src": "66919:198:14",
            "body": {
              "id": 24212,
              "nodeType": "Block",
              "src": "67006:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c737472696e6729",
                            "id": 24204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "67056:36:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                              "typeString": "literal_string \"log(address,address,string,string)\""
                            },
                            "value": "log(address,address,string,string)"
                          },
                          {
                            "id": 24205,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24192,
                            "src": "67094:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24206,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24194,
                            "src": "67098:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24207,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24196,
                            "src": "67102:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 24208,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24198,
                            "src": "67106:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                              "typeString": "literal_string \"log(address,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24202,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67032:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67036:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67032:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67032:77:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24201,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67016:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67016:94:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24211,
                  "nodeType": "ExpressionStatement",
                  "src": "67016:94:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66928:3:14",
            "parameters": {
              "id": 24199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24192,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66940:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24213,
                  "src": "66932:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24191,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66932:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24194,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66952:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24213,
                  "src": "66944:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66944:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24196,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66970:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24213,
                  "src": "66956:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24195,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "66956:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24198,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66988:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24213,
                  "src": "66974:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24197,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "66974:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66931:60:14"
            },
            "returnParameters": {
              "id": 24200,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67006:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24236,
            "nodeType": "FunctionDefinition",
            "src": "67123:187:14",
            "body": {
              "id": 24235,
              "nodeType": "Block",
              "src": "67201:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c626f6f6c29",
                            "id": 24227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "67251:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                              "typeString": "literal_string \"log(address,address,string,bool)\""
                            },
                            "value": "log(address,address,string,bool)"
                          },
                          {
                            "id": 24228,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24215,
                            "src": "67287:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24229,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24217,
                            "src": "67291:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24230,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24219,
                            "src": "67295:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 24231,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24221,
                            "src": "67299:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                              "typeString": "literal_string \"log(address,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 24225,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67227:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67231:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67227:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67227:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24224,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67211:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67211:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24234,
                  "nodeType": "ExpressionStatement",
                  "src": "67211:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "67132:3:14",
            "parameters": {
              "id": 24222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24215,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "67144:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24236,
                  "src": "67136:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24214,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67136:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24217,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "67156:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24236,
                  "src": "67148:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24216,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67148:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24219,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "67174:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24236,
                  "src": "67160:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24218,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "67160:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24221,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "67183:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24236,
                  "src": "67178:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24220,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "67178:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "67135:51:14"
            },
            "returnParameters": {
              "id": 24223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67201:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24259,
            "nodeType": "FunctionDefinition",
            "src": "67316:193:14",
            "body": {
              "id": 24258,
              "nodeType": "Block",
              "src": "67397:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c6164647265737329",
                            "id": 24250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "67447:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                              "typeString": "literal_string \"log(address,address,string,address)\""
                            },
                            "value": "log(address,address,string,address)"
                          },
                          {
                            "id": 24251,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24238,
                            "src": "67486:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24252,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24240,
                            "src": "67490:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24253,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24242,
                            "src": "67494:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 24254,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24244,
                            "src": "67498:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                              "typeString": "literal_string \"log(address,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 24248,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67423:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67427:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67423:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67423:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24247,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67407:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67407:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24257,
                  "nodeType": "ExpressionStatement",
                  "src": "67407:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "67325:3:14",
            "parameters": {
              "id": 24245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24238,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "67337:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24259,
                  "src": "67329:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24237,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67329:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24240,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "67349:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24259,
                  "src": "67341:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24239,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67341:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24242,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "67367:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24259,
                  "src": "67353:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24241,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "67353:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24244,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "67379:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24259,
                  "src": "67371:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24243,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67371:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "67328:54:14"
            },
            "returnParameters": {
              "id": 24246,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67397:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24282,
            "nodeType": "FunctionDefinition",
            "src": "67515:182:14",
            "body": {
              "id": 24281,
              "nodeType": "Block",
              "src": "67587:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c75696e7432353629",
                            "id": 24273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "67637:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3971e78c267e3c99a8d143ab93f96daa498ed164b55c7e4c2a5439320fbc2671",
                              "typeString": "literal_string \"log(address,address,bool,uint256)\""
                            },
                            "value": "log(address,address,bool,uint256)"
                          },
                          {
                            "id": 24274,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24261,
                            "src": "67674:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24275,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24263,
                            "src": "67678:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24276,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24265,
                            "src": "67682:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24277,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24267,
                            "src": "67686:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3971e78c267e3c99a8d143ab93f96daa498ed164b55c7e4c2a5439320fbc2671",
                              "typeString": "literal_string \"log(address,address,bool,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 24271,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67613:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67617:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67613:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67613:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24270,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67597:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67597:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24280,
                  "nodeType": "ExpressionStatement",
                  "src": "67597:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "67524:3:14",
            "parameters": {
              "id": 24268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24261,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "67536:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24282,
                  "src": "67528:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24260,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67528:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24263,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "67548:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24282,
                  "src": "67540:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67540:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24265,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "67557:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24282,
                  "src": "67552:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24264,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "67552:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24267,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "67569:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24282,
                  "src": "67561:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "67561:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "67527:45:14"
            },
            "returnParameters": {
              "id": 24269,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67587:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24305,
            "nodeType": "FunctionDefinition",
            "src": "67703:187:14",
            "body": {
              "id": 24304,
              "nodeType": "Block",
              "src": "67781:109:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c737472696e6729",
                            "id": 24296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "67831:34:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                              "typeString": "literal_string \"log(address,address,bool,string)\""
                            },
                            "value": "log(address,address,bool,string)"
                          },
                          {
                            "id": 24297,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24284,
                            "src": "67867:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24298,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24286,
                            "src": "67871:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24299,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24288,
                            "src": "67875:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24300,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24290,
                            "src": "67879:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                              "typeString": "literal_string \"log(address,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24294,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67807:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67811:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67807:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67807:75:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24293,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67791:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67791:92:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24303,
                  "nodeType": "ExpressionStatement",
                  "src": "67791:92:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "67712:3:14",
            "parameters": {
              "id": 24291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24284,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "67724:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24305,
                  "src": "67716:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24283,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67716:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24286,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "67736:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24305,
                  "src": "67728:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24285,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67728:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24288,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "67745:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24305,
                  "src": "67740:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24287,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "67740:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24290,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "67763:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24305,
                  "src": "67749:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24289,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "67749:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "67715:51:14"
            },
            "returnParameters": {
              "id": 24292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67781:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24328,
            "nodeType": "FunctionDefinition",
            "src": "67896:176:14",
            "body": {
              "id": 24327,
              "nodeType": "Block",
              "src": "67965:107:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 24319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68015:32:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                              "typeString": "literal_string \"log(address,address,bool,bool)\""
                            },
                            "value": "log(address,address,bool,bool)"
                          },
                          {
                            "id": 24320,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24307,
                            "src": "68049:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24321,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24309,
                            "src": "68053:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24322,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24311,
                            "src": "68057:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24323,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24313,
                            "src": "68061:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                              "typeString": "literal_string \"log(address,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 24317,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "67991:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "67995:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "67991:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "67991:73:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24316,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "67975:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "67975:90:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24326,
                  "nodeType": "ExpressionStatement",
                  "src": "67975:90:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "67905:3:14",
            "parameters": {
              "id": 24314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24307,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "67917:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24328,
                  "src": "67909:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24306,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67909:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24309,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "67929:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24328,
                  "src": "67921:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24308,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "67921:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24311,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "67938:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24328,
                  "src": "67933:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24310,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "67933:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24313,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "67947:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24328,
                  "src": "67942:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24312,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "67942:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "67908:42:14"
            },
            "returnParameters": {
              "id": 24315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "67965:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24351,
            "nodeType": "FunctionDefinition",
            "src": "68078:182:14",
            "body": {
              "id": 24350,
              "nodeType": "Block",
              "src": "68150:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c6164647265737329",
                            "id": 24342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68200:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                              "typeString": "literal_string \"log(address,address,bool,address)\""
                            },
                            "value": "log(address,address,bool,address)"
                          },
                          {
                            "id": 24343,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24330,
                            "src": "68237:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24344,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24332,
                            "src": "68241:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24345,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24334,
                            "src": "68245:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 24346,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24336,
                            "src": "68249:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                              "typeString": "literal_string \"log(address,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 24340,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "68176:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "68180:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "68176:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "68176:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24339,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "68160:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "68160:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24349,
                  "nodeType": "ExpressionStatement",
                  "src": "68160:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "68087:3:14",
            "parameters": {
              "id": 24337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24330,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "68099:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24351,
                  "src": "68091:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68091:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24332,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "68111:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24351,
                  "src": "68103:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68103:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24334,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "68120:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24351,
                  "src": "68115:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24333,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "68115:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24336,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "68132:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24351,
                  "src": "68124:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24335,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68124:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "68090:45:14"
            },
            "returnParameters": {
              "id": 24338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "68150:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24374,
            "nodeType": "FunctionDefinition",
            "src": "68266:188:14",
            "body": {
              "id": 24373,
              "nodeType": "Block",
              "src": "68341:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c75696e7432353629",
                            "id": 24365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68391:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_94250d77556167cb7a7fd3eb9433101f8af8848163edfced0c46147ba10a2577",
                              "typeString": "literal_string \"log(address,address,address,uint256)\""
                            },
                            "value": "log(address,address,address,uint256)"
                          },
                          {
                            "id": 24366,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24353,
                            "src": "68431:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24367,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24355,
                            "src": "68435:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24368,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24357,
                            "src": "68439:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24369,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24359,
                            "src": "68443:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_94250d77556167cb7a7fd3eb9433101f8af8848163edfced0c46147ba10a2577",
                              "typeString": "literal_string \"log(address,address,address,uint256)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 24363,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "68367:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "68371:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "68367:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "68367:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24362,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "68351:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "68351:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24372,
                  "nodeType": "ExpressionStatement",
                  "src": "68351:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "68275:3:14",
            "parameters": {
              "id": 24360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24353,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "68287:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24374,
                  "src": "68279:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68279:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24355,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "68299:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24374,
                  "src": "68291:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68291:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24357,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "68311:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24374,
                  "src": "68303:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68303:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24359,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "68323:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24374,
                  "src": "68315:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "68315:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "68278:48:14"
            },
            "returnParameters": {
              "id": 24361,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "68341:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24397,
            "nodeType": "FunctionDefinition",
            "src": "68460:193:14",
            "body": {
              "id": 24396,
              "nodeType": "Block",
              "src": "68541:112:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c737472696e6729",
                            "id": 24388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68591:37:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                              "typeString": "literal_string \"log(address,address,address,string)\""
                            },
                            "value": "log(address,address,address,string)"
                          },
                          {
                            "id": 24389,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24376,
                            "src": "68630:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24390,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24378,
                            "src": "68634:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24391,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24380,
                            "src": "68638:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24392,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24382,
                            "src": "68642:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                              "typeString": "literal_string \"log(address,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 24386,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "68567:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "68571:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "68567:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "68567:78:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24385,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "68551:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "68551:95:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24395,
                  "nodeType": "ExpressionStatement",
                  "src": "68551:95:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "68469:3:14",
            "parameters": {
              "id": 24383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24376,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "68481:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24397,
                  "src": "68473:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68473:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24378,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "68493:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24397,
                  "src": "68485:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24377,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68485:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24380,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "68505:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24397,
                  "src": "68497:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68497:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24382,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "68523:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24397,
                  "src": "68509:16:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24381,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "68509:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "68472:54:14"
            },
            "returnParameters": {
              "id": 24384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "68541:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24420,
            "nodeType": "FunctionDefinition",
            "src": "68659:182:14",
            "body": {
              "id": 24419,
              "nodeType": "Block",
              "src": "68731:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c626f6f6c29",
                            "id": 24411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68781:35:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                              "typeString": "literal_string \"log(address,address,address,bool)\""
                            },
                            "value": "log(address,address,address,bool)"
                          },
                          {
                            "id": 24412,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24399,
                            "src": "68818:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24413,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24401,
                            "src": "68822:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24414,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24403,
                            "src": "68826:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24415,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24405,
                            "src": "68830:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                              "typeString": "literal_string \"log(address,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 24409,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "68757:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "68761:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "68757:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "68757:76:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24408,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "68741:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "68741:93:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24418,
                  "nodeType": "ExpressionStatement",
                  "src": "68741:93:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "68668:3:14",
            "parameters": {
              "id": 24406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24399,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "68680:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24420,
                  "src": "68672:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24398,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68672:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24401,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "68692:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24420,
                  "src": "68684:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24400,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68684:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24403,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "68704:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24420,
                  "src": "68696:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24402,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68696:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24405,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "68713:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24420,
                  "src": "68708:7:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24404,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "68708:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "68671:45:14"
            },
            "returnParameters": {
              "id": 24407,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "68731:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 24443,
            "nodeType": "FunctionDefinition",
            "src": "68847:188:14",
            "body": {
              "id": 24442,
              "nodeType": "Block",
              "src": "68922:113:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c6164647265737329",
                            "id": 24434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "68972:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                              "typeString": "literal_string \"log(address,address,address,address)\""
                            },
                            "value": "log(address,address,address,address)"
                          },
                          {
                            "id": 24435,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24422,
                            "src": "69012:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24436,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24424,
                            "src": "69016:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24437,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24426,
                            "src": "69020:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24438,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24428,
                            "src": "69024:2:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                              "typeString": "literal_string \"log(address,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 24432,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "68948:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 24433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "68952:19:14",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "68948:23:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 24439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "68948:79:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24431,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16404,
                      "src": "68932:15:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 24440,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "68932:96:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24441,
                  "nodeType": "ExpressionStatement",
                  "src": "68932:96:14"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "68856:3:14",
            "parameters": {
              "id": 24429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24422,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "68868:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24443,
                  "src": "68860:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68860:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24424,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "68880:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24443,
                  "src": "68872:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68872:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24426,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "68892:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24443,
                  "src": "68884:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68884:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24428,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "68904:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 24443,
                  "src": "68896:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24427,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "68896:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "68859:48:14"
            },
            "returnParameters": {
              "id": 24430,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "68922:0:14"
            },
            "scope": 24444,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "console2",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 16382,
          "nodeType": "StructuredDocumentation",
          "src": "66:459:14",
          "text": "@dev The original console.sol uses `int` and `uint` for computing function selectors, but it should\n use `int256` and `uint256`. This modified version fixes that. This version is recommended\n over `console.sol` if you don't need compatibility with Hardhat as the logs will show up in\n forge stack traces. If you do need compatibility with Hardhat, you must use `console.sol`.\n Reference: https://github.com/NomicFoundation/hardhat/issues/2178"
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          24444
        ],
        "name": "console2",
        "nameLocation": "533:8:14",
        "scope": 24445,
        "usedErrors": []
      }
    ],
    "license": "MIT"
  },
  "id": 14
}