{
  "fileName": "EnumerableMap.sol",
  "contractName": "EnumerableMap",
  "source": "pragma solidity ^0.6.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n *     // Declare a set state variable\n *     EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Map type with\n    // bytes32 keys and values.\n    // The Map implementation uses private functions, and user-facing\n    // implementations (such as Uint256ToAddressMap) are just wrappers around\n    // the underlying Map.\n    // This means that we can only create new EnumerableMaps for types that fit\n    // in bytes32.\n\n    struct MapEntry {\n        bytes32 _key;\n        bytes32 _value;\n    }\n\n    struct Map {\n        // Storage of map keys and values\n        MapEntry[] _entries;\n\n        // Position of the entry defined by a key in the `entries` array, plus 1\n        // because index 0 means a key is not in the map.\n        mapping (bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex == 0) { // Equivalent to !contains(map, key)\n            map._entries.push(MapEntry({ _key: key, _value: value }));\n            // The entry is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            map._indexes[key] = map._entries.length;\n            return true;\n        } else {\n            map._entries[keyIndex - 1]._value = value;\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a key-value pair from a map. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function _remove(Map storage map, bytes32 key) private returns (bool) {\n        // We read and store the key's index to prevent multiple reads from the same storage slot\n        uint256 keyIndex = map._indexes[key];\n\n        if (keyIndex != 0) { // Equivalent to contains(map, key)\n            // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n            // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = keyIndex - 1;\n            uint256 lastIndex = map._entries.length - 1;\n\n            // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n            // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n            MapEntry storage lastEntry = map._entries[lastIndex];\n\n            // Move the last entry to the index where the entry to delete is\n            map._entries[toDeleteIndex] = lastEntry;\n            // Update the index for the moved entry\n            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n            // Delete the slot where the moved entry was stored\n            map._entries.pop();\n\n            // Delete the index for the deleted slot\n            delete map._indexes[key];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function _contains(Map storage map, bytes32 key) private view returns (bool) {\n        return map._indexes[key] != 0;\n    }\n\n    /**\n     * @dev Returns the number of key-value pairs in the map. O(1).\n     */\n    function _length(Map storage map) private view returns (uint256) {\n        return map._entries.length;\n    }\n\n   /**\n    * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n    *\n    * Note that there are no guarantees on the ordering of entries inside the\n    * array, and it may change when more entries are added or removed.\n    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n        require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n        MapEntry storage entry = map._entries[index];\n        return (entry._key, entry._value);\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n        return _get(map, key, \"EnumerableMap: nonexistent key\");\n    }\n\n    /**\n     * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n     */\n    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n        uint256 keyIndex = map._indexes[key];\n        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n        return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n    }\n\n    // UintToAddressMap\n\n    struct UintToAddressMap {\n        Map _inner;\n    }\n\n    /**\n     * @dev Adds a key-value pair to a map, or updates the value for an existing\n     * key. O(1).\n     *\n     * Returns true if the key was added to the map, that is if it was not\n     * already present.\n     */\n    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n        return _set(map._inner, bytes32(key), bytes32(uint256(value)));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the key was removed from the map, that is if it was present.\n     */\n    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n        return _remove(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns true if the key is in the map. O(1).\n     */\n    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n        return _contains(map._inner, bytes32(key));\n    }\n\n    /**\n     * @dev Returns the number of elements in the map. O(1).\n     */\n    function length(UintToAddressMap storage map) internal view returns (uint256) {\n        return _length(map._inner);\n    }\n\n   /**\n    * @dev Returns the element 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    *\n    * Requirements:\n    *\n    * - `index` must be strictly less than {length}.\n    */\n    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n        (bytes32 key, bytes32 value) = _at(map._inner, index);\n        return (uint256(key), address(uint256(value)));\n    }\n\n    /**\n     * @dev Returns the value associated with `key`.  O(1).\n     *\n     * Requirements:\n     *\n     * - `key` must be in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n        return address(uint256(_get(map._inner, bytes32(key))));\n    }\n\n    /**\n     * @dev Same as {get}, with a custom error message when `key` is not in the map.\n     */\n    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n        return address(uint256(_get(map._inner, bytes32(key), errorMessage)));\n    }\n}\n",
  "sourcePath": "contracts/utils/EnumerableMap.sol",
  "sourceMap": "731:7555:102:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "731:7555:102:-:0;;;;;;12:1:-1;9;2:12",
  "abi": [],
  "ast": {
    "absolutePath": "contracts/utils/EnumerableMap.sol",
    "exportedSymbols": {
      "EnumerableMap": [
        14637
      ]
    },
    "id": 14638,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14184,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:102"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 14185,
          "nodeType": "StructuredDocumentation",
          "src": "25:705:102",
          "text": "@dev Library for managing an enumerable variant of Solidity's\nhttps://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\ntype.\n * Maps have the following properties:\n * - Entries are added, removed, and checked for existence in constant time\n(O(1)).\n- Entries are enumerated in O(n). No guarantees are made on the ordering.\n * ```\ncontract Example {\n    // Add the library methods\n    using EnumerableMap for EnumerableMap.UintToAddressMap;\n *     // Declare a set state variable\n    EnumerableMap.UintToAddressMap private myMap;\n}\n```\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\nsupported."
        },
        "fullyImplemented": true,
        "id": 14637,
        "linearizedBaseContracts": [
          14637
        ],
        "name": "EnumerableMap",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableMap.MapEntry",
            "id": 14190,
            "members": [
              {
                "constant": false,
                "id": 14187,
                "mutability": "mutable",
                "name": "_key",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 14190,
                "src": "1243:12:102",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 14186,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1243:7:102",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 14189,
                "mutability": "mutable",
                "name": "_value",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 14190,
                "src": "1265:14:102",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 14188,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1265:7:102",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "MapEntry",
            "nodeType": "StructDefinition",
            "scope": 14637,
            "src": "1217:69:102",
            "visibility": "public"
          },
          {
            "canonicalName": "EnumerableMap.Map",
            "id": 14198,
            "members": [
              {
                "constant": false,
                "id": 14193,
                "mutability": "mutable",
                "name": "_entries",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 14198,
                "src": "1355:19:102",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage_ptr",
                  "typeString": "struct EnumerableMap.MapEntry[]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 14191,
                    "name": "MapEntry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14190,
                    "src": "1355:8:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                      "typeString": "struct EnumerableMap.MapEntry"
                    }
                  },
                  "id": 14192,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "1355:10:102",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage_ptr",
                    "typeString": "struct EnumerableMap.MapEntry[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 14197,
                "mutability": "mutable",
                "name": "_indexes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 14198,
                "src": "1524:37:102",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 14196,
                  "keyType": {
                    "id": 14194,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1533:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1524:28:102",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 14195,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1544:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Map",
            "nodeType": "StructDefinition",
            "scope": 14637,
            "src": "1292:276:102",
            "visibility": "public"
          },
          {
            "body": {
              "id": 14259,
              "nodeType": "Block",
              "src": "1877:596:102",
              "statements": [
                {
                  "assignments": [
                    14211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14211,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14259,
                      "src": "1985:16:102",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14210,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1985:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14216,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14212,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14201,
                        "src": "2004:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 14213,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14197,
                      "src": "2004:12:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 14215,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14214,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14203,
                      "src": "2017:3:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2004:17:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1985:36:102"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14217,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14211,
                      "src": "2036:8:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2048:1:102",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2036:13:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 14257,
                    "nodeType": "Block",
                    "src": "2375:92:102",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14244,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14201,
                                  "src": "2389:3:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                    "typeString": "struct EnumerableMap.Map storage pointer"
                                  }
                                },
                                "id": 14249,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_entries",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14193,
                                "src": "2389:12:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                  "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                                }
                              },
                              "id": 14250,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14246,
                                  "name": "keyIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14211,
                                  "src": "2402:8:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 14247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2413:1:102",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "2402:12:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2389:26:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref"
                              }
                            },
                            "id": 14251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14189,
                            "src": "2389:33:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14252,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14205,
                            "src": "2425:5:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2389:41:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14254,
                        "nodeType": "ExpressionStatement",
                        "src": "2389:41:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2451:5:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14209,
                        "id": 14256,
                        "nodeType": "Return",
                        "src": "2444:12:102"
                      }
                    ]
                  },
                  "id": 14258,
                  "nodeType": "IfStatement",
                  "src": "2032:435:102",
                  "trueBody": {
                    "id": 14243,
                    "nodeType": "Block",
                    "src": "2051:318:102",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14226,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14203,
                                  "src": "2137:3:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 14227,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14205,
                                  "src": "2150:5:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 14225,
                                "name": "MapEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14190,
                                "src": "2120:8:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_MapEntry_$14190_storage_ptr_$",
                                  "typeString": "type(struct EnumerableMap.MapEntry storage pointer)"
                                }
                              },
                              "id": 14228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "_key",
                                "_value"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "2120:38:102",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$14190_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_MapEntry_$14190_memory_ptr",
                                "typeString": "struct EnumerableMap.MapEntry memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14220,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14201,
                                "src": "2102:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14223,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14193,
                              "src": "2102:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 14224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2102:17:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$14190_storage_$returns$__$",
                              "typeString": "function (struct EnumerableMap.MapEntry storage ref)"
                            }
                          },
                          "id": 14229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2102:57:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14230,
                        "nodeType": "ExpressionStatement",
                        "src": "2102:57:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14231,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14201,
                                "src": "2294:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14234,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14197,
                              "src": "2294:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 14235,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14233,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14203,
                              "src": "2307:3:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2294:17:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14236,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14201,
                                "src": "2314:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14237,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14193,
                              "src": "2314:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 14238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2314:19:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2294:39:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14240,
                        "nodeType": "ExpressionStatement",
                        "src": "2294:39:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2354:4:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14209,
                        "id": 14242,
                        "nodeType": "Return",
                        "src": "2347:11:102"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 14199,
              "nodeType": "StructuredDocumentation",
              "src": "1574:216:102",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 14260,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14201,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14260,
                  "src": "1809:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14200,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "1809:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14203,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14260,
                  "src": "1826:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14202,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1826:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14205,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14260,
                  "src": "1839:13:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14204,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1839:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1808:45:102"
            },
            "returnParameters": {
              "id": 14209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14208,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14260,
                  "src": "1871:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14207,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1870:6:102"
            },
            "scope": 14637,
            "src": "1795:678:102",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14340,
              "nodeType": "Block",
              "src": "2711:1447:102",
              "statements": [
                {
                  "assignments": [
                    14271
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14271,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14340,
                      "src": "2819:16:102",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14270,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2819:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14276,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14272,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14263,
                        "src": "2838:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 14273,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14197,
                      "src": "2838:12:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 14275,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14274,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14265,
                      "src": "2851:3:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2838:17:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2819:36:102"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14277,
                      "name": "keyIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14271,
                      "src": "2870:8:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14278,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2882:1:102",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2870:13:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 14338,
                    "nodeType": "Block",
                    "src": "4115:37:102",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4136:5:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14269,
                        "id": 14337,
                        "nodeType": "Return",
                        "src": "4129:12:102"
                      }
                    ]
                  },
                  "id": 14339,
                  "nodeType": "IfStatement",
                  "src": "2866:1286:102",
                  "trueBody": {
                    "id": 14335,
                    "nodeType": "Block",
                    "src": "2885:1224:102",
                    "statements": [
                      {
                        "assignments": [
                          14281
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14281,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14335,
                            "src": "3226:21:102",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14280,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3226:7:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14285,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14282,
                            "name": "keyIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14271,
                            "src": "3250:8:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 14283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3261:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3250:12:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3226:36:102"
                      },
                      {
                        "assignments": [
                          14287
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14287,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14335,
                            "src": "3276:17:102",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14286,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3276:7:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14293,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14288,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14263,
                                "src": "3296:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14289,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14193,
                              "src": "3296:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 14290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3296:19:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 14291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3318:1:102",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3296:23:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3276:43:102"
                      },
                      {
                        "assignments": [
                          14295
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14295,
                            "mutability": "mutable",
                            "name": "lastEntry",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 14335,
                            "src": "3559:26:102",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 14294,
                              "name": "MapEntry",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 14190,
                              "src": "3559:8:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                                "typeString": "struct EnumerableMap.MapEntry"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14300,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14296,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14263,
                              "src": "3588:3:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 14297,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14193,
                            "src": "3588:12:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 14299,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14298,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14287,
                            "src": "3601:9:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3588:23:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3559:52:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14301,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14263,
                                "src": "3703:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14304,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14193,
                              "src": "3703:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 14305,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14303,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14281,
                              "src": "3716:13:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3703:27:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14306,
                            "name": "lastEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14295,
                            "src": "3733:9:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                              "typeString": "struct EnumerableMap.MapEntry storage pointer"
                            }
                          },
                          "src": "3703:39:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                            "typeString": "struct EnumerableMap.MapEntry storage ref"
                          }
                        },
                        "id": 14308,
                        "nodeType": "ExpressionStatement",
                        "src": "3703:39:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14309,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14263,
                                "src": "3808:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14313,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14197,
                              "src": "3808:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 14314,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14311,
                                "name": "lastEntry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14295,
                                "src": "3821:9:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                                  "typeString": "struct EnumerableMap.MapEntry storage pointer"
                                }
                              },
                              "id": 14312,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_key",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14187,
                              "src": "3821:14:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3808:28:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 14315,
                              "name": "toDeleteIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14281,
                              "src": "3839:13:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 14316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3855:1:102",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3839:17:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3808:48:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14319,
                        "nodeType": "ExpressionStatement",
                        "src": "3808:48:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14320,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14263,
                                "src": "3962:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14323,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_entries",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14193,
                              "src": "3962:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                                "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                              }
                            },
                            "id": 14324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3962:16:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 14325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3962:18:102",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14326,
                        "nodeType": "ExpressionStatement",
                        "src": "3962:18:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "4048:24:102",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14327,
                                "name": "map",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14263,
                                "src": "4055:3:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                  "typeString": "struct EnumerableMap.Map storage pointer"
                                }
                              },
                              "id": 14328,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 14197,
                              "src": "4055:12:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 14330,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14329,
                              "name": "key",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14265,
                              "src": "4068:3:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4055:17:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14332,
                        "nodeType": "ExpressionStatement",
                        "src": "4048:24:102"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4094:4:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14269,
                        "id": 14334,
                        "nodeType": "Return",
                        "src": "4087:11:102"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 14261,
              "nodeType": "StructuredDocumentation",
              "src": "2479:157:102",
              "text": "@dev Removes a key-value pair from a map. O(1).\n     * Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 14341,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14263,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14341,
                  "src": "2658:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14262,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "2658:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14265,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14341,
                  "src": "2675:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14264,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2675:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2657:30:102"
            },
            "returnParameters": {
              "id": 14269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14268,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14341,
                  "src": "2705:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14267,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2704:6:102"
            },
            "scope": 14637,
            "src": "2641:1517:102",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14358,
              "nodeType": "Block",
              "src": "4314:46:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14351,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14344,
                          "src": "4331:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 14352,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14197,
                        "src": "4331:12:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 14354,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14353,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14346,
                        "src": "4344:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4331:17:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4352:1:102",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4331:22:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14350,
                  "id": 14357,
                  "nodeType": "Return",
                  "src": "4324:29:102"
                }
              ]
            },
            "documentation": {
              "id": 14342,
              "nodeType": "StructuredDocumentation",
              "src": "4164:68:102",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 14359,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14344,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14359,
                  "src": "4256:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14343,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "4256:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14346,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14359,
                  "src": "4273:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14345,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4273:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4255:30:102"
            },
            "returnParameters": {
              "id": 14350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14349,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14359,
                  "src": "4308:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14348,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4308:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4307:6:102"
            },
            "scope": 14637,
            "src": "4237:123:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14371,
              "nodeType": "Block",
              "src": "4515:43:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14367,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14362,
                        "src": "4532:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 14368,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14193,
                      "src": "4532:12:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 14369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4532:19:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14366,
                  "id": 14370,
                  "nodeType": "Return",
                  "src": "4525:26:102"
                }
              ]
            },
            "documentation": {
              "id": 14360,
              "nodeType": "StructuredDocumentation",
              "src": "4366:79:102",
              "text": "@dev Returns the number of key-value pairs in the map. O(1)."
            },
            "id": 14372,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14362,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14372,
                  "src": "4467:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14361,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "4467:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4466:17:102"
            },
            "returnParameters": {
              "id": 14366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14365,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14372,
                  "src": "4506:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14364,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4506:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4505:9:102"
            },
            "scope": 14637,
            "src": "4450:108:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14406,
              "nodeType": "Block",
              "src": "4986:189:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14385,
                              "name": "map",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14375,
                              "src": "5004:3:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                                "typeString": "struct EnumerableMap.Map storage pointer"
                              }
                            },
                            "id": 14386,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_entries",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14193,
                            "src": "5004:12:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                              "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                            }
                          },
                          "id": 14387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5004:19:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 14388,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14377,
                          "src": "5026:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5004:27:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473",
                        "id": 14390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5033:36:102",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        },
                        "value": "EnumerableMap: index out of bounds"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155",
                          "typeString": "literal_string \"EnumerableMap: index out of bounds\""
                        }
                      ],
                      "id": 14384,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4996:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4996:74:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14392,
                  "nodeType": "ExpressionStatement",
                  "src": "4996:74:102"
                },
                {
                  "assignments": [
                    14394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14394,
                      "mutability": "mutable",
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14406,
                      "src": "5081:22:102",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                        "typeString": "struct EnumerableMap.MapEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14393,
                        "name": "MapEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 14190,
                        "src": "5081:8:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                          "typeString": "struct EnumerableMap.MapEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14399,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14395,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14375,
                        "src": "5106:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 14396,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14193,
                      "src": "5106:12:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                      }
                    },
                    "id": 14398,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14397,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14377,
                      "src": "5119:5:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5106:19:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                      "typeString": "struct EnumerableMap.MapEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5081:44:102"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14400,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14394,
                          "src": "5143:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 14401,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_key",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14187,
                        "src": "5143:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14402,
                          "name": "entry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14394,
                          "src": "5155:5:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MapEntry_$14190_storage_ptr",
                            "typeString": "struct EnumerableMap.MapEntry storage pointer"
                          }
                        },
                        "id": 14403,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14189,
                        "src": "5155:12:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 14404,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "5142:26:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 14383,
                  "id": 14405,
                  "nodeType": "Return",
                  "src": "5135:33:102"
                }
              ]
            },
            "documentation": {
              "id": 14373,
              "nodeType": "StructuredDocumentation",
              "src": "4563:333:102",
              "text": "@dev Returns the key-value pair stored at position `index` in the map. O(1).\n    * Note that there are no guarantees on the ordering of entries inside the\narray, and it may change when more entries are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 14407,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14375,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14407,
                  "src": "4914:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14374,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "4914:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14377,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14407,
                  "src": "4931:13:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14376,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4931:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4913:32:102"
            },
            "returnParameters": {
              "id": 14383,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14380,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14407,
                  "src": "4968:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14379,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4968:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14382,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14407,
                  "src": "4977:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14381,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4977:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4967:18:102"
            },
            "scope": 14637,
            "src": "4901:274:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14423,
              "nodeType": "Block",
              "src": "5402:72:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14418,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14410,
                        "src": "5424:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14419,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14412,
                        "src": "5429:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579",
                        "id": 14420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5434:32:102",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        },
                        "value": "EnumerableMap: nonexistent key"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072",
                          "typeString": "literal_string \"EnumerableMap: nonexistent key\""
                        }
                      ],
                      "id": 14417,
                      "name": "_get",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        14424,
                        14459
                      ],
                      "referencedDeclaration": 14459,
                      "src": "5419:4:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"
                      }
                    },
                    "id": 14421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5419:48:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14416,
                  "id": 14422,
                  "nodeType": "Return",
                  "src": "5412:55:102"
                }
              ]
            },
            "documentation": {
              "id": 14408,
              "nodeType": "StructuredDocumentation",
              "src": "5181:141:102",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 14424,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14413,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14410,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14424,
                  "src": "5341:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14409,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "5341:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14412,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14424,
                  "src": "5358:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5358:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5340:30:102"
            },
            "returnParameters": {
              "id": 14416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14415,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14424,
                  "src": "5393:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14414,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5392:9:102"
            },
            "scope": 14637,
            "src": "5327:147:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 14458,
              "nodeType": "Block",
              "src": "5685:212:102",
              "statements": [
                {
                  "assignments": [
                    14437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14437,
                      "mutability": "mutable",
                      "name": "keyIndex",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14458,
                      "src": "5695:16:102",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14436,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5695:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14442,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14438,
                        "name": "map",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14427,
                        "src": "5714:3:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                          "typeString": "struct EnumerableMap.Map storage pointer"
                        }
                      },
                      "id": 14439,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14197,
                      "src": "5714:12:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 14441,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14440,
                      "name": "key",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14429,
                      "src": "5727:3:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5714:17:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5695:36:102"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14444,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14437,
                          "src": "5749:8:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5761:1:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5749:13:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14447,
                        "name": "errorMessage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14431,
                        "src": "5764:12:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 14443,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5741:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5741:36:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14449,
                  "nodeType": "ExpressionStatement",
                  "src": "5741:36:102"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14450,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14427,
                          "src": "5830:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                            "typeString": "struct EnumerableMap.Map storage pointer"
                          }
                        },
                        "id": 14451,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_entries",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14193,
                        "src": "5830:12:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MapEntry_$14190_storage_$dyn_storage",
                          "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref"
                        }
                      },
                      "id": 14455,
                      "indexExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14452,
                          "name": "keyIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14437,
                          "src": "5843:8:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 14453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5854:1:102",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "5843:12:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5830:26:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MapEntry_$14190_storage",
                        "typeString": "struct EnumerableMap.MapEntry storage ref"
                      }
                    },
                    "id": 14456,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 14189,
                    "src": "5830:33:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14435,
                  "id": 14457,
                  "nodeType": "Return",
                  "src": "5823:40:102"
                }
              ]
            },
            "documentation": {
              "id": 14425,
              "nodeType": "StructuredDocumentation",
              "src": "5480:97:102",
              "text": "@dev Same as {_get}, with a custom error message when `key` is not in the map."
            },
            "id": 14459,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14427,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14459,
                  "src": "5596:15:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14426,
                    "name": "Map",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14198,
                    "src": "5596:3:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                      "typeString": "struct EnumerableMap.Map"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14429,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14459,
                  "src": "5613:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14428,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5613:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14431,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14459,
                  "src": "5626:26:102",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14430,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5626:6:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5595:58:102"
            },
            "returnParameters": {
              "id": 14435,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14434,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14459,
                  "src": "5676:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14433,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5676:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5675:9:102"
            },
            "scope": 14637,
            "src": "5582:315:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableMap.UintToAddressMap",
            "id": 14462,
            "members": [
              {
                "constant": false,
                "id": 14461,
                "mutability": "mutable",
                "name": "_inner",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 14462,
                "src": "5962:10:102",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                  "typeString": "struct EnumerableMap.Map"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 14460,
                  "name": "Map",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 14198,
                  "src": "5962:3:102",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Map_$14198_storage_ptr",
                    "typeString": "struct EnumerableMap.Map"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "UintToAddressMap",
            "nodeType": "StructDefinition",
            "scope": 14637,
            "src": "5928:51:102",
            "visibility": "public"
          },
          {
            "body": {
              "id": 14490,
              "nodeType": "Block",
              "src": "6301:79:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14475,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14465,
                          "src": "6323:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 14476,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14461,
                        "src": "6323:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14479,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14467,
                            "src": "6343:3:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6335:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 14477,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6335:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6335:12:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14485,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14469,
                                "src": "6365:5:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 14484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6357:7:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 14483,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6357:7:102",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6357:14:102",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6349:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 14481,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6349:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6349:23:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14474,
                      "name": "_set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14260,
                      "src": "6318:4:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)"
                      }
                    },
                    "id": 14488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6318:55:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14473,
                  "id": 14489,
                  "nodeType": "Return",
                  "src": "6311:62:102"
                }
              ]
            },
            "documentation": {
              "id": 14463,
              "nodeType": "StructuredDocumentation",
              "src": "5985:216:102",
              "text": "@dev Adds a key-value pair to a map, or updates the value for an existing\nkey. O(1).\n     * Returns true if the key was added to the map, that is if it was not\nalready present."
            },
            "id": 14491,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "set",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14465,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14491,
                  "src": "6219:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14464,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "6219:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14467,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14491,
                  "src": "6249:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6249:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14469,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14491,
                  "src": "6262:13:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14468,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6262:7:102",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6218:58:102"
            },
            "returnParameters": {
              "id": 14473,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14472,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14491,
                  "src": "6295:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14471,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6295:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6294:6:102"
            },
            "scope": 14637,
            "src": "6206:174:102",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14510,
              "nodeType": "Block",
              "src": "6622:57:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14502,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14494,
                          "src": "6647:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 14503,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14461,
                        "src": "6647:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14506,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14496,
                            "src": "6667:3:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6659:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 14504,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6659:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6659:12:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14501,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14341,
                      "src": "6639:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 14508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6639:33:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14500,
                  "id": 14509,
                  "nodeType": "Return",
                  "src": "6632:40:102"
                }
              ]
            },
            "documentation": {
              "id": 14492,
              "nodeType": "StructuredDocumentation",
              "src": "6386:148:102",
              "text": "@dev Removes a value from a set. O(1).\n     * Returns true if the key was removed from the map, that is if it was present."
            },
            "id": 14511,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14497,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14494,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14511,
                  "src": "6555:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14493,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "6555:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14496,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14511,
                  "src": "6585:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14495,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6585:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6554:43:102"
            },
            "returnParameters": {
              "id": 14500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14499,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14511,
                  "src": "6616:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14498,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6616:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6615:6:102"
            },
            "scope": 14637,
            "src": "6539:140:102",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14530,
              "nodeType": "Block",
              "src": "6848:59:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14522,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14514,
                          "src": "6875:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 14523,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14461,
                        "src": "6875:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14526,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14516,
                            "src": "6895:3:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6887:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 14524,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6887:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14527,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6887:12:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14521,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14359,
                      "src": "6865:9:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 14528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6865:35:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14520,
                  "id": 14529,
                  "nodeType": "Return",
                  "src": "6858:42:102"
                }
              ]
            },
            "documentation": {
              "id": 14512,
              "nodeType": "StructuredDocumentation",
              "src": "6685:68:102",
              "text": "@dev Returns true if the key is in the map. O(1)."
            },
            "id": 14531,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14514,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14531,
                  "src": "6776:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14513,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "6776:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14516,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14531,
                  "src": "6806:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6806:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6775:43:102"
            },
            "returnParameters": {
              "id": 14520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14519,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14531,
                  "src": "6842:4:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14518,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6842:4:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6841:6:102"
            },
            "scope": 14637,
            "src": "6758:149:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14544,
              "nodeType": "Block",
              "src": "7068:43:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14540,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14534,
                          "src": "7093:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 14541,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14461,
                        "src": "7093:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      ],
                      "id": 14539,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14372,
                      "src": "7085:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 14542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7085:19:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14538,
                  "id": 14543,
                  "nodeType": "Return",
                  "src": "7078:26:102"
                }
              ]
            },
            "documentation": {
              "id": 14532,
              "nodeType": "StructuredDocumentation",
              "src": "6913:72:102",
              "text": "@dev Returns the number of elements in the map. O(1)."
            },
            "id": 14545,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14534,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14545,
                  "src": "7006:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14533,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "7006:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7005:30:102"
            },
            "returnParameters": {
              "id": 14538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14537,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14545,
                  "src": "7059:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14536,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7059:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7058:9:102"
            },
            "scope": 14637,
            "src": "6990:121:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14580,
              "nodeType": "Block",
              "src": "7537:126:102",
              "statements": [
                {
                  "assignments": [
                    14558,
                    14560
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14558,
                      "mutability": "mutable",
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14580,
                      "src": "7548:11:102",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 14557,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7548:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14560,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14580,
                      "src": "7561:13:102",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 14559,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7561:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14566,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14562,
                          "name": "map",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14548,
                          "src": "7582:3:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                            "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                          }
                        },
                        "id": 14563,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 14461,
                        "src": "7582:10:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14564,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14550,
                        "src": "7594:5:102",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Map_$14198_storage",
                          "typeString": "struct EnumerableMap.Map storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14561,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14407,
                      "src": "7578:3:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$",
                        "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)"
                      }
                    },
                    "id": 14565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7578:22:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7547:53:102"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14569,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14558,
                            "src": "7626:3:102",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7618:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 14567,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7618:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7618:12:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14575,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14560,
                                "src": "7648:5:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 14574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7640:7:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 14573,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7640:7:102",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7640:14:102",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7632:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 14571,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7632:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14577,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7632:23:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 14578,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7617:39:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                      "typeString": "tuple(uint256,address payable)"
                    }
                  },
                  "functionReturnParameters": 14556,
                  "id": 14579,
                  "nodeType": "Return",
                  "src": "7610:46:102"
                }
              ]
            },
            "documentation": {
              "id": 14546,
              "nodeType": "StructuredDocumentation",
              "src": "7116:318:102",
              "text": "@dev Returns the element stored at position `index` in the set. O(1).\nNote that there are no guarantees on the ordering of values inside the\narray, and it may change when more values are added or removed.\n    * Requirements:\n    * - `index` must be strictly less than {length}."
            },
            "id": 14581,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14548,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14581,
                  "src": "7451:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14547,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "7451:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14550,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14581,
                  "src": "7481:13:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14549,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7481:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7450:45:102"
            },
            "returnParameters": {
              "id": 14556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14553,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14581,
                  "src": "7519:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14552,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7519:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14555,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14581,
                  "src": "7528:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14554,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7528:7:102",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7518:18:102"
            },
            "scope": 14637,
            "src": "7439:224:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14606,
              "nodeType": "Block",
              "src": "7903:72:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14596,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14584,
                                  "src": "7941:3:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 14597,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14461,
                                "src": "7941:10:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14600,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14586,
                                    "src": "7961:3:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7953:7:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 14598,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7953:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 14601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7953:12:102",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 14595,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                14424,
                                14459
                              ],
                              "referencedDeclaration": 14424,
                              "src": "7936:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)"
                              }
                            },
                            "id": 14602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7936:30:102",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7928:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 14593,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7928:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7928:39:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7920:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 14591,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7920:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 14604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7920:48:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 14590,
                  "id": 14605,
                  "nodeType": "Return",
                  "src": "7913:55:102"
                }
              ]
            },
            "documentation": {
              "id": 14582,
              "nodeType": "StructuredDocumentation",
              "src": "7669:141:102",
              "text": "@dev Returns the value associated with `key`.  O(1).\n     * Requirements:\n     * - `key` must be in the map."
            },
            "id": 14607,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14584,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14607,
                  "src": "7828:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14583,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "7828:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14586,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14607,
                  "src": "7858:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14585,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7858:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7827:43:102"
            },
            "returnParameters": {
              "id": 14590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14589,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14607,
                  "src": "7894:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14588,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7894:7:102",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7893:9:102"
            },
            "scope": 14637,
            "src": "7815:160:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14635,
              "nodeType": "Block",
              "src": "8198:86:102",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14624,
                                  "name": "map",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14610,
                                  "src": "8236:3:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                                    "typeString": "struct EnumerableMap.UintToAddressMap storage pointer"
                                  }
                                },
                                "id": 14625,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_inner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14461,
                                "src": "8236:10:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14628,
                                    "name": "key",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14612,
                                    "src": "8256:3:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 14627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8248:7:102",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 14626,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8248:7:102",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 14629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8248:12:102",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 14630,
                                "name": "errorMessage",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14614,
                                "src": "8262:12:102",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Map_$14198_storage",
                                  "typeString": "struct EnumerableMap.Map storage ref"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 14623,
                              "name": "_get",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                14424,
                                14459
                              ],
                              "referencedDeclaration": 14459,
                              "src": "8231:4:102",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$14198_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)"
                              }
                            },
                            "id": 14631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8231:44:102",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8223:7:102",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 14621,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8223:7:102",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8223:53:102",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8215:7:102",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 14619,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8215:7:102",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 14633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8215:62:102",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 14618,
                  "id": 14634,
                  "nodeType": "Return",
                  "src": "8208:69:102"
                }
              ]
            },
            "documentation": {
              "id": 14608,
              "nodeType": "StructuredDocumentation",
              "src": "7981:96:102",
              "text": "@dev Same as {get}, with a custom error message when `key` is not in the map."
            },
            "id": 14636,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14610,
                  "mutability": "mutable",
                  "name": "map",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14636,
                  "src": "8095:28:102",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                    "typeString": "struct EnumerableMap.UintToAddressMap"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14609,
                    "name": "UintToAddressMap",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 14462,
                    "src": "8095:16:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintToAddressMap_$14462_storage_ptr",
                      "typeString": "struct EnumerableMap.UintToAddressMap"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14612,
                  "mutability": "mutable",
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14636,
                  "src": "8125:11:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14611,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8125:7:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14614,
                  "mutability": "mutable",
                  "name": "errorMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14636,
                  "src": "8138:26:102",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14613,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8138:6:102",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8094:71:102"
            },
            "returnParameters": {
              "id": 14618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14617,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14636,
                  "src": "8189:7:102",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:7:102",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8188:9:102"
            },
            "scope": 14637,
            "src": "8082:202:102",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 14638,
        "src": "731:7555:102"
      }
    ],
    "src": "0:8287:102"
  },
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c767bbba08fe928e9fba017a64f84d0d0bb4229fd942b6eccecbcfc88d45e9b764736f6c63430006070033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c767bbba08fe928e9fba017a64f84d0d0bb4229fd942b6eccecbcfc88d45e9b764736f6c63430006070033",
  "compiler": {
    "name": "solc",
    "version": "0.6.7+commit.b8d736ae.Emscripten.clang",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "evmVersion": "petersburg"
  }
}
