{
  "abi": [],
  "allSourcePaths": {
    "27": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
    "exportedSymbols": {
      "EnumerableSet": [
        19390
      ]
    },
    "id": 19391,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18793,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "115:23:27"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 18794,
          "nodeType": "StructuredDocumentation",
          "src": "140:1087:27",
          "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n ===="
        },
        "fullyImplemented": true,
        "id": 19390,
        "linearizedBaseContracts": [
          19390
        ],
        "name": "EnumerableSet",
        "nameLocation": "1236:13:27",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableSet.Set",
            "id": 18802,
            "members": [
              {
                "constant": false,
                "id": 18797,
                "mutability": "mutable",
                "name": "_values",
                "nameLocation": "1760:7:27",
                "nodeType": "VariableDeclaration",
                "scope": 18802,
                "src": "1750:17:27",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 18795,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 18796,
                  "nodeType": "ArrayTypeName",
                  "src": "1750:9:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 18801,
                "mutability": "mutable",
                "name": "_indexes",
                "nameLocation": "1928:8:27",
                "nodeType": "VariableDeclaration",
                "scope": 18802,
                "src": "1900:36:27",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 18800,
                  "keyType": {
                    "id": 18798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1908:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1900:27:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 18799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nameLocation": "1703:3:27",
            "nodeType": "StructDefinition",
            "scope": 19390,
            "src": "1696:247:27",
            "visibility": "public"
          },
          {
            "body": {
              "id": 18843,
              "nodeType": "Block",
              "src": "2182:335:27",
              "statements": [
                {
                  "condition": {
                    "id": 18817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2196:22:27",
                    "subExpression": {
                      "arguments": [
                        {
                          "id": 18814,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18806,
                          "src": "2207:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        {
                          "id": 18815,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18808,
                          "src": "2212:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 18813,
                        "name": "_contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18947,
                        "src": "2197:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                        }
                      },
                      "id": 18816,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2197:21:27",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18841,
                    "nodeType": "Block",
                    "src": "2474:37:27",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 18839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2495:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 18812,
                        "id": 18840,
                        "nodeType": "Return",
                        "src": "2488:12:27"
                      }
                    ]
                  },
                  "id": 18842,
                  "nodeType": "IfStatement",
                  "src": "2192:319:27",
                  "trueBody": {
                    "id": 18838,
                    "nodeType": "Block",
                    "src": "2220:248:27",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18823,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18808,
                              "src": "2251:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 18818,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18806,
                                "src": "2234:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18821,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18797,
                              "src": "2234:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 18822,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "2234:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer,bytes32)"
                            }
                          },
                          "id": 18824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2234:23:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18825,
                        "nodeType": "ExpressionStatement",
                        "src": "2234:23:27"
                      },
                      {
                        "expression": {
                          "id": 18834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 18826,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18806,
                                "src": "2392:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18829,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18801,
                              "src": "2392:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 18830,
                            "indexExpression": {
                              "id": 18828,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18808,
                              "src": "2405:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2392:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 18831,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18806,
                                "src": "2414:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18832,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18797,
                              "src": "2414:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 18833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2414:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2392:40:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18835,
                        "nodeType": "ExpressionStatement",
                        "src": "2392:40:27"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 18836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2453:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 18812,
                        "id": 18837,
                        "nodeType": "Return",
                        "src": "2446:11:27"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 18803,
              "nodeType": "StructuredDocumentation",
              "src": "1949:159:27",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 18844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_add",
            "nameLocation": "2122:4:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18806,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "2139:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18844,
                  "src": "2127:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18805,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18804,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "2127:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "2127:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18808,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2152:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18844,
                  "src": "2144:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18807,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2144:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2126:32:27"
            },
            "returnParameters": {
              "id": 18812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18811,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18844,
                  "src": "2176:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18810,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2176:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2175:6:27"
            },
            "scope": 19390,
            "src": "2113:404:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18927,
              "nodeType": "Block",
              "src": "2757:1316:27",
              "statements": [
                {
                  "assignments": [
                    18856
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18856,
                      "mutability": "mutable",
                      "name": "valueIndex",
                      "nameLocation": "2875:10:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 18927,
                      "src": "2867:18:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18855,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2867:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18861,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 18857,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18848,
                        "src": "2888:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 18858,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18801,
                      "src": "2888:12:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 18860,
                    "indexExpression": {
                      "id": 18859,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18850,
                      "src": "2901:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2888:19:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2867:40:27"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18862,
                      "name": "valueIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18856,
                      "src": "2922:10:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2936:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2922:15:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18925,
                    "nodeType": "Block",
                    "src": "4030:37:27",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 18923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4051:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 18854,
                        "id": 18924,
                        "nodeType": "Return",
                        "src": "4044:12:27"
                      }
                    ]
                  },
                  "id": 18926,
                  "nodeType": "IfStatement",
                  "src": "2918:1149:27",
                  "trueBody": {
                    "id": 18922,
                    "nodeType": "Block",
                    "src": "2939:1085:27",
                    "statements": [
                      {
                        "assignments": [
                          18866
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18866,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nameLocation": "3299:13:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "3291:21:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18865,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3291:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18870,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18867,
                            "name": "valueIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18856,
                            "src": "3315:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 18868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3328:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3315:14:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3291:38:27"
                      },
                      {
                        "assignments": [
                          18872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18872,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nameLocation": "3351:9:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 18922,
                            "src": "3343:17:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18871,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3343:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18878,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 18873,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18848,
                                "src": "3363:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18874,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18797,
                              "src": "3363:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 18875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3363:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 18876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3384:1:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3363:22:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3343:42:27"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18879,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18872,
                            "src": "3404:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 18880,
                            "name": "toDeleteIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18866,
                            "src": "3417:13:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3404:26:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18906,
                        "nodeType": "IfStatement",
                        "src": "3400:398:27",
                        "trueBody": {
                          "id": 18905,
                          "nodeType": "Block",
                          "src": "3432:366:27",
                          "statements": [
                            {
                              "assignments": [
                                18883
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18883,
                                  "mutability": "mutable",
                                  "name": "lastValue",
                                  "nameLocation": "3458:9:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18905,
                                  "src": "3450:17:27",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 18882,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3450:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18888,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 18884,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18848,
                                    "src": "3470:3:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 18885,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 18797,
                                  "src": "3470:11:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 18887,
                                "indexExpression": {
                                  "id": 18886,
                                  "name": "lastIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18872,
                                  "src": "3482:9:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3470:22:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3450:42:27"
                            },
                            {
                              "expression": {
                                "id": 18895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18889,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18848,
                                      "src": "3592:3:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 18892,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18797,
                                    "src": "3592:11:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 18893,
                                  "indexExpression": {
                                    "id": 18891,
                                    "name": "toDeleteIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18866,
                                    "src": "3604:13:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3592:26:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18894,
                                  "name": "lastValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18883,
                                  "src": "3621:9:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "3592:38:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 18896,
                              "nodeType": "ExpressionStatement",
                              "src": "3592:38:27"
                            },
                            {
                              "expression": {
                                "id": 18903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 18897,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18848,
                                      "src": "3704:3:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 18900,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_indexes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 18801,
                                    "src": "3704:12:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 18901,
                                  "indexExpression": {
                                    "id": 18899,
                                    "name": "lastValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18883,
                                    "src": "3717:9:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3704:23:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18902,
                                  "name": "valueIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18856,
                                  "src": "3730:10:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3704:36:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18904,
                              "nodeType": "ExpressionStatement",
                              "src": "3704:36:27"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 18907,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18848,
                                "src": "3876:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18797,
                              "src": "3876:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 18911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "src": "3876:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer)"
                            }
                          },
                          "id": 18912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3876:17:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18913,
                        "nodeType": "ExpressionStatement",
                        "src": "3876:17:27"
                      },
                      {
                        "expression": {
                          "id": 18918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3961:26:27",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 18914,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18848,
                                "src": "3968:3:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 18915,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 18801,
                              "src": "3968:12:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 18917,
                            "indexExpression": {
                              "id": 18916,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18850,
                              "src": "3981:5:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3968:19:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18919,
                        "nodeType": "ExpressionStatement",
                        "src": "3961:26:27"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 18920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4009:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 18854,
                        "id": 18921,
                        "nodeType": "Return",
                        "src": "4002:11:27"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 18845,
              "nodeType": "StructuredDocumentation",
              "src": "2523:157:27",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 18928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nameLocation": "2694:7:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18851,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18848,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "2714:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "2702:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18847,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18846,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "2702:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "2702:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18850,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2727:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "2719:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18849,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2719:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2701:32:27"
            },
            "returnParameters": {
              "id": 18854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18853,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "2751:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18852,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:6:27"
            },
            "scope": 19390,
            "src": "2685:1388:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18946,
              "nodeType": "Block",
              "src": "4233:48:27",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "expression": {
                          "id": 18939,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18932,
                          "src": "4250:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        "id": 18940,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18801,
                        "src": "4250:12:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 18942,
                      "indexExpression": {
                        "id": 18941,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18934,
                        "src": "4263:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4250:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4273:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4250:24:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 18938,
                  "id": 18945,
                  "nodeType": "Return",
                  "src": "4243:31:27"
                }
              ]
            },
            "documentation": {
              "id": 18929,
              "nodeType": "StructuredDocumentation",
              "src": "4079:70:27",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 18947,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nameLocation": "4163:9:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18932,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4185:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18947,
                  "src": "4173:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18931,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18930,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "4173:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "4173:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18934,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "4198:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18947,
                  "src": "4190:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18933,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4190:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4172:32:27"
            },
            "returnParameters": {
              "id": 18938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18937,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18947,
                  "src": "4227:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18936,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4227:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4226:6:27"
            },
            "scope": 19390,
            "src": "4154:127:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18960,
              "nodeType": "Block",
              "src": "4427:42:27",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 18956,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18951,
                        "src": "4444:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 18957,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18797,
                      "src": "4444:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 18958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "4444:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 18955,
                  "id": 18959,
                  "nodeType": "Return",
                  "src": "4437:25:27"
                }
              ]
            },
            "documentation": {
              "id": 18948,
              "nodeType": "StructuredDocumentation",
              "src": "4287:70:27",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 18961,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nameLocation": "4371:7:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18951,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4391:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18961,
                  "src": "4379:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18950,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18949,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "4379:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "4379:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4378:17:27"
            },
            "returnParameters": {
              "id": 18955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18954,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18961,
                  "src": "4418:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18953,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4418:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4417:9:27"
            },
            "scope": 19390,
            "src": "4362:107:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18977,
              "nodeType": "Block",
              "src": "4887:42:27",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "id": 18972,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18965,
                        "src": "4904:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 18973,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18797,
                      "src": "4904:11:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 18975,
                    "indexExpression": {
                      "id": 18974,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18967,
                      "src": "4916:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4904:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 18971,
                  "id": 18976,
                  "nodeType": "Return",
                  "src": "4897:25:27"
                }
              ]
            },
            "documentation": {
              "id": 18962,
              "nodeType": "StructuredDocumentation",
              "src": "4475:331:27",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 18978,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nameLocation": "4820:3:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18968,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18965,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4836:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18978,
                  "src": "4824:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18964,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18963,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "4824:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "4824:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18967,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4849:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18978,
                  "src": "4841:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18966,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4841:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4823:32:27"
            },
            "returnParameters": {
              "id": 18971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18970,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18978,
                  "src": "4878:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18969,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4878:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4877:9:27"
            },
            "scope": 19390,
            "src": "4811:118:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18991,
              "nodeType": "Block",
              "src": "5543:35:27",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "id": 18988,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18982,
                      "src": "5560:3:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                        "typeString": "struct EnumerableSet.Set storage pointer"
                      }
                    },
                    "id": 18989,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_values",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 18797,
                    "src": "5560:11:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 18987,
                  "id": 18990,
                  "nodeType": "Return",
                  "src": "5553:18:27"
                }
              ]
            },
            "documentation": {
              "id": 18979,
              "nodeType": "StructuredDocumentation",
              "src": "4935:529:27",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 18992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_values",
            "nameLocation": "5478:7:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18982,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5498:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "5486:15:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 18981,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18980,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18802,
                      "src": "5486:3:27"
                    },
                    "referencedDeclaration": 18802,
                    "src": "5486:3:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5485:17:27"
            },
            "returnParameters": {
              "id": 18987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18986,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 18992,
                  "src": "5525:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18984,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5525:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 18985,
                    "nodeType": "ArrayTypeName",
                    "src": "5525:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5524:18:27"
            },
            "scope": 19390,
            "src": "5469:109:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableSet.Bytes32Set",
            "id": 18996,
            "members": [
              {
                "constant": false,
                "id": 18995,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "5635:6:27",
                "nodeType": "VariableDeclaration",
                "scope": 18996,
                "src": "5631:10:27",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 18994,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 18993,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18802,
                    "src": "5631:3:27"
                  },
                  "referencedDeclaration": 18802,
                  "src": "5631:3:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Bytes32Set",
            "nameLocation": "5610:10:27",
            "nodeType": "StructDefinition",
            "scope": 19390,
            "src": "5603:45:27",
            "visibility": "public"
          },
          {
            "body": {
              "id": 19013,
              "nodeType": "Block",
              "src": "5894:47:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19008,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19000,
                          "src": "5916:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19009,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "5916:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 19010,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19002,
                        "src": "5928:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19007,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18844,
                      "src": "5911:4:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5911:23:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19006,
                  "id": 19012,
                  "nodeType": "Return",
                  "src": "5904:30:27"
                }
              ]
            },
            "documentation": {
              "id": 18997,
              "nodeType": "StructuredDocumentation",
              "src": "5654:159:27",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 19014,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "5827:3:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19003,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19000,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5850:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19014,
                  "src": "5831:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 18999,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18998,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "5831:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "5831:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19002,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5863:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19014,
                  "src": "5855:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19001,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5855:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5830:39:27"
            },
            "returnParameters": {
              "id": 19006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19005,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19014,
                  "src": "5888:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19004,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5887:6:27"
            },
            "scope": 19390,
            "src": "5818:123:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19031,
              "nodeType": "Block",
              "src": "6188:50:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19026,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19018,
                          "src": "6213:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19027,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "6213:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 19028,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19020,
                        "src": "6225:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19025,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18928,
                      "src": "6205:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6205:26:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19024,
                  "id": 19030,
                  "nodeType": "Return",
                  "src": "6198:33:27"
                }
              ]
            },
            "documentation": {
              "id": 19015,
              "nodeType": "StructuredDocumentation",
              "src": "5947:157:27",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 19032,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "6118:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19018,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6144:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19032,
                  "src": "6125:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 19017,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19016,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "6125:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "6125:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19020,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "6157:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19032,
                  "src": "6149:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19019,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6149:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6124:39:27"
            },
            "returnParameters": {
              "id": 19024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19023,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19032,
                  "src": "6182:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19022,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6182:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6181:6:27"
            },
            "scope": 19390,
            "src": "6109:129:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19049,
              "nodeType": "Block",
              "src": "6405:52:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19044,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19036,
                          "src": "6432:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19045,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "6432:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 19046,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19038,
                        "src": "6444:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19043,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18947,
                      "src": "6422:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 19047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6422:28:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19042,
                  "id": 19048,
                  "nodeType": "Return",
                  "src": "6415:35:27"
                }
              ]
            },
            "documentation": {
              "id": 19033,
              "nodeType": "StructuredDocumentation",
              "src": "6244:70:27",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 19050,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "6328:8:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19036,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6356:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19050,
                  "src": "6337:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 19035,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19034,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "6337:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "6337:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19038,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "6369:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19050,
                  "src": "6361:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19037,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6336:39:27"
            },
            "returnParameters": {
              "id": 19042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19041,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19050,
                  "src": "6399:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19040,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6399:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6398:6:27"
            },
            "scope": 19390,
            "src": "6319:138:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19064,
              "nodeType": "Block",
              "src": "6610:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19060,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19054,
                          "src": "6635:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19061,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "6635:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19059,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18961,
                      "src": "6627:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 19062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6627:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19058,
                  "id": 19063,
                  "nodeType": "Return",
                  "src": "6620:26:27"
                }
              ]
            },
            "documentation": {
              "id": 19051,
              "nodeType": "StructuredDocumentation",
              "src": "6463:70:27",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 19065,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "6547:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19054,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6573:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19065,
                  "src": "6554:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 19053,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19052,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "6554:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "6554:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6553:24:27"
            },
            "returnParameters": {
              "id": 19058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19057,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19065,
                  "src": "6601:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19056,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6601:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6600:9:27"
            },
            "scope": 19390,
            "src": "6538:115:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19082,
              "nodeType": "Block",
              "src": "7078:46:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19077,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19069,
                          "src": "7099:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19078,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "7099:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 19079,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19071,
                        "src": "7111:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19076,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18978,
                      "src": "7095:3:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                      }
                    },
                    "id": 19080,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7095:22:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 19075,
                  "id": 19081,
                  "nodeType": "Return",
                  "src": "7088:29:27"
                }
              ]
            },
            "documentation": {
              "id": 19066,
              "nodeType": "StructuredDocumentation",
              "src": "6659:331:27",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 19083,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "7004:2:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19069,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7026:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19083,
                  "src": "7007:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 19068,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19067,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "7007:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "7007:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19071,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "7039:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19083,
                  "src": "7031:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19070,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7031:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7006:39:27"
            },
            "returnParameters": {
              "id": 19075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19074,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19083,
                  "src": "7069:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7069:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7068:9:27"
            },
            "scope": 19390,
            "src": "6995:129:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19098,
              "nodeType": "Block",
              "src": "7745:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19094,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19087,
                          "src": "7770:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 19095,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 18995,
                        "src": "7770:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19093,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18992,
                      "src": "7762:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 19096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 19092,
                  "id": 19097,
                  "nodeType": "Return",
                  "src": "7755:26:27"
                }
              ]
            },
            "documentation": {
              "id": 19084,
              "nodeType": "StructuredDocumentation",
              "src": "7130:529:27",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 19099,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "7673:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19087,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7699:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19099,
                  "src": "7680:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 19086,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19085,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 18996,
                      "src": "7680:10:27"
                    },
                    "referencedDeclaration": 18996,
                    "src": "7680:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7679:24:27"
            },
            "returnParameters": {
              "id": 19092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19091,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19099,
                  "src": "7727:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19089,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "7727:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 19090,
                    "nodeType": "ArrayTypeName",
                    "src": "7727:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7726:18:27"
            },
            "scope": 19390,
            "src": "7664:124:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.AddressSet",
            "id": 19103,
            "members": [
              {
                "constant": false,
                "id": 19102,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "7845:6:27",
                "nodeType": "VariableDeclaration",
                "scope": 19103,
                "src": "7841:10:27",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 19101,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 19100,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18802,
                    "src": "7841:3:27"
                  },
                  "referencedDeclaration": 18802,
                  "src": "7841:3:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "AddressSet",
            "nameLocation": "7820:10:27",
            "nodeType": "StructDefinition",
            "scope": 19390,
            "src": "7813:45:27",
            "visibility": "public"
          },
          {
            "body": {
              "id": 19129,
              "nodeType": "Block",
              "src": "8104:74:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19115,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19107,
                          "src": "8126:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 19116,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19102,
                        "src": "8126:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 19123,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19109,
                                    "src": "8162:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8154:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 19121,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8154:7:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8154:14:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 19120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8146:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 19119,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8146:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8146:23:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8138:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19117,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8138:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8138:32:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19114,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18844,
                      "src": "8121:4:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8121:50:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19113,
                  "id": 19128,
                  "nodeType": "Return",
                  "src": "8114:57:27"
                }
              ]
            },
            "documentation": {
              "id": 19104,
              "nodeType": "StructuredDocumentation",
              "src": "7864:159:27",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 19130,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "8037:3:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19107,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8060:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "8041:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19106,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19105,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "8041:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "8041:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19109,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8073:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "8065:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19108,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8065:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8040:39:27"
            },
            "returnParameters": {
              "id": 19113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19112,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19130,
                  "src": "8098:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19111,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8098:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8097:6:27"
            },
            "scope": 19390,
            "src": "8028:150:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19156,
              "nodeType": "Block",
              "src": "8425:77:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19142,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19134,
                          "src": "8450:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 19143,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19102,
                        "src": "8450:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 19150,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19136,
                                    "src": "8486:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8478:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 19148,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8478:7:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8478:14:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 19147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8470:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 19146,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8470:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8470:23:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8462:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19144,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8462:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8462:32:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19141,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18928,
                      "src": "8442:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8442:53:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19140,
                  "id": 19155,
                  "nodeType": "Return",
                  "src": "8435:60:27"
                }
              ]
            },
            "documentation": {
              "id": 19131,
              "nodeType": "StructuredDocumentation",
              "src": "8184:157:27",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 19157,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "8355:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19134,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8381:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19157,
                  "src": "8362:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19133,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19132,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "8362:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "8362:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19136,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8394:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19157,
                  "src": "8386:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19135,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8386:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8361:39:27"
            },
            "returnParameters": {
              "id": 19140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19139,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19157,
                  "src": "8419:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19138,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8419:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8418:6:27"
            },
            "scope": 19390,
            "src": "8346:156:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19183,
              "nodeType": "Block",
              "src": "8669:79:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19169,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19161,
                          "src": "8696:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 19170,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19102,
                        "src": "8696:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 19177,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19163,
                                    "src": "8732:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 19176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8724:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 19175,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8724:7:27",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8724:14:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 19174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8716:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 19173,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8716:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8716:23:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8708:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19171,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8708:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8708:32:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19168,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18947,
                      "src": "8686:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 19181,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8686:55:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19167,
                  "id": 19182,
                  "nodeType": "Return",
                  "src": "8679:62:27"
                }
              ]
            },
            "documentation": {
              "id": 19158,
              "nodeType": "StructuredDocumentation",
              "src": "8508:70:27",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 19184,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "8592:8:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19161,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8620:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19184,
                  "src": "8601:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19160,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19159,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "8601:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "8601:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19163,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8633:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19184,
                  "src": "8625:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19162,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8625:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8600:39:27"
            },
            "returnParameters": {
              "id": 19167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19166,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19184,
                  "src": "8663:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19165,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8663:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8662:6:27"
            },
            "scope": 19390,
            "src": "8583:165:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19198,
              "nodeType": "Block",
              "src": "8901:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19194,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19188,
                          "src": "8926:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 19195,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19102,
                        "src": "8926:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19193,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18961,
                      "src": "8918:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 19196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8918:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19192,
                  "id": 19197,
                  "nodeType": "Return",
                  "src": "8911:26:27"
                }
              ]
            },
            "documentation": {
              "id": 19185,
              "nodeType": "StructuredDocumentation",
              "src": "8754:70:27",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 19199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "8838:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19188,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8864:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "8845:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19187,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19186,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "8845:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "8845:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8844:24:27"
            },
            "returnParameters": {
              "id": 19192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19191,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19199,
                  "src": "8892:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19190,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8892:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8891:9:27"
            },
            "scope": 19390,
            "src": "8829:115:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19225,
              "nodeType": "Block",
              "src": "9369:73:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 19217,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19203,
                                      "src": "9414:3:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                                        "typeString": "struct EnumerableSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 19218,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 19102,
                                    "src": "9414:10:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$18802_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    }
                                  },
                                  {
                                    "id": 19219,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19205,
                                    "src": "9426:5:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$18802_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19216,
                                  "name": "_at",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18978,
                                  "src": "9410:3:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 19220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9410:22:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 19215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9402:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 19214,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9402:7:27",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9402:31:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9394:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 19212,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "9394:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9394:40:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 19211,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9386:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 19210,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9386:7:27",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 19223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9386:49:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 19209,
                  "id": 19224,
                  "nodeType": "Return",
                  "src": "9379:56:27"
                }
              ]
            },
            "documentation": {
              "id": 19200,
              "nodeType": "StructuredDocumentation",
              "src": "8950:331:27",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 19226,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "9295:2:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19203,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "9317:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19226,
                  "src": "9298:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19202,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19201,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "9298:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "9298:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19205,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "9330:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19226,
                  "src": "9322:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9322:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9297:39:27"
            },
            "returnParameters": {
              "id": 19209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19208,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19226,
                  "src": "9360:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19207,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9360:7:27",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9359:9:27"
            },
            "scope": 19390,
            "src": "9286:156:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19255,
              "nodeType": "Block",
              "src": "10063:219:27",
              "statements": [
                {
                  "assignments": [
                    19240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19240,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "10090:5:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 19255,
                      "src": "10073:22:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 19238,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10073:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 19239,
                        "nodeType": "ArrayTypeName",
                        "src": "10073:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 19245,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19242,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19230,
                          "src": "10106:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 19243,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19102,
                        "src": "10106:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19241,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18992,
                      "src": "10098:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 19244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10098:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10073:44:27"
                },
                {
                  "assignments": [
                    19250
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19250,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "10144:6:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 19255,
                      "src": "10127:23:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 19248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10127:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19249,
                        "nodeType": "ArrayTypeName",
                        "src": "10127:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 19251,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10127:23:27"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "10213:39:27",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10227:15:27",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "10237:5:27"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "10227:6:27"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 19250,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "10227:6:27",
                      "valueSize": 1
                    },
                    {
                      "declaration": 19240,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "10237:5:27",
                      "valueSize": 1
                    }
                  ],
                  "id": 19252,
                  "nodeType": "InlineAssembly",
                  "src": "10204:48:27"
                },
                {
                  "expression": {
                    "id": 19253,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19250,
                    "src": "10269:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 19235,
                  "id": 19254,
                  "nodeType": "Return",
                  "src": "10262:13:27"
                }
              ]
            },
            "documentation": {
              "id": 19227,
              "nodeType": "StructuredDocumentation",
              "src": "9448:529:27",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 19256,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "9991:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19231,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19230,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10017:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19256,
                  "src": "9998:22:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 19229,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19228,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19103,
                      "src": "9998:10:27"
                    },
                    "referencedDeclaration": 19103,
                    "src": "9998:10:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$19103_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9997:24:27"
            },
            "returnParameters": {
              "id": 19235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19234,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19256,
                  "src": "10045:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19232,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "10045:7:27",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 19233,
                    "nodeType": "ArrayTypeName",
                    "src": "10045:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10044:18:27"
            },
            "scope": 19390,
            "src": "9982:300:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.UintSet",
            "id": 19260,
            "members": [
              {
                "constant": false,
                "id": 19259,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "10333:6:27",
                "nodeType": "VariableDeclaration",
                "scope": 19260,
                "src": "10329:10:27",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 19258,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 19257,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 18802,
                    "src": "10329:3:27"
                  },
                  "referencedDeclaration": 18802,
                  "src": "10329:3:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$18802_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "UintSet",
            "nameLocation": "10311:7:27",
            "nodeType": "StructDefinition",
            "scope": 19390,
            "src": "10304:42:27",
            "visibility": "public"
          },
          {
            "body": {
              "id": 19280,
              "nodeType": "Block",
              "src": "10589:56:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19272,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19264,
                          "src": "10611:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 19273,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19259,
                        "src": "10611:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 19276,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19266,
                            "src": "10631:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10623:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19274,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10623:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10623:14:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19271,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18844,
                      "src": "10606:4:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10606:32:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19270,
                  "id": 19279,
                  "nodeType": "Return",
                  "src": "10599:39:27"
                }
              ]
            },
            "documentation": {
              "id": 19261,
              "nodeType": "StructuredDocumentation",
              "src": "10352:159:27",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 19281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "10525:3:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19264,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10545:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19281,
                  "src": "10529:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19263,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19262,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "10529:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "10529:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19266,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10558:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19281,
                  "src": "10550:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19265,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10550:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10528:36:27"
            },
            "returnParameters": {
              "id": 19270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19269,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19281,
                  "src": "10583:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19268,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10583:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10582:6:27"
            },
            "scope": 19390,
            "src": "10516:129:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19301,
              "nodeType": "Block",
              "src": "10889:59:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19293,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19285,
                          "src": "10914:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 19294,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19259,
                        "src": "10914:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 19297,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19287,
                            "src": "10934:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10926:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19295,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10926:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10926:14:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19292,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18928,
                      "src": "10906:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 19299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10906:35:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19291,
                  "id": 19300,
                  "nodeType": "Return",
                  "src": "10899:42:27"
                }
              ]
            },
            "documentation": {
              "id": 19282,
              "nodeType": "StructuredDocumentation",
              "src": "10651:157:27",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 19302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "10822:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19285,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10845:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19302,
                  "src": "10829:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19284,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19283,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "10829:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "10829:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19287,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10858:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19302,
                  "src": "10850:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19286,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10850:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10828:36:27"
            },
            "returnParameters": {
              "id": 19291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19290,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19302,
                  "src": "10883:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19289,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10883:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10882:6:27"
            },
            "scope": 19390,
            "src": "10813:135:27",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19322,
              "nodeType": "Block",
              "src": "11112:61:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19314,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19306,
                          "src": "11139:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 19315,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19259,
                        "src": "11139:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 19318,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19308,
                            "src": "11159:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11151:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 19316,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11151:7:27",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11151:14:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19313,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18947,
                      "src": "11129:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 19320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11129:37:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19312,
                  "id": 19321,
                  "nodeType": "Return",
                  "src": "11122:44:27"
                }
              ]
            },
            "documentation": {
              "id": 19303,
              "nodeType": "StructuredDocumentation",
              "src": "10954:70:27",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 19323,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "11038:8:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19309,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19306,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11063:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19323,
                  "src": "11047:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19305,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19304,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "11047:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "11047:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19308,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "11076:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19323,
                  "src": "11068:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19307,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11068:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11046:36:27"
            },
            "returnParameters": {
              "id": 19312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19311,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19323,
                  "src": "11106:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19310,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11106:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11105:6:27"
            },
            "scope": 19390,
            "src": "11029:144:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19337,
              "nodeType": "Block",
              "src": "11323:43:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19333,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19327,
                          "src": "11348:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 19334,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19259,
                        "src": "11348:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19332,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18961,
                      "src": "11340:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 19335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11340:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19331,
                  "id": 19336,
                  "nodeType": "Return",
                  "src": "11333:26:27"
                }
              ]
            },
            "documentation": {
              "id": 19324,
              "nodeType": "StructuredDocumentation",
              "src": "11179:70:27",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 19338,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "11263:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19327,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11286:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19338,
                  "src": "11270:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19326,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19325,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "11270:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "11270:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11269:21:27"
            },
            "returnParameters": {
              "id": 19331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19330,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19338,
                  "src": "11314:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11314:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11313:9:27"
            },
            "scope": 19390,
            "src": "11254:112:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19358,
              "nodeType": "Block",
              "src": "11788:55:27",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 19352,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19342,
                              "src": "11817:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 19353,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 19259,
                            "src": "11817:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$18802_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "id": 19354,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19344,
                            "src": "11829:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$18802_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 19351,
                          "name": "_at",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18978,
                          "src": "11813:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 19355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11813:22:27",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 19350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "11805:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 19349,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11805:7:27",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 19356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11805:31:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19348,
                  "id": 19357,
                  "nodeType": "Return",
                  "src": "11798:38:27"
                }
              ]
            },
            "documentation": {
              "id": 19339,
              "nodeType": "StructuredDocumentation",
              "src": "11372:331:27",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 19359,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "11717:2:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19342,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11736:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19359,
                  "src": "11720:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19341,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19340,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "11720:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "11720:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19344,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "11749:5:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19359,
                  "src": "11741:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19343,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11741:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11719:36:27"
            },
            "returnParameters": {
              "id": 19348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19347,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19359,
                  "src": "11779:7:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11779:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11778:9:27"
            },
            "scope": 19390,
            "src": "11708:135:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19388,
              "nodeType": "Block",
              "src": "12461:219:27",
              "statements": [
                {
                  "assignments": [
                    19373
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19373,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "12488:5:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 19388,
                      "src": "12471:22:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 19371,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12471:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 19372,
                        "nodeType": "ArrayTypeName",
                        "src": "12471:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 19378,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 19375,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19363,
                          "src": "12504:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 19376,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 19259,
                        "src": "12504:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$18802_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 19374,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18992,
                      "src": "12496:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$18802_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 19377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12496:19:27",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12471:44:27"
                },
                {
                  "assignments": [
                    19383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19383,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "12542:6:27",
                      "nodeType": "VariableDeclaration",
                      "scope": 19388,
                      "src": "12525:23:27",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 19381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12525:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19382,
                        "nodeType": "ArrayTypeName",
                        "src": "12525:9:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 19384,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12525:23:27"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "12611:39:27",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "12625:15:27",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "12635:5:27"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "12625:6:27"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 19383,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12625:6:27",
                      "valueSize": 1
                    },
                    {
                      "declaration": 19373,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12635:5:27",
                      "valueSize": 1
                    }
                  ],
                  "id": 19385,
                  "nodeType": "InlineAssembly",
                  "src": "12602:48:27"
                },
                {
                  "expression": {
                    "id": 19386,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19383,
                    "src": "12667:6:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 19368,
                  "id": 19387,
                  "nodeType": "Return",
                  "src": "12660:13:27"
                }
              ]
            },
            "documentation": {
              "id": 19360,
              "nodeType": "StructuredDocumentation",
              "src": "11849:529:27",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 19389,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "12392:6:27",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19363,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "12415:3:27",
                  "nodeType": "VariableDeclaration",
                  "scope": 19389,
                  "src": "12399:19:27",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 19362,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19361,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 19260,
                      "src": "12399:7:27"
                    },
                    "referencedDeclaration": 19260,
                    "src": "12399:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$19260_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12398:21:27"
            },
            "returnParameters": {
              "id": 19368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19367,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19389,
                  "src": "12443:16:27",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19365,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12443:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 19366,
                    "nodeType": "ArrayTypeName",
                    "src": "12443:9:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12442:18:27"
            },
            "scope": 19390,
            "src": "12383:297:27",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 19391,
        "src": "1228:11454:27"
      }
    ],
    "src": "115:12568:27"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204af471f97d22eaca2e0e2520a3e03b7e75142bb524f0295e26ca502cca680c6764736f6c63430008020033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "EnumerableSet",
  "coverageMap": {
    "branches": {
      "27": {}
    },
    "statements": {
      "27": {}
    }
  },
  "dependencies": [],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204af471f97d22eaca2e0e2520a3e03b7e75142bb524f0295e26ca502cca680c6764736f6c63430008020033",
  "deployedSourceMap": "1228:11454:27:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ====  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    1228,
    12682
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A DELEGATECALL PUSH18 0xF97D22EACA2E0E2520A3E03B7E75142BB524 CREATE 0x29 0x5E 0x26 0xCA POP 0x2C 0xCA PUSH9 0xC6764736F6C634300 ADDMOD MUL STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH20",
      "path": "27",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "ADDRESS",
      "path": "27"
    },
    "22": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "EQ",
      "path": "27"
    },
    "23": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "28": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "DUP1",
      "path": "27"
    },
    "31": {
      "fn": null,
      "offset": [
        1228,
        12682
      ],
      "op": "REVERT",
      "path": "27"
    }
  },
  "sha1": "8b81534eb2b6020143d47494f95e5c014e6befbb",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n *  Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n *  See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n *  In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping(bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) {\n            // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            if (lastIndex != toDeleteIndex) {\n                bytes32 lastValue = set._values[lastIndex];\n\n                // Move the last value to the index where the value to delete is\n                set._values[toDeleteIndex] = lastValue;\n                // Update the index for the moved value\n                set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n            }\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        return set._values[index];\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function _values(Set storage set) private view returns (bytes32[] memory) {\n        return set._values;\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n        return _values(set._inner);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(AddressSet storage set) internal view returns (address[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        address[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        uint256[] memory result;\n\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n}\n",
  "sourceMap": "1228:11454:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1228:11454:27;;;;;;;;;;;;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
  "type": "library"
}