{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "EIP712_TYPE_HASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "digest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "getSigner",
      "outputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "structHash",
          "type": "bytes32"
        }
      ],
      "name": "getTypedDataV4Hash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "12": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
    "13": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/cryptography/ECDSA.sol",
    "54": "contracts/EIP712.sol"
  },
  "ast": {
    "absolutePath": "contracts/EIP712.sol",
    "exportedSymbols": {
      "ECDSA": [
        13816
      ],
      "EIP712": [
        4683
      ]
    },
    "id": 4684,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4581,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:22:54"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/cryptography/ECDSA.sol",
        "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
        "id": 4583,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4684,
        "sourceUnit": 13817,
        "src": "63:75:54",
        "symbolAliases": [
          {
            "foreign": {
              "id": 4582,
              "name": "ECDSA",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "71:5:54",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4683,
        "linearizedBaseContracts": [
          4683
        ],
        "name": "EIP712",
        "nameLocation": "149:6:54",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "74a640ff",
            "id": 4588,
            "mutability": "constant",
            "name": "EIP712_TYPE_HASH",
            "nameLocation": "187:16:54",
            "nodeType": "VariableDeclaration",
            "scope": 4683,
            "src": "163:146:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4584,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "163:7:54",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                  "id": 4586,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "224:84:54",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                  },
                  "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                    "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                  }
                ],
                "id": 4585,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "214:9:54",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 4587,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "214:95:54",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4590,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "331:5:54",
            "nodeType": "VariableDeclaration",
            "scope": 4683,
            "src": "316:20:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 4589,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "316:6:54",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 4592,
            "mutability": "mutable",
            "name": "_version",
            "nameLocation": "357:8:54",
            "nodeType": "VariableDeclaration",
            "scope": 4683,
            "src": "342:23:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 4591,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "342:6:54",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 4594,
            "mutability": "mutable",
            "name": "_hashedName",
            "nameLocation": "388:11:54",
            "nodeType": "VariableDeclaration",
            "scope": 4683,
            "src": "372:27:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4593,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "372:7:54",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 4596,
            "mutability": "mutable",
            "name": "_hashedVersion",
            "nameLocation": "421:14:54",
            "nodeType": "VariableDeclaration",
            "scope": 4683,
            "src": "405:30:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4595,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "405:7:54",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 4629,
              "nodeType": "Block",
              "src": "498:155:54",
              "statements": [
                {
                  "expression": {
                    "id": 4605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4603,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4590,
                      "src": "508:5:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4604,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4598,
                      "src": "516:4:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "508:12:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4606,
                  "nodeType": "ExpressionStatement",
                  "src": "508:12:54"
                },
                {
                  "expression": {
                    "id": 4609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4607,
                      "name": "_version",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4592,
                      "src": "530:8:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4608,
                      "name": "version",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4600,
                      "src": "541:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "530:18:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 4610,
                  "nodeType": "ExpressionStatement",
                  "src": "530:18:54"
                },
                {
                  "expression": {
                    "id": 4618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4611,
                      "name": "_hashedName",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4594,
                      "src": "558:11:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 4615,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4598,
                              "src": "588:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "582:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4613,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "582:5:54",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "582:11:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4612,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "572:9:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 4617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "572:22:54",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "558:36:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4619,
                  "nodeType": "ExpressionStatement",
                  "src": "558:36:54"
                },
                {
                  "expression": {
                    "id": 4627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4620,
                      "name": "_hashedVersion",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4596,
                      "src": "604:14:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 4624,
                              "name": "version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4600,
                              "src": "637:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "631:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4622,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "631:5:54",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "631:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 4621,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "621:9:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 4626,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "621:25:54",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "604:42:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4628,
                  "nodeType": "ExpressionStatement",
                  "src": "604:42:54"
                }
              ]
            },
            "id": 4630,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4598,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "469:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "455:18:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4597,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "455:6:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4600,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "489:7:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4630,
                  "src": "475:21:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4599,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "475:6:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "454:43:54"
            },
            "returnParameters": {
              "id": 4602,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "498:0:54"
            },
            "scope": 4683,
            "src": "443:210:54",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4645,
              "nodeType": "Block",
              "src": "807:56:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4641,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4632,
                        "src": "838:6:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4642,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4634,
                        "src": "846:9:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 4639,
                        "name": "ECDSA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13816,
                        "src": "824:5:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ECDSA_$13816_$",
                          "typeString": "type(library ECDSA)"
                        }
                      },
                      "id": 4640,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recover",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13565,
                      "src": "824:13:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 4643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "824:32:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 4638,
                  "id": 4644,
                  "nodeType": "Return",
                  "src": "817:39:54"
                }
              ]
            },
            "functionSelector": "f7b2ec0d",
            "id": 4646,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSigner",
            "nameLocation": "669:9:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4632,
                  "mutability": "mutable",
                  "name": "digest",
                  "nameLocation": "696:6:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4646,
                  "src": "688:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4631,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "688:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4634,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "727:9:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4646,
                  "src": "712:24:54",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4633,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "712:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "678:64:54"
            },
            "returnParameters": {
              "id": 4638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4637,
                  "mutability": "mutable",
                  "name": "signer",
                  "nameLocation": "795:6:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4646,
                  "src": "787:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4636,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "787:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "786:16:54"
            },
            "scope": 4683,
            "src": "660:203:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4660,
              "nodeType": "Block",
              "src": "1108:82:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 4655,
                          "name": "_buildDomainSeparator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4682,
                          "src": "1147:21:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                            "typeString": "function () view returns (bytes32)"
                          }
                        },
                        "id": 4656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1147:23:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4657,
                        "name": "structHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4648,
                        "src": "1172:10:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 4653,
                        "name": "ECDSA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13816,
                        "src": "1125:5:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ECDSA_$13816_$",
                          "typeString": "type(library ECDSA)"
                        }
                      },
                      "id": 4654,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toTypedDataHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13815,
                      "src": "1125:21:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                      }
                    },
                    "id": 4658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1125:58:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4652,
                  "id": 4659,
                  "nodeType": "Return",
                  "src": "1118:65:54"
                }
              ]
            },
            "functionSelector": "0ff28b0c",
            "id": 4661,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTypedDataV4Hash",
            "nameLocation": "1039:18:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4648,
                  "mutability": "mutable",
                  "name": "structHash",
                  "nameLocation": "1066:10:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 4661,
                  "src": "1058:18:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1058:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1057:20:54"
            },
            "returnParameters": {
              "id": 4652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4651,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4661,
                  "src": "1099:7:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4650,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1099:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1098:9:54"
            },
            "scope": 4683,
            "src": "1030:160:54",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4681,
              "nodeType": "Block",
              "src": "1261:220:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 4669,
                            "name": "EIP712_TYPE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4588,
                            "src": "1329:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 4670,
                            "name": "_hashedName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4594,
                            "src": "1364:11:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 4671,
                            "name": "_hashedVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4596,
                            "src": "1394:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 4672,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1427:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 4673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "1427:13:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 4676,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "1467:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_EIP712_$4683",
                                  "typeString": "contract EIP712"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_EIP712_$4683",
                                  "typeString": "contract EIP712"
                                }
                              ],
                              "id": 4675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1459:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4674,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1459:7:54",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1459:13:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 4667,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1301:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 4668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "1301:10:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 4678,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1301:172:54",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 4666,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1278:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 4679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1278:196:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4665,
                  "id": 4680,
                  "nodeType": "Return",
                  "src": "1271:203:54"
                }
              ]
            },
            "id": 4682,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_buildDomainSeparator",
            "nameLocation": "1206:21:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4662,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1227:2:54"
            },
            "returnParameters": {
              "id": 4665,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4664,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4682,
                  "src": "1252:7:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4663,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1252:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1251:9:54"
            },
            "scope": 4683,
            "src": "1197:284:54",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 4684,
        "src": "140:1343:54"
      }
    ],
    "src": "39:1444:54"
  },
  "bytecode": "608060405234801561001057600080fd5b5060405161085738038061085783398101604081905261002f916101b0565b815161004290600090602085019061006f565b50805161005690600190602084019061006f565b5081516020928301206002558051910120600355610261565b82805461007b90610210565b90600052602060002090601f01602090048101928261009d57600085556100e3565b82601f106100b657805160ff19168380011785556100e3565b828001600101855582156100e3579182015b828111156100e35782518255916020019190600101906100c8565b506100ef9291506100f3565b5090565b5b808211156100ef57600081556001016100f4565b600082601f830112610118578081fd5b81516001600160401b03808211156101325761013261024b565b604051601f8301601f19908116603f0116810190828211818310171561015a5761015a61024b565b81604052838152602092508683858801011115610175578485fd5b8491505b838210156101965785820183015181830184015290820190610179565b838211156101a657848385830101525b9695505050505050565b600080604083850312156101c2578182fd5b82516001600160401b03808211156101d8578384fd5b6101e486838701610108565b935060208501519150808211156101f9578283fd5b5061020685828601610108565b9150509250929050565b60028104600182168061022457607f821691505b6020821081141561024557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6105e7806102706000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ff28b0c1461004657806374a640ff1461006c578063f7b2ec0d14610093575b600080fd5b610059610054366004610522565b6100be565b6040519081526020015b60405180910390f35b6100597f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6100a66100a136600461053a565b610176565b6040516001600160a01b039091168152602001610063565b600061017061012f600254600354604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60006101b88484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101c092505050565b949350505050565b60008060006101cf85856101e4565b915091506101dc8161022a565b509392505050565b60008082516041141561021b5760208301516040840151606085015160001a61020f87828585610435565b94509450505050610223565b506000905060025b9250929050565b600081600481111561024c57634e487b7160e01b600052602160045260246000fd5b141561025757610432565b600181600481111561027957634e487b7160e01b600052602160045260246000fd5b14156102cc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b60028160048111156102ee57634e487b7160e01b600052602160045260246000fd5b141561033c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102c3565b600381600481111561035e57634e487b7160e01b600052602160045260246000fd5b14156103b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102c3565b60048160048111156103d957634e487b7160e01b600052602160045260246000fd5b14156104325760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016102c3565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561046c5750600090506003610519565b8460ff16601b1415801561048457508460ff16601c14155b156104955750600090506004610519565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156104e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661051257600060019250925050610519565b9150600090505b94509492505050565b600060208284031215610533578081fd5b5035919050565b60008060006040848603121561054e578182fd5b83359250602084013567ffffffffffffffff8082111561056c578384fd5b818601915086601f83011261057f578384fd5b81358181111561058d578485fd5b87602082850101111561059e578485fd5b602083019450809350505050925092509256fea2646970667358221220e17c07a36a4b2d478213fb28cc3a0b2d7ffc9ae5c6a1d4813e35adcc361b01d164736f6c63430008020033",
  "bytecodeSha1": "baa815d55ab9dc15de8bbbf9055649422dca5f2f",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "EIP712",
  "coverageMap": {
    "branches": {
      "12": {},
      "13": {
        "ECDSA._throwError": {
          "18": [
            616,
            645,
            false
          ],
          "19": [
            712,
            750,
            false
          ],
          "20": [
            821,
            865,
            false
          ],
          "21": [
            943,
            982,
            false
          ],
          "22": [
            1063,
            1102,
            false
          ]
        },
        "ECDSA.tryRecover": {
          "17": [
            2361,
            2383,
            false
          ],
          "23": [
            6204,
            6283,
            false
          ],
          "24": [
            6374,
            6381,
            false
          ],
          "25": [
            6385,
            6392,
            false
          ],
          "26": [
            6619,
            6639,
            false
          ]
        }
      },
      "54": {}
    },
    "statements": {
      "12": {},
      "13": {
        "ECDSA._throwError": {
          "8": [
            661,
            668
          ],
          "9": [
            766,
            800
          ],
          "10": [
            881,
            922
          ],
          "11": [
            998,
            1042
          ],
          "12": [
            1118,
            1162
          ]
        },
        "ECDSA.recover": {
          "4": [
            3935,
            3953
          ],
          "5": [
            3963,
            3979
          ]
        },
        "ECDSA.toTypedDataHash": {
          "2": [
            8660,
            8735
          ]
        },
        "ECDSA.tryRecover": {
          "6": [
            2837,
            2869
          ],
          "7": [
            2900,
            2956
          ],
          "13": [
            6299,
            6350
          ],
          "14": [
            6408,
            6459
          ],
          "15": [
            6655,
            6705
          ],
          "16": [
            6726,
            6763
          ]
        }
      },
      "54": {
        "EIP712._buildDomainSeparator": {
          "1": [
            1271,
            1474
          ]
        },
        "EIP712.getSigner": {
          "3": [
            817,
            856
          ]
        },
        "EIP712.getTypedDataV4Hash": {
          "0": [
            1118,
            1183
          ]
        }
      }
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.7.3/ECDSA",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Strings"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100415760003560e01c80630ff28b0c1461004657806374a640ff1461006c578063f7b2ec0d14610093575b600080fd5b610059610054366004610522565b6100be565b6040519081526020015b60405180910390f35b6100597f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6100a66100a136600461053a565b610176565b6040516001600160a01b039091168152602001610063565b600061017061012f600254600354604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60006101b88484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506101c092505050565b949350505050565b60008060006101cf85856101e4565b915091506101dc8161022a565b509392505050565b60008082516041141561021b5760208301516040840151606085015160001a61020f87828585610435565b94509450505050610223565b506000905060025b9250929050565b600081600481111561024c57634e487b7160e01b600052602160045260246000fd5b141561025757610432565b600181600481111561027957634e487b7160e01b600052602160045260246000fd5b14156102cc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064015b60405180910390fd5b60028160048111156102ee57634e487b7160e01b600052602160045260246000fd5b141561033c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102c3565b600381600481111561035e57634e487b7160e01b600052602160045260246000fd5b14156103b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102c3565b60048160048111156103d957634e487b7160e01b600052602160045260246000fd5b14156104325760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016102c3565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561046c5750600090506003610519565b8460ff16601b1415801561048457508460ff16601c14155b156104955750600090506004610519565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156104e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661051257600060019250925050610519565b9150600090505b94509492505050565b600060208284031215610533578081fd5b5035919050565b60008060006040848603121561054e578182fd5b83359250602084013567ffffffffffffffff8082111561056c578384fd5b818601915086601f83011261057f578384fd5b81358181111561058d578485fd5b87602082850101111561059e578485fd5b602083019450809350505050925092509256fea2646970667358221220e17c07a36a4b2d478213fb28cc3a0b2d7ffc9ae5c6a1d4813e35adcc361b01d164736f6c63430008020033",
  "deployedSourceMap": "140:1343:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1030:160;;;;;;:::i;:::-;;:::i;:::-;;;1674:25:67;;;1662:2;1647:18;1030:160:54;;;;;;;;163:146;;214:95;163:146;;660:203;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1484:32:67;;;1466:51;;1454:2;1439:18;660:203:54;1421:102:67;1030:160:54;1099:7;1125:58;1147:23;1364:11;;1394:14;;1301:172;;;214:95;1301:172;;;1969:25:67;2010:18;;;2003:34;;;;2053:18;;;2046:34;1427:13:54;2096:18:67;;;2089:34;1467:4:54;2139:19:67;;;2132:61;1252:7:54;;1941:19:67;;1301:172:54;;;;;;;;;;;;1278:196;;;;;;1271:203;;1197:284;;1147:23;1172:10;8677:57:13;;-1:-1:-1;;;8677:57:13;;;1181:27:67;1224:11;;;1217:27;;;1260:12;;;1253:28;;;8641:7:13;;1297:12:67;;8677:57:13;;;;;;;;;;;;8667:68;;;;;;8660:75;;8548:194;;;;;1125:58:54;1118:65;1030:160;-1:-1:-1;;1030:160:54:o;660:203::-;787:14;824:32;838:6;846:9;;824:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;824:13:54;;-1:-1:-1;;;824:32:54:i;:::-;817:39;660:203;-1:-1:-1;;;;660:203:54:o;3759:227:13:-;3837:7;3857:17;3876:18;3898:27;3909:4;3915:9;3898:10;:27::i;:::-;3856:69;;;;3935:18;3947:5;3935:11;:18::i;:::-;-1:-1:-1;3970:9:13;3759:227;-1:-1:-1;;;3759:227:13:o;2243:730::-;2324:7;2333:12;2361:9;:16;2381:2;2361:22;2357:610;;;2697:4;2682:20;;2676:27;2746:4;2731:20;;2725:27;2803:4;2788:20;;2782:27;2399:9;2774:36;2844:25;2855:4;2774:36;2676:27;2725;2844:10;:25::i;:::-;2837:32;;;;;;;;;2357:610;-1:-1:-1;2916:1:13;;-1:-1:-1;2920:35:13;2357:610;2243:730;;;;;:::o;548:631::-;625:20;616:5;:29;;;;;;-1:-1:-1;;;616:29:13;;;;;;;;;;612:561;;;661:7;;612:561;721:29;712:5;:38;;;;;;-1:-1:-1;;;712:38:13;;;;;;;;;;708:465;;;766:34;;-1:-1:-1;;;766:34:13;;2809:2:67;766:34:13;;;2791:21:67;2848:2;2828:18;;;2821:30;2887:26;2867:18;;;2860:54;2931:18;;766:34:13;;;;;;;;708:465;830:35;821:5;:44;;;;;;-1:-1:-1;;;821:44:13;;;;;;;;;;817:356;;;881:41;;-1:-1:-1;;;881:41:13;;3162:2:67;881:41:13;;;3144:21:67;3201:2;3181:18;;;3174:30;3240:33;3220:18;;;3213:61;3291:18;;881:41:13;3134:181:67;817:356:13;952:30;943:5;:39;;;;;;-1:-1:-1;;;943:39:13;;;;;;;;;;939:234;;;998:44;;-1:-1:-1;;;998:44:13;;3522:2:67;998:44:13;;;3504:21:67;3561:2;3541:18;;;3534:30;3600:34;3580:18;;;3573:62;-1:-1:-1;;;3651:18:67;;;3644:32;3693:19;;998:44:13;3494:224:67;939:234:13;1072:30;1063:5;:39;;;;;;-1:-1:-1;;;1063:39:13;;;;;;;;;;1059:114;;;1118:44;;-1:-1:-1;;;1118:44:13;;3925:2:67;1118:44:13;;;3907:21:67;3964:2;3944:18;;;3937:30;4003:34;3983:18;;;3976:62;-1:-1:-1;;;4054:18:67;;;4047:32;4096:19;;1118:44:13;3897:224:67;1059:114:13;548:631;:::o;5167:1603::-;5293:7;;6217:66;6204:79;;6200:161;;;-1:-1:-1;6315:1:13;;-1:-1:-1;6319:30:13;6299:51;;6200:161;6374:1;:7;;6379:2;6374:7;;:18;;;;;6385:1;:7;;6390:2;6385:7;;6374:18;6370:100;;;-1:-1:-1;6424:1:13;;-1:-1:-1;6428:30:13;6408:51;;6370:100;6581:24;;;6564:14;6581:24;;;;;;;;;2431:25:67;;;2504:4;2492:17;;2472:18;;;2465:45;;;;2526:18;;;2519:34;;;2569:18;;;2562:34;;;6581:24:13;;2403:19:67;;6581:24:13;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6581:24:13;;-1:-1:-1;;6581:24:13;;;-1:-1:-1;;;;;;;6619:20:13;;6615:101;;6671:1;6675:29;6655:50;;;;;;;6615:101;6734:6;-1:-1:-1;6742:20:13;;-1:-1:-1;5167:1603:13;;;;;;;;:::o;14:190:67:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;-1:-1:-1;175:23:67;;84:120;-1:-1:-1;84:120:67:o;209:709::-;;;;357:2;345:9;336:7;332:23;328:32;325:2;;;378:6;370;363:22;325:2;419:9;406:23;396:33;;480:2;469:9;465:18;452:32;503:18;544:2;536:6;533:14;530:2;;;565:6;557;550:22;530:2;608:6;597:9;593:22;583:32;;653:7;646:4;642:2;638:13;634:27;624:2;;680:6;672;665:22;624:2;725;712:16;751:2;743:6;740:14;737:2;;;772:6;764;757:22;737:2;822:7;817:2;808:6;804:2;800:15;796:24;793:37;790:2;;;848:6;840;833:22;790:2;884;880;876:11;866:21;;906:6;896:16;;;;;315:603;;;;;:::o",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    140,
    1483
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFF28B0C EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x74A640FF EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xF7B2EC0D EQ PUSH2 0x93 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x522 JUMP JUMPDEST PUSH2 0xBE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 JUMP JUMPDEST PUSH2 0xA6 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x53A JUMP JUMPDEST PUSH2 0x176 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x63 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x170 PUSH2 0x12F PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x42 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x62 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B8 DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1C0 SWAP3 POP POP POP JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1CF DUP6 DUP6 PUSH2 0x1E4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1DC DUP2 PUSH2 0x22A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD PUSH1 0x41 EQ ISZERO PUSH2 0x21B JUMPI PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x20F DUP8 DUP3 DUP6 DUP6 PUSH2 0x435 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x223 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 POP PUSH1 0x2 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x24C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x257 JUMPI PUSH2 0x432 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x279 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E61747572650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2EE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x33C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x35E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202773272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3D9 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST EQ ISZERO PUSH2 0x432 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45434453413A20696E76616C6964207369676E6174757265202776272076616C PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7565 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2C3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP4 GT ISZERO PUSH2 0x46C JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x3 PUSH2 0x519 JUMP JUMPDEST DUP5 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x484 JUMPI POP DUP5 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x495 JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x4 PUSH2 0x519 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x512 JUMPI PUSH1 0x0 PUSH1 0x1 SWAP3 POP SWAP3 POP POP PUSH2 0x519 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x533 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x56C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x57F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x58D JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x59E JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 PUSH29 0x7A36A4B2D478213FB28CC3A0B2D7FFC9AE5C6A1D4813E35ADCC361B01 0xD1 PUSH5 0x736F6C6343 STOP ADDMOD MUL STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "5": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "CALLVALUE",
      "path": "54"
    },
    "6": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "7": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "ISZERO",
      "path": "54"
    },
    "8": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPI",
      "path": "54"
    },
    "12": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "REVERT",
      "path": "54"
    },
    "16": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "17": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "POP",
      "path": "54"
    },
    "18": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "CALLDATASIZE",
      "path": "54"
    },
    "21": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "LT",
      "path": "54"
    },
    "22": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x41"
    },
    "25": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPI",
      "path": "54"
    },
    "26": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "CALLDATALOAD",
      "path": "54"
    },
    "29": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "SHR",
      "path": "54"
    },
    "32": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "33": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH4",
      "path": "54",
      "value": "0xFF28B0C"
    },
    "38": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "EQ",
      "path": "54"
    },
    "39": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x46"
    },
    "42": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPI",
      "path": "54"
    },
    "43": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "44": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH4",
      "path": "54",
      "value": "0x74A640FF"
    },
    "49": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "EQ",
      "path": "54"
    },
    "50": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x6C"
    },
    "53": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPI",
      "path": "54"
    },
    "54": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "55": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH4",
      "path": "54",
      "value": "0xF7B2EC0D"
    },
    "60": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "EQ",
      "path": "54"
    },
    "61": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x93"
    },
    "64": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPI",
      "path": "54"
    },
    "65": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "66": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "68": {
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "DUP1",
      "path": "54"
    },
    "69": {
      "first_revert": true,
      "fn": null,
      "offset": [
        140,
        1483
      ],
      "op": "REVERT",
      "path": "54"
    },
    "70": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "71": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x59"
    },
    "74": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x54"
    },
    "77": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "CALLDATASIZE",
      "path": "54"
    },
    "78": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x4"
    },
    "80": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x522"
    },
    "83": {
      "fn": "EIP712.getTypedDataV4Hash",
      "jump": "i",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMP",
      "path": "54"
    },
    "84": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "85": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0xBE"
    },
    "88": {
      "fn": "EIP712.getTypedDataV4Hash",
      "jump": "i",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMP",
      "path": "54"
    },
    "89": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "90": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "92": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "93": {
      "op": "SWAP1"
    },
    "94": {
      "op": "DUP2"
    },
    "95": {
      "op": "MSTORE"
    },
    "96": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "98": {
      "op": "ADD"
    },
    "99": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "100": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "102": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "103": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "DUP1",
      "path": "54"
    },
    "104": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "105": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "SUB",
      "path": "54"
    },
    "106": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "107": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "RETURN",
      "path": "54"
    },
    "108": {
      "offset": [
        163,
        309
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "109": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        163,
        309
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x59"
    },
    "112": {
      "offset": [
        214,
        309
      ],
      "op": "PUSH32",
      "path": "54",
      "value": "0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F"
    },
    "145": {
      "offset": [
        163,
        309
      ],
      "op": "DUP2",
      "path": "54"
    },
    "146": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        163,
        309
      ],
      "op": "JUMP",
      "path": "54"
    },
    "147": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "148": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0xA6"
    },
    "151": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0xA1"
    },
    "154": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "CALLDATASIZE",
      "path": "54"
    },
    "155": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x4"
    },
    "157": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x53A"
    },
    "160": {
      "fn": "EIP712.getSigner",
      "jump": "i",
      "offset": [
        660,
        863
      ],
      "op": "JUMP",
      "path": "54"
    },
    "161": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "162": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x176"
    },
    "165": {
      "fn": "EIP712.getSigner",
      "jump": "i",
      "offset": [
        660,
        863
      ],
      "op": "JUMP",
      "path": "54"
    },
    "166": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "167": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "169": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "170": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "172": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "174": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "176": {
      "op": "SHL"
    },
    "177": {
      "op": "SUB"
    },
    "178": {
      "op": "SWAP1"
    },
    "179": {
      "op": "SWAP2"
    },
    "180": {
      "op": "AND"
    },
    "181": {
      "op": "DUP2"
    },
    "182": {
      "op": "MSTORE"
    },
    "183": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "185": {
      "op": "ADD"
    },
    "186": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x63"
    },
    "189": {
      "op": "JUMP"
    },
    "190": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "191": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1099,
        1106
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "193": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1125,
        1183
      ],
      "op": "PUSH2",
      "path": "54",
      "statement": 0,
      "value": "0x170"
    },
    "196": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1147,
        1170
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x12F"
    },
    "199": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1364,
        1375
      ],
      "op": "PUSH1",
      "path": "54",
      "statement": 1,
      "value": "0x2"
    },
    "201": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1364,
        1375
      ],
      "op": "SLOAD",
      "path": "54"
    },
    "202": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1394,
        1408
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x3"
    },
    "204": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1394,
        1408
      ],
      "op": "SLOAD",
      "path": "54"
    },
    "205": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "207": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "DUP1",
      "path": "54"
    },
    "208": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "209": {
      "offset": [
        214,
        309
      ],
      "op": "PUSH32",
      "path": "54",
      "value": "0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F"
    },
    "242": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "244": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "DUP3",
      "path": "54"
    },
    "245": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "ADD",
      "path": "54"
    },
    "246": {
      "op": "MSTORE"
    },
    "247": {
      "op": "SWAP1"
    },
    "248": {
      "op": "DUP2"
    },
    "249": {
      "op": "ADD"
    },
    "250": {
      "op": "SWAP3"
    },
    "251": {
      "op": "SWAP1"
    },
    "252": {
      "op": "SWAP3"
    },
    "253": {
      "op": "MSTORE"
    },
    "254": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "256": {
      "op": "DUP3"
    },
    "257": {
      "op": "ADD"
    },
    "258": {
      "op": "MSTORE"
    },
    "259": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1427,
        1440
      ],
      "op": "CHAINID",
      "path": "54"
    },
    "260": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "262": {
      "op": "DUP3"
    },
    "263": {
      "op": "ADD"
    },
    "264": {
      "op": "MSTORE"
    },
    "265": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1467,
        1471
      ],
      "op": "ADDRESS",
      "path": "54"
    },
    "266": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "268": {
      "op": "DUP3"
    },
    "269": {
      "op": "ADD"
    },
    "270": {
      "op": "MSTORE"
    },
    "271": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1252,
        1259
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "273": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1252,
        1259
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "274": {
      "op": "PUSH1",
      "value": "0xC0"
    },
    "276": {
      "op": "ADD"
    },
    "277": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "279": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "280": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "282": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "DUP2",
      "path": "54"
    },
    "283": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "DUP4",
      "path": "54"
    },
    "284": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "SUB",
      "path": "54"
    },
    "285": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "SUB",
      "path": "54"
    },
    "286": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "DUP2",
      "path": "54"
    },
    "287": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "288": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "289": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "291": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1301,
        1473
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "292": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "DUP1",
      "path": "54"
    },
    "293": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "294": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "295": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "297": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "ADD",
      "path": "54"
    },
    "298": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1278,
        1474
      ],
      "op": "KECCAK256",
      "path": "54"
    },
    "299": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1271,
        1474
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "300": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1271,
        1474
      ],
      "op": "POP",
      "path": "54"
    },
    "301": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1197,
        1481
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "302": {
      "fn": "EIP712._buildDomainSeparator",
      "offset": [
        1197,
        1481
      ],
      "op": "JUMP",
      "path": "54"
    },
    "303": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1147,
        1170
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "304": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1172,
        1182
      ],
      "op": "DUP4",
      "path": "54"
    },
    "305": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 2,
      "value": "0x40"
    },
    "307": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "308": {
      "op": "PUSH2",
      "value": "0x1901"
    },
    "311": {
      "op": "PUSH1",
      "value": "0xF0"
    },
    "313": {
      "op": "SHL"
    },
    "314": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "316": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "DUP3",
      "path": "13"
    },
    "317": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "ADD",
      "path": "13"
    },
    "318": {
      "op": "MSTORE"
    },
    "319": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "321": {
      "op": "DUP2"
    },
    "322": {
      "op": "ADD"
    },
    "323": {
      "op": "DUP4"
    },
    "324": {
      "op": "SWAP1"
    },
    "325": {
      "op": "MSTORE"
    },
    "326": {
      "op": "PUSH1",
      "value": "0x42"
    },
    "328": {
      "op": "DUP2"
    },
    "329": {
      "op": "ADD"
    },
    "330": {
      "op": "DUP3"
    },
    "331": {
      "op": "SWAP1"
    },
    "332": {
      "op": "MSTORE"
    },
    "333": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8641,
        8648
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "335": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8641,
        8648
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "336": {
      "op": "PUSH1",
      "value": "0x62"
    },
    "338": {
      "op": "ADD"
    },
    "339": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "341": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "342": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "344": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "DUP2",
      "path": "13"
    },
    "345": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "DUP4",
      "path": "13"
    },
    "346": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "SUB",
      "path": "13"
    },
    "347": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "SUB",
      "path": "13"
    },
    "348": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "DUP2",
      "path": "13"
    },
    "349": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "350": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "351": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "353": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8677,
        8734
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "354": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "DUP1",
      "path": "13"
    },
    "355": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "356": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "357": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "359": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "ADD",
      "path": "13"
    },
    "360": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8667,
        8735
      ],
      "op": "KECCAK256",
      "path": "13"
    },
    "361": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8660,
        8735
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "362": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8660,
        8735
      ],
      "op": "POP",
      "path": "13"
    },
    "363": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8548,
        8742
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "364": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8548,
        8742
      ],
      "op": "SWAP2",
      "path": "13"
    },
    "365": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8548,
        8742
      ],
      "op": "POP",
      "path": "13"
    },
    "366": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8548,
        8742
      ],
      "op": "POP",
      "path": "13"
    },
    "367": {
      "fn": "ECDSA.toTypedDataHash",
      "offset": [
        8548,
        8742
      ],
      "op": "JUMP",
      "path": "13"
    },
    "368": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1125,
        1183
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "369": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1118,
        1183
      ],
      "op": "SWAP3",
      "path": "54"
    },
    "370": {
      "fn": "EIP712.getTypedDataV4Hash",
      "offset": [
        1030,
        1190
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "371": {
      "op": "POP"
    },
    "372": {
      "op": "POP"
    },
    "373": {
      "fn": "EIP712.getTypedDataV4Hash",
      "jump": "o",
      "offset": [
        1030,
        1190
      ],
      "op": "JUMP",
      "path": "54"
    },
    "374": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "375": {
      "fn": "EIP712.getSigner",
      "offset": [
        787,
        801
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "377": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH2",
      "path": "54",
      "statement": 3,
      "value": "0x1B8"
    },
    "380": {
      "fn": "EIP712.getSigner",
      "offset": [
        838,
        844
      ],
      "op": "DUP5",
      "path": "54"
    },
    "381": {
      "fn": "EIP712.getSigner",
      "offset": [
        846,
        855
      ],
      "op": "DUP5",
      "path": "54"
    },
    "382": {
      "fn": "EIP712.getSigner",
      "offset": [
        846,
        855
      ],
      "op": "DUP5",
      "path": "54"
    },
    "383": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP1",
      "path": "54"
    },
    "384": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP1",
      "path": "54"
    },
    "385": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x1F"
    },
    "387": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "ADD",
      "path": "54"
    },
    "388": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "390": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP1",
      "path": "54"
    },
    "391": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "392": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DIV",
      "path": "54"
    },
    "393": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "MUL",
      "path": "54"
    },
    "394": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "396": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "ADD",
      "path": "54"
    },
    "397": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "399": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "MLOAD",
      "path": "54"
    },
    "400": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "401": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP2",
      "path": "54"
    },
    "402": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "ADD",
      "path": "54"
    },
    "403": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "405": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "406": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP1",
      "path": "54"
    },
    "407": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP4",
      "path": "54"
    },
    "408": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP3",
      "path": "54"
    },
    "409": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "410": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "411": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP2",
      "path": "54"
    },
    "412": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP2",
      "path": "54"
    },
    "413": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "414": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x20"
    },
    "416": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "ADD",
      "path": "54"
    },
    "417": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP4",
      "path": "54"
    },
    "418": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP4",
      "path": "54"
    },
    "419": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP1",
      "path": "54"
    },
    "420": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP3",
      "path": "54"
    },
    "421": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "DUP5",
      "path": "54"
    },
    "422": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "CALLDATACOPY",
      "path": "54"
    },
    "423": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "425": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP3",
      "path": "54"
    },
    "426": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "ADD",
      "path": "54"
    },
    "427": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "428": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP1",
      "path": "54"
    },
    "429": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "SWAP2",
      "path": "54"
    },
    "430": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "431": {
      "op": "POP"
    },
    "432": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        837
      ],
      "op": "PUSH2",
      "path": "54",
      "value": "0x1C0"
    },
    "435": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        837
      ],
      "op": "SWAP3",
      "path": "54"
    },
    "436": {
      "op": "POP"
    },
    "437": {
      "op": "POP"
    },
    "438": {
      "op": "POP"
    },
    "439": {
      "fn": "EIP712.getSigner",
      "jump": "i",
      "offset": [
        824,
        856
      ],
      "op": "JUMP",
      "path": "54"
    },
    "440": {
      "fn": "EIP712.getSigner",
      "offset": [
        824,
        856
      ],
      "op": "JUMPDEST",
      "path": "54"
    },
    "441": {
      "fn": "EIP712.getSigner",
      "offset": [
        817,
        856
      ],
      "op": "SWAP5",
      "path": "54"
    },
    "442": {
      "fn": "EIP712.getSigner",
      "offset": [
        660,
        863
      ],
      "op": "SWAP4",
      "path": "54"
    },
    "443": {
      "op": "POP"
    },
    "444": {
      "op": "POP"
    },
    "445": {
      "op": "POP"
    },
    "446": {
      "op": "POP"
    },
    "447": {
      "fn": "EIP712.getSigner",
      "jump": "o",
      "offset": [
        660,
        863
      ],
      "op": "JUMP",
      "path": "54"
    },
    "448": {
      "fn": "ECDSA.recover",
      "offset": [
        3759,
        3986
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "449": {
      "fn": "ECDSA.recover",
      "offset": [
        3837,
        3844
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "451": {
      "fn": "ECDSA.recover",
      "offset": [
        3857,
        3874
      ],
      "op": "DUP1",
      "path": "13"
    },
    "452": {
      "fn": "ECDSA.recover",
      "offset": [
        3876,
        3894
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "454": {
      "fn": "ECDSA.recover",
      "offset": [
        3898,
        3925
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x1CF"
    },
    "457": {
      "fn": "ECDSA.recover",
      "offset": [
        3909,
        3913
      ],
      "op": "DUP6",
      "path": "13"
    },
    "458": {
      "fn": "ECDSA.recover",
      "offset": [
        3915,
        3924
      ],
      "op": "DUP6",
      "path": "13"
    },
    "459": {
      "fn": "ECDSA.recover",
      "offset": [
        3898,
        3908
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x1E4"
    },
    "462": {
      "fn": "ECDSA.recover",
      "jump": "i",
      "offset": [
        3898,
        3925
      ],
      "op": "JUMP",
      "path": "13"
    },
    "463": {
      "fn": "ECDSA.recover",
      "offset": [
        3898,
        3925
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "464": {
      "fn": "ECDSA.recover",
      "offset": [
        3856,
        3925
      ],
      "op": "SWAP2",
      "path": "13"
    },
    "465": {
      "fn": "ECDSA.recover",
      "offset": [
        3856,
        3925
      ],
      "op": "POP",
      "path": "13"
    },
    "466": {
      "fn": "ECDSA.recover",
      "offset": [
        3856,
        3925
      ],
      "op": "SWAP2",
      "path": "13"
    },
    "467": {
      "fn": "ECDSA.recover",
      "offset": [
        3856,
        3925
      ],
      "op": "POP",
      "path": "13"
    },
    "468": {
      "fn": "ECDSA.recover",
      "offset": [
        3935,
        3953
      ],
      "op": "PUSH2",
      "path": "13",
      "statement": 4,
      "value": "0x1DC"
    },
    "471": {
      "fn": "ECDSA.recover",
      "offset": [
        3947,
        3952
      ],
      "op": "DUP2",
      "path": "13"
    },
    "472": {
      "fn": "ECDSA.recover",
      "offset": [
        3935,
        3946
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x22A"
    },
    "475": {
      "fn": "ECDSA.recover",
      "jump": "i",
      "offset": [
        3935,
        3953
      ],
      "op": "JUMP",
      "path": "13"
    },
    "476": {
      "fn": "ECDSA.recover",
      "offset": [
        3935,
        3953
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "477": {
      "op": "POP"
    },
    "478": {
      "fn": "ECDSA.recover",
      "offset": [
        3970,
        3979
      ],
      "op": "SWAP4",
      "path": "13",
      "statement": 5
    },
    "479": {
      "fn": "ECDSA.recover",
      "offset": [
        3759,
        3986
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "480": {
      "op": "POP"
    },
    "481": {
      "op": "POP"
    },
    "482": {
      "op": "POP"
    },
    "483": {
      "fn": "ECDSA.recover",
      "jump": "o",
      "offset": [
        3759,
        3986
      ],
      "op": "JUMP",
      "path": "13"
    },
    "484": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "485": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2324,
        2331
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "487": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2333,
        2345
      ],
      "op": "DUP1",
      "path": "13"
    },
    "488": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2361,
        2370
      ],
      "op": "DUP3",
      "path": "13"
    },
    "489": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2361,
        2377
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "490": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2381,
        2383
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x41"
    },
    "492": {
      "branch": 17,
      "fn": "ECDSA.tryRecover",
      "offset": [
        2361,
        2383
      ],
      "op": "EQ",
      "path": "13"
    },
    "493": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2357,
        2967
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "494": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2357,
        2967
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x21B"
    },
    "497": {
      "branch": 17,
      "fn": "ECDSA.tryRecover",
      "offset": [
        2357,
        2967
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "498": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2697,
        2701
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "500": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2682,
        2702
      ],
      "op": "DUP4",
      "path": "13"
    },
    "501": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2682,
        2702
      ],
      "op": "ADD",
      "path": "13"
    },
    "502": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2676,
        2703
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "503": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2746,
        2750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "505": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2731,
        2751
      ],
      "op": "DUP5",
      "path": "13"
    },
    "506": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2731,
        2751
      ],
      "op": "ADD",
      "path": "13"
    },
    "507": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2725,
        2752
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "508": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2803,
        2807
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x60"
    },
    "510": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2788,
        2808
      ],
      "op": "DUP6",
      "path": "13"
    },
    "511": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2788,
        2808
      ],
      "op": "ADD",
      "path": "13"
    },
    "512": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2782,
        2809
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "513": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2399,
        2408
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "515": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2774,
        2810
      ],
      "op": "BYTE",
      "path": "13"
    },
    "516": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2844,
        2869
      ],
      "op": "PUSH2",
      "path": "13",
      "statement": 6,
      "value": "0x20F"
    },
    "519": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2855,
        2859
      ],
      "op": "DUP8",
      "path": "13"
    },
    "520": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2774,
        2810
      ],
      "op": "DUP3",
      "path": "13"
    },
    "521": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2676,
        2703
      ],
      "op": "DUP6",
      "path": "13"
    },
    "522": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2725,
        2752
      ],
      "op": "DUP6",
      "path": "13"
    },
    "523": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2844,
        2854
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x435"
    },
    "526": {
      "fn": "ECDSA.tryRecover",
      "jump": "i",
      "offset": [
        2844,
        2869
      ],
      "op": "JUMP",
      "path": "13"
    },
    "527": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2844,
        2869
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "528": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "SWAP5",
      "path": "13"
    },
    "529": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "POP",
      "path": "13"
    },
    "530": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "SWAP5",
      "path": "13"
    },
    "531": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "POP",
      "path": "13"
    },
    "532": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "POP",
      "path": "13"
    },
    "533": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "POP",
      "path": "13"
    },
    "534": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "POP",
      "path": "13"
    },
    "535": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x223"
    },
    "538": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2837,
        2869
      ],
      "op": "JUMP",
      "path": "13"
    },
    "539": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2357,
        2967
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "540": {
      "op": "POP"
    },
    "541": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2916,
        2917
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 7,
      "value": "0x0"
    },
    "543": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2916,
        2917
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "544": {
      "op": "POP"
    },
    "545": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2920,
        2955
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x2"
    },
    "547": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2357,
        2967
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "548": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "549": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "POP",
      "path": "13"
    },
    "550": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "551": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "552": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        2243,
        2973
      ],
      "op": "POP",
      "path": "13"
    },
    "553": {
      "fn": "ECDSA.tryRecover",
      "jump": "o",
      "offset": [
        2243,
        2973
      ],
      "op": "JUMP",
      "path": "13"
    },
    "554": {
      "fn": "ECDSA._throwError",
      "offset": [
        548,
        1179
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "555": {
      "fn": "ECDSA._throwError",
      "offset": [
        625,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "557": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        621
      ],
      "op": "DUP2",
      "path": "13"
    },
    "558": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "560": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "DUP2",
      "path": "13"
    },
    "561": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "GT",
      "path": "13"
    },
    "562": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "563": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x24C"
    },
    "566": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "567": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "572": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "574": {
      "op": "SHL"
    },
    "575": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "577": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "578": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x21"
    },
    "580": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "582": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "583": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x24"
    },
    "585": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "587": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "REVERT",
      "path": "13"
    },
    "588": {
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "589": {
      "branch": 18,
      "fn": "ECDSA._throwError",
      "offset": [
        616,
        645
      ],
      "op": "EQ",
      "path": "13"
    },
    "590": {
      "fn": "ECDSA._throwError",
      "offset": [
        612,
        1173
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "591": {
      "fn": "ECDSA._throwError",
      "offset": [
        612,
        1173
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x257"
    },
    "594": {
      "branch": 18,
      "fn": "ECDSA._throwError",
      "offset": [
        612,
        1173
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "595": {
      "fn": "ECDSA._throwError",
      "offset": [
        661,
        668
      ],
      "op": "PUSH2",
      "path": "13",
      "statement": 8,
      "value": "0x432"
    },
    "598": {
      "fn": "ECDSA._throwError",
      "offset": [
        661,
        668
      ],
      "op": "JUMP",
      "path": "13"
    },
    "599": {
      "fn": "ECDSA._throwError",
      "offset": [
        612,
        1173
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "600": {
      "fn": "ECDSA._throwError",
      "offset": [
        721,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x1"
    },
    "602": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        717
      ],
      "op": "DUP2",
      "path": "13"
    },
    "603": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "605": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "DUP2",
      "path": "13"
    },
    "606": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "GT",
      "path": "13"
    },
    "607": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "608": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x279"
    },
    "611": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "612": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "617": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "619": {
      "op": "SHL"
    },
    "620": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "622": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "623": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x21"
    },
    "625": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "627": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "628": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x24"
    },
    "630": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "632": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "REVERT",
      "path": "13"
    },
    "633": {
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "634": {
      "branch": 19,
      "fn": "ECDSA._throwError",
      "offset": [
        712,
        750
      ],
      "op": "EQ",
      "path": "13"
    },
    "635": {
      "fn": "ECDSA._throwError",
      "offset": [
        708,
        1173
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "636": {
      "fn": "ECDSA._throwError",
      "offset": [
        708,
        1173
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x2CC"
    },
    "639": {
      "branch": 19,
      "fn": "ECDSA._throwError",
      "offset": [
        708,
        1173
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "640": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 9,
      "value": "0x40"
    },
    "642": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "643": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "647": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "649": {
      "op": "SHL"
    },
    "650": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "DUP2",
      "path": "13"
    },
    "651": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "652": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "654": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "656": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "DUP3",
      "path": "13"
    },
    "657": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "ADD",
      "path": "13"
    },
    "658": {
      "op": "MSTORE"
    },
    "659": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "661": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "663": {
      "op": "DUP3"
    },
    "664": {
      "op": "ADD"
    },
    "665": {
      "op": "MSTORE"
    },
    "666": {
      "op": "PUSH32",
      "value": "0x45434453413A20696E76616C6964207369676E61747572650000000000000000"
    },
    "699": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "701": {
      "op": "DUP3"
    },
    "702": {
      "op": "ADD"
    },
    "703": {
      "op": "MSTORE"
    },
    "704": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "706": {
      "op": "ADD"
    },
    "707": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "708": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "710": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "711": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "DUP1",
      "path": "13"
    },
    "712": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "SWAP2",
      "path": "13"
    },
    "713": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "SUB",
      "path": "13"
    },
    "714": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "715": {
      "fn": "ECDSA._throwError",
      "offset": [
        766,
        800
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "13"
    },
    "716": {
      "fn": "ECDSA._throwError",
      "offset": [
        708,
        1173
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "717": {
      "fn": "ECDSA._throwError",
      "offset": [
        830,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x2"
    },
    "719": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        826
      ],
      "op": "DUP2",
      "path": "13"
    },
    "720": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "722": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "DUP2",
      "path": "13"
    },
    "723": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "GT",
      "path": "13"
    },
    "724": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "725": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x2EE"
    },
    "728": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "729": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "734": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "736": {
      "op": "SHL"
    },
    "737": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "739": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "740": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x21"
    },
    "742": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "744": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "745": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x24"
    },
    "747": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "749": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "REVERT",
      "path": "13"
    },
    "750": {
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "751": {
      "branch": 20,
      "fn": "ECDSA._throwError",
      "offset": [
        821,
        865
      ],
      "op": "EQ",
      "path": "13"
    },
    "752": {
      "fn": "ECDSA._throwError",
      "offset": [
        817,
        1173
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "753": {
      "fn": "ECDSA._throwError",
      "offset": [
        817,
        1173
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x33C"
    },
    "756": {
      "branch": 20,
      "fn": "ECDSA._throwError",
      "offset": [
        817,
        1173
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "757": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 10,
      "value": "0x40"
    },
    "759": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "760": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "764": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "766": {
      "op": "SHL"
    },
    "767": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "DUP2",
      "path": "13"
    },
    "768": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "769": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "771": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "773": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "DUP3",
      "path": "13"
    },
    "774": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "ADD",
      "path": "13"
    },
    "775": {
      "op": "MSTORE"
    },
    "776": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "778": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "780": {
      "op": "DUP3"
    },
    "781": {
      "op": "ADD"
    },
    "782": {
      "op": "MSTORE"
    },
    "783": {
      "op": "PUSH32",
      "value": "0x45434453413A20696E76616C6964207369676E6174757265206C656E67746800"
    },
    "816": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "818": {
      "op": "DUP3"
    },
    "819": {
      "op": "ADD"
    },
    "820": {
      "op": "MSTORE"
    },
    "821": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "823": {
      "op": "ADD"
    },
    "824": {
      "fn": "ECDSA._throwError",
      "offset": [
        881,
        922
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x2C3"
    },
    "827": {
      "op": "JUMP"
    },
    "828": {
      "fn": "ECDSA._throwError",
      "offset": [
        817,
        1173
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "829": {
      "fn": "ECDSA._throwError",
      "offset": [
        952,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x3"
    },
    "831": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        948
      ],
      "op": "DUP2",
      "path": "13"
    },
    "832": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "834": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "DUP2",
      "path": "13"
    },
    "835": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "GT",
      "path": "13"
    },
    "836": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "837": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x35E"
    },
    "840": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "841": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "846": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "848": {
      "op": "SHL"
    },
    "849": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "851": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "852": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x21"
    },
    "854": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "856": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "857": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x24"
    },
    "859": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "861": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "REVERT",
      "path": "13"
    },
    "862": {
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "863": {
      "branch": 21,
      "fn": "ECDSA._throwError",
      "offset": [
        943,
        982
      ],
      "op": "EQ",
      "path": "13"
    },
    "864": {
      "fn": "ECDSA._throwError",
      "offset": [
        939,
        1173
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "865": {
      "fn": "ECDSA._throwError",
      "offset": [
        939,
        1173
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x3B7"
    },
    "868": {
      "branch": 21,
      "fn": "ECDSA._throwError",
      "offset": [
        939,
        1173
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "869": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 11,
      "value": "0x40"
    },
    "871": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "872": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "876": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "878": {
      "op": "SHL"
    },
    "879": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "DUP2",
      "path": "13"
    },
    "880": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "881": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "883": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "885": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "DUP3",
      "path": "13"
    },
    "886": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "ADD",
      "path": "13"
    },
    "887": {
      "op": "MSTORE"
    },
    "888": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "890": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "892": {
      "op": "DUP3"
    },
    "893": {
      "op": "ADD"
    },
    "894": {
      "op": "MSTORE"
    },
    "895": {
      "op": "PUSH32",
      "value": "0x45434453413A20696E76616C6964207369676E6174757265202773272076616C"
    },
    "928": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "930": {
      "op": "DUP3"
    },
    "931": {
      "op": "ADD"
    },
    "932": {
      "op": "MSTORE"
    },
    "933": {
      "op": "PUSH2",
      "value": "0x7565"
    },
    "936": {
      "op": "PUSH1",
      "value": "0xF0"
    },
    "938": {
      "op": "SHL"
    },
    "939": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "941": {
      "op": "DUP3"
    },
    "942": {
      "op": "ADD"
    },
    "943": {
      "op": "MSTORE"
    },
    "944": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "946": {
      "op": "ADD"
    },
    "947": {
      "fn": "ECDSA._throwError",
      "offset": [
        998,
        1042
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x2C3"
    },
    "950": {
      "op": "JUMP"
    },
    "951": {
      "fn": "ECDSA._throwError",
      "offset": [
        939,
        1173
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "952": {
      "fn": "ECDSA._throwError",
      "offset": [
        1072,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "954": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1068
      ],
      "op": "DUP2",
      "path": "13"
    },
    "955": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "957": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "DUP2",
      "path": "13"
    },
    "958": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "GT",
      "path": "13"
    },
    "959": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "960": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x3D9"
    },
    "963": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "964": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "969": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "971": {
      "op": "SHL"
    },
    "972": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "974": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "975": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x21"
    },
    "977": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "979": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "980": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x24"
    },
    "982": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "984": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "REVERT",
      "path": "13"
    },
    "985": {
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "986": {
      "branch": 22,
      "fn": "ECDSA._throwError",
      "offset": [
        1063,
        1102
      ],
      "op": "EQ",
      "path": "13"
    },
    "987": {
      "fn": "ECDSA._throwError",
      "offset": [
        1059,
        1173
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "988": {
      "fn": "ECDSA._throwError",
      "offset": [
        1059,
        1173
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x432"
    },
    "991": {
      "branch": 22,
      "fn": "ECDSA._throwError",
      "offset": [
        1059,
        1173
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "992": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 12,
      "value": "0x40"
    },
    "994": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "995": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "999": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1001": {
      "op": "SHL"
    },
    "1002": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "DUP2",
      "path": "13"
    },
    "1003": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "1004": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1006": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "1008": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "DUP3",
      "path": "13"
    },
    "1009": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "ADD",
      "path": "13"
    },
    "1010": {
      "op": "MSTORE"
    },
    "1011": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "1013": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1015": {
      "op": "DUP3"
    },
    "1016": {
      "op": "ADD"
    },
    "1017": {
      "op": "MSTORE"
    },
    "1018": {
      "op": "PUSH32",
      "value": "0x45434453413A20696E76616C6964207369676E6174757265202776272076616C"
    },
    "1051": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1053": {
      "op": "DUP3"
    },
    "1054": {
      "op": "ADD"
    },
    "1055": {
      "op": "MSTORE"
    },
    "1056": {
      "op": "PUSH2",
      "value": "0x7565"
    },
    "1059": {
      "op": "PUSH1",
      "value": "0xF0"
    },
    "1061": {
      "op": "SHL"
    },
    "1062": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1064": {
      "op": "DUP3"
    },
    "1065": {
      "op": "ADD"
    },
    "1066": {
      "op": "MSTORE"
    },
    "1067": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1069": {
      "op": "ADD"
    },
    "1070": {
      "fn": "ECDSA._throwError",
      "offset": [
        1118,
        1162
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x2C3"
    },
    "1073": {
      "op": "JUMP"
    },
    "1074": {
      "fn": "ECDSA._throwError",
      "offset": [
        1059,
        1173
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1075": {
      "fn": "ECDSA._throwError",
      "offset": [
        548,
        1179
      ],
      "op": "POP",
      "path": "13"
    },
    "1076": {
      "fn": "ECDSA._throwError",
      "jump": "o",
      "offset": [
        548,
        1179
      ],
      "op": "JUMP",
      "path": "13"
    },
    "1077": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1078": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5293,
        5300
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "1080": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5293,
        5300
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1081": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6217,
        6283
      ],
      "op": "PUSH32",
      "path": "13",
      "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
    },
    "1114": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6204,
        6283
      ],
      "op": "DUP4",
      "path": "13"
    },
    "1115": {
      "branch": 23,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6204,
        6283
      ],
      "op": "GT",
      "path": "13"
    },
    "1116": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6200,
        6361
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1117": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6200,
        6361
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x46C"
    },
    "1120": {
      "branch": 23,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6200,
        6361
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "1121": {
      "op": "POP"
    },
    "1122": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6315,
        6316
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 13,
      "value": "0x0"
    },
    "1124": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6315,
        6316
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1125": {
      "op": "POP"
    },
    "1126": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6319,
        6349
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x3"
    },
    "1128": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6299,
        6350
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x519"
    },
    "1131": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6299,
        6350
      ],
      "op": "JUMP",
      "path": "13"
    },
    "1132": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6200,
        6361
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1133": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6375
      ],
      "op": "DUP5",
      "path": "13"
    },
    "1134": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6381
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0xFF"
    },
    "1136": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6381
      ],
      "op": "AND",
      "path": "13"
    },
    "1137": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6379,
        6381
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x1B"
    },
    "1139": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6381
      ],
      "op": "EQ",
      "path": "13"
    },
    "1140": {
      "branch": 24,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6381
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1141": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1142": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1143": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x484"
    },
    "1146": {
      "branch": 24,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "1147": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "POP",
      "path": "13"
    },
    "1148": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6385,
        6386
      ],
      "op": "DUP5",
      "path": "13"
    },
    "1149": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6385,
        6392
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0xFF"
    },
    "1151": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6385,
        6392
      ],
      "op": "AND",
      "path": "13"
    },
    "1152": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6390,
        6392
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x1C"
    },
    "1154": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6385,
        6392
      ],
      "op": "EQ",
      "path": "13"
    },
    "1155": {
      "branch": 25,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6385,
        6392
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1156": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6374,
        6392
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1157": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6370,
        6470
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1158": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6370,
        6470
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x495"
    },
    "1161": {
      "branch": 25,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6370,
        6470
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "1162": {
      "op": "POP"
    },
    "1163": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6424,
        6425
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 14,
      "value": "0x0"
    },
    "1165": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6424,
        6425
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1166": {
      "op": "POP"
    },
    "1167": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6428,
        6458
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x4"
    },
    "1169": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6408,
        6459
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x519"
    },
    "1172": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6408,
        6459
      ],
      "op": "JUMP",
      "path": "13"
    },
    "1173": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6370,
        6470
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1174": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "1176": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1177": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "1178": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6564,
        6578
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "1180": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1181": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP3",
      "path": "13"
    },
    "1182": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "1183": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "1185": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP3",
      "path": "13"
    },
    "1186": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "ADD",
      "path": "13"
    },
    "1187": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1188": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP5",
      "path": "13"
    },
    "1189": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MSTORE",
      "path": "13"
    },
    "1190": {
      "op": "DUP10"
    },
    "1191": {
      "op": "SWAP1"
    },
    "1192": {
      "op": "MSTORE"
    },
    "1193": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1195": {
      "op": "DUP9"
    },
    "1196": {
      "op": "AND"
    },
    "1197": {
      "op": "SWAP3"
    },
    "1198": {
      "op": "DUP3"
    },
    "1199": {
      "op": "ADD"
    },
    "1200": {
      "op": "SWAP3"
    },
    "1201": {
      "op": "SWAP1"
    },
    "1202": {
      "op": "SWAP3"
    },
    "1203": {
      "op": "MSTORE"
    },
    "1204": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "1206": {
      "op": "DUP2"
    },
    "1207": {
      "op": "ADD"
    },
    "1208": {
      "op": "DUP7"
    },
    "1209": {
      "op": "SWAP1"
    },
    "1210": {
      "op": "MSTORE"
    },
    "1211": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "1213": {
      "op": "DUP2"
    },
    "1214": {
      "op": "ADD"
    },
    "1215": {
      "op": "DUP6"
    },
    "1216": {
      "op": "SWAP1"
    },
    "1217": {
      "op": "MSTORE"
    },
    "1218": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x1"
    },
    "1220": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1221": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1223": {
      "op": "ADD"
    },
    "1224": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "1226": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "1228": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "1229": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x20"
    },
    "1231": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP2",
      "path": "13"
    },
    "1232": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SUB",
      "path": "13"
    },
    "1233": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1234": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1235": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP5",
      "path": "13"
    },
    "1236": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SUB",
      "path": "13"
    },
    "1237": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1238": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP6",
      "path": "13"
    },
    "1239": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "GAS",
      "path": "13"
    },
    "1240": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "STATICCALL",
      "path": "13"
    },
    "1241": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1242": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1243": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "ISZERO",
      "path": "13"
    },
    "1244": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x4E9"
    },
    "1247": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "1248": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "RETURNDATASIZE",
      "path": "13"
    },
    "1249": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "1251": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "DUP1",
      "path": "13"
    },
    "1252": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "RETURNDATACOPY",
      "path": "13"
    },
    "1253": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "RETURNDATASIZE",
      "path": "13"
    },
    "1254": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "1256": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "REVERT",
      "path": "13"
    },
    "1257": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1258": {
      "op": "POP"
    },
    "1259": {
      "op": "POP"
    },
    "1260": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x40"
    },
    "1262": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "1263": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "1265": {
      "op": "NOT"
    },
    "1266": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "ADD",
      "path": "13"
    },
    "1267": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "MLOAD",
      "path": "13"
    },
    "1268": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6581,
        6605
      ],
      "op": "SWAP2",
      "path": "13"
    },
    "1269": {
      "op": "POP"
    },
    "1270": {
      "op": "POP"
    },
    "1271": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1273": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1275": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1277": {
      "op": "SHL"
    },
    "1278": {
      "op": "SUB"
    },
    "1279": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6619,
        6639
      ],
      "op": "DUP2",
      "path": "13"
    },
    "1280": {
      "branch": 26,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6619,
        6639
      ],
      "op": "AND",
      "path": "13"
    },
    "1281": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6615,
        6716
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x512"
    },
    "1284": {
      "branch": 26,
      "fn": "ECDSA.tryRecover",
      "offset": [
        6615,
        6716
      ],
      "op": "JUMPI",
      "path": "13"
    },
    "1285": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6671,
        6672
      ],
      "op": "PUSH1",
      "path": "13",
      "statement": 15,
      "value": "0x0"
    },
    "1287": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6675,
        6704
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x1"
    },
    "1289": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "1290": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "POP",
      "path": "13"
    },
    "1291": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "1292": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "POP",
      "path": "13"
    },
    "1293": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "POP",
      "path": "13"
    },
    "1294": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "PUSH2",
      "path": "13",
      "value": "0x519"
    },
    "1297": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6655,
        6705
      ],
      "op": "JUMP",
      "path": "13"
    },
    "1298": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6615,
        6716
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1299": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6734,
        6740
      ],
      "op": "SWAP2",
      "path": "13",
      "statement": 16
    },
    "1300": {
      "op": "POP"
    },
    "1301": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6742,
        6762
      ],
      "op": "PUSH1",
      "path": "13",
      "value": "0x0"
    },
    "1303": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        6742,
        6762
      ],
      "op": "SWAP1",
      "path": "13"
    },
    "1304": {
      "op": "POP"
    },
    "1305": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "JUMPDEST",
      "path": "13"
    },
    "1306": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "SWAP5",
      "path": "13"
    },
    "1307": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "POP",
      "path": "13"
    },
    "1308": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "SWAP5",
      "path": "13"
    },
    "1309": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "SWAP3",
      "path": "13"
    },
    "1310": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "POP",
      "path": "13"
    },
    "1311": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "POP",
      "path": "13"
    },
    "1312": {
      "fn": "ECDSA.tryRecover",
      "offset": [
        5167,
        6770
      ],
      "op": "POP",
      "path": "13"
    },
    "1313": {
      "fn": "ECDSA.tryRecover",
      "jump": "o",
      "offset": [
        5167,
        6770
      ],
      "op": "JUMP",
      "path": "13"
    },
    "1314": {
      "op": "JUMPDEST"
    },
    "1315": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1317": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1319": {
      "op": "DUP3"
    },
    "1320": {
      "op": "DUP5"
    },
    "1321": {
      "op": "SUB"
    },
    "1322": {
      "op": "SLT"
    },
    "1323": {
      "op": "ISZERO"
    },
    "1324": {
      "op": "PUSH2",
      "value": "0x533"
    },
    "1327": {
      "op": "JUMPI"
    },
    "1328": {
      "op": "DUP1"
    },
    "1329": {
      "op": "DUP2"
    },
    "1330": {
      "op": "REVERT"
    },
    "1331": {
      "op": "JUMPDEST"
    },
    "1332": {
      "op": "POP"
    },
    "1333": {
      "op": "CALLDATALOAD"
    },
    "1334": {
      "op": "SWAP2"
    },
    "1335": {
      "op": "SWAP1"
    },
    "1336": {
      "op": "POP"
    },
    "1337": {
      "jump": "o",
      "op": "JUMP"
    },
    "1338": {
      "op": "JUMPDEST"
    },
    "1339": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1341": {
      "op": "DUP1"
    },
    "1342": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1344": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1346": {
      "op": "DUP5"
    },
    "1347": {
      "op": "DUP7"
    },
    "1348": {
      "op": "SUB"
    },
    "1349": {
      "op": "SLT"
    },
    "1350": {
      "op": "ISZERO"
    },
    "1351": {
      "op": "PUSH2",
      "value": "0x54E"
    },
    "1354": {
      "op": "JUMPI"
    },
    "1355": {
      "op": "DUP2"
    },
    "1356": {
      "op": "DUP3"
    },
    "1357": {
      "op": "REVERT"
    },
    "1358": {
      "op": "JUMPDEST"
    },
    "1359": {
      "op": "DUP4"
    },
    "1360": {
      "op": "CALLDATALOAD"
    },
    "1361": {
      "op": "SWAP3"
    },
    "1362": {
      "op": "POP"
    },
    "1363": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1365": {
      "op": "DUP5"
    },
    "1366": {
      "op": "ADD"
    },
    "1367": {
      "op": "CALLDATALOAD"
    },
    "1368": {
      "op": "PUSH8",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "1377": {
      "op": "DUP1"
    },
    "1378": {
      "op": "DUP3"
    },
    "1379": {
      "op": "GT"
    },
    "1380": {
      "op": "ISZERO"
    },
    "1381": {
      "op": "PUSH2",
      "value": "0x56C"
    },
    "1384": {
      "op": "JUMPI"
    },
    "1385": {
      "op": "DUP4"
    },
    "1386": {
      "op": "DUP5"
    },
    "1387": {
      "op": "REVERT"
    },
    "1388": {
      "op": "JUMPDEST"
    },
    "1389": {
      "op": "DUP2"
    },
    "1390": {
      "op": "DUP7"
    },
    "1391": {
      "op": "ADD"
    },
    "1392": {
      "op": "SWAP2"
    },
    "1393": {
      "op": "POP"
    },
    "1394": {
      "op": "DUP7"
    },
    "1395": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "1397": {
      "op": "DUP4"
    },
    "1398": {
      "op": "ADD"
    },
    "1399": {
      "op": "SLT"
    },
    "1400": {
      "op": "PUSH2",
      "value": "0x57F"
    },
    "1403": {
      "op": "JUMPI"
    },
    "1404": {
      "op": "DUP4"
    },
    "1405": {
      "op": "DUP5"
    },
    "1406": {
      "op": "REVERT"
    },
    "1407": {
      "op": "JUMPDEST"
    },
    "1408": {
      "op": "DUP2"
    },
    "1409": {
      "op": "CALLDATALOAD"
    },
    "1410": {
      "op": "DUP2"
    },
    "1411": {
      "op": "DUP2"
    },
    "1412": {
      "op": "GT"
    },
    "1413": {
      "op": "ISZERO"
    },
    "1414": {
      "op": "PUSH2",
      "value": "0x58D"
    },
    "1417": {
      "op": "JUMPI"
    },
    "1418": {
      "op": "DUP5"
    },
    "1419": {
      "op": "DUP6"
    },
    "1420": {
      "op": "REVERT"
    },
    "1421": {
      "op": "JUMPDEST"
    },
    "1422": {
      "op": "DUP8"
    },
    "1423": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1425": {
      "op": "DUP3"
    },
    "1426": {
      "op": "DUP6"
    },
    "1427": {
      "op": "ADD"
    },
    "1428": {
      "op": "ADD"
    },
    "1429": {
      "op": "GT"
    },
    "1430": {
      "op": "ISZERO"
    },
    "1431": {
      "op": "PUSH2",
      "value": "0x59E"
    },
    "1434": {
      "op": "JUMPI"
    },
    "1435": {
      "op": "DUP5"
    },
    "1436": {
      "op": "DUP6"
    },
    "1437": {
      "op": "REVERT"
    },
    "1438": {
      "op": "JUMPDEST"
    },
    "1439": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1441": {
      "op": "DUP4"
    },
    "1442": {
      "op": "ADD"
    },
    "1443": {
      "op": "SWAP5"
    },
    "1444": {
      "op": "POP"
    },
    "1445": {
      "op": "DUP1"
    },
    "1446": {
      "op": "SWAP4"
    },
    "1447": {
      "op": "POP"
    },
    "1448": {
      "op": "POP"
    },
    "1449": {
      "op": "POP"
    },
    "1450": {
      "op": "POP"
    },
    "1451": {
      "op": "SWAP3"
    },
    "1452": {
      "op": "POP"
    },
    "1453": {
      "op": "SWAP3"
    },
    "1454": {
      "op": "POP"
    },
    "1455": {
      "op": "SWAP3"
    },
    "1456": {
      "jump": "o",
      "op": "JUMP"
    }
  },
  "sha1": "a909f9a21a28e5187ca74b6fb54426e37ef3a66c",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.2;\n\nimport {ECDSA} from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\n\ncontract EIP712 {\n\n    bytes32 public constant EIP712_TYPE_HASH =\n        keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n    string private _name;\n    string private _version;\n\n    bytes32 private _hashedName;\n    bytes32 private _hashedVersion;\n\n\n    constructor(string memory name, string memory version) {\n        _name = name;\n        _version = version;\n        _hashedName = keccak256(bytes(name));\n        _hashedVersion = keccak256(bytes(version));\n    }\n\n\n    function getSigner(\n        bytes32 digest,\n        bytes calldata signature\n    )\n        public\n        pure\n        returns(address signer)\n    {\n        return ECDSA.recover(digest, signature);\n    }\n\n\n    // same as EIP712._hashTypedDataV4(), see\n    // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol\n    function getTypedDataV4Hash(bytes32 structHash) public view returns (bytes32) {\n        return ECDSA.toTypedDataHash(_buildDomainSeparator(), structHash);\n    }\n\n\n    function _buildDomainSeparator() private view returns (bytes32) {\n        return keccak256(\n            abi.encode(\n                EIP712_TYPE_HASH, \n                _hashedName, \n                _hashedVersion, \n                block.chainid, \n                address(this)));\n    }\n}",
  "sourceMap": "140:1343:54:-:0;;;443:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;508:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;530:18:54;;;;:8;;:18;;;;;:::i;:::-;-1:-1:-1;572:22:54;;;;;;;558:11;:36;621:25;;;;;604:14;:42;140:1343;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;140:1343:54;;;-1:-1:-1;140:1343:54;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:909:67;;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;170:13;;-1:-1:-1;;;;;232:10:67;;;229:2;;;245:18;;:::i;:::-;320:2;314:9;288:2;374:13;;-1:-1:-1;;370:22:67;;;394:2;366:31;362:40;350:53;;;418:18;;;438:22;;;415:46;412:2;;;464:18;;:::i;:::-;504:10;500:2;493:22;539:2;531:6;524:18;561:4;551:14;;606:3;601:2;596;588:6;584:15;580:24;577:33;574:2;;;627:5;620;613:20;574:2;653:5;644:14;;667:133;681:2;678:1;675:9;667:133;;;769:14;;;765:23;;759:30;738:14;;;734:23;;727:63;692:10;;;;667:133;;;818:2;815:1;812:9;809:2;;;877:5;872:2;867;859:6;855:15;851:24;844:39;809:2;911:6;78:845;-1:-1:-1;;;;;;78:845:67:o;928:592::-;;;1088:2;1076:9;1067:7;1063:23;1059:32;1056:2;;;1109:6;1101;1094:22;1056:2;1141:16;;-1:-1:-1;;;;;1206:14:67;;;1203:2;;;1238:6;1230;1223:22;1203:2;1266:61;1319:7;1310:6;1299:9;1295:22;1266:61;:::i;:::-;1256:71;;1373:2;1362:9;1358:18;1352:25;1336:41;;1402:2;1392:8;1389:16;1386:2;;;1423:6;1415;1408:22;1386:2;;1451:63;1506:7;1495:8;1484:9;1480:24;1451:63;:::i;:::-;1441:73;;;1046:474;;;;;:::o;1525:380::-;1610:1;1600:12;;1657:1;1647:12;;;1668:2;;1722:4;1714:6;1710:17;1700:27;;1668:2;1775;1767:6;1764:14;1744:18;1741:38;1738:2;;;1821:10;1816:3;1812:20;1809:1;1802:31;1856:4;1853:1;1846:15;1884:4;1881:1;1874:15;1738:2;;1580:325;;;:::o;1910:127::-;1971:10;1966:3;1962:20;1959:1;1952:31;2002:4;1999:1;1992:15;2026:4;2023:1;2016:15;1942:95;140:1343:54;;;;;;",
  "sourcePath": "contracts/EIP712.sol",
  "type": "contract"
}