local l_Parent_0 = script.Parent.Parent;
local l_jsutils_0 = l_Parent_0.jsutils;
local l_error_0 = l_Parent_0.error;
local l_language_0 = l_Parent_0.language;
local l_type_0 = l_Parent_0.type;
local l_utilities_0 = l_Parent_0.utilities;
local l_luaUtils_0 = l_Parent_0.luaUtils;
local v7 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Array_0 = v7.Array;
local l_Error_0 = v7.Error;
local l_Map_0 = v7.Map;
local l_Set_0 = v7.Set;
local l_instanceof_0 = v7.instanceof;
local _ = require(l_jsutils_0.ObjMap);
local _ = require(l_jsutils_0.PromiseOrValue);
local v15 = require(l_Parent_0.Parent.Promise);
local v16 = require(l_luaUtils_0.null);
local l_isNillish_0 = require(l_luaUtils_0.isNillish).isNillish;
local l_inspect_0 = require(l_jsutils_0.inspect).inspect;
local l_memoize3_0 = require(l_jsutils_0.memoize3).memoize3;
local l_invariant_0 = require(l_jsutils_0.invariant).invariant;
local l_devAssert_0 = require(l_jsutils_0.devAssert).devAssert;
local l_isPromise_0 = require(l_jsutils_0.isPromise).isPromise;
local l_isObjectLike_0 = require(l_jsutils_0.isObjectLike).isObjectLike;
local l_promiseReduce_0 = require(l_jsutils_0.promiseReduce).promiseReduce;
local l_promiseForObject_0 = require(l_jsutils_0.promiseForObject).promiseForObject;
local v26 = require(l_jsutils_0.Path);
local l_addPath_0 = v26.addPath;
local l_pathToArray_0 = v26.pathToArray;
local l_isIteratableObject_0 = require(l_jsutils_0.isIteratableObject).isIteratableObject;
local _ = require(l_error_0.formatError);
local l_GraphQLError_0 = require(l_error_0.GraphQLError).GraphQLError;
local l_locatedError_0 = require(l_error_0.locatedError).locatedError;
local _ = require(l_language_0.ast);
local l_Kind_0 = require(l_Parent_0.language.kinds).Kind;
local _ = require(l_type_0.schema);
local v36 = require(l_type_0.definition);
local l_assertValidSchema_0 = require(l_type_0.validate).assertValidSchema;
local v38 = require(l_type_0.introspection);
local l_SchemaMetaFieldDef_0 = v38.SchemaMetaFieldDef;
local l_TypeMetaFieldDef_0 = v38.TypeMetaFieldDef;
local l_TypeNameMetaFieldDef_0 = v38.TypeNameMetaFieldDef;
local v42 = require(l_type_0.directives);
local l_GraphQLIncludeDirective_0 = v42.GraphQLIncludeDirective;
local l_GraphQLSkipDirective_0 = v42.GraphQLSkipDirective;
local l_isObjectType_0 = v36.isObjectType;
local l_isAbstractType_0 = v36.isAbstractType;
local l_isLeafType_0 = v36.isLeafType;
local l_isListType_0 = v36.isListType;
local l_isNonNullType_0 = v36.isNonNullType;
local l_typeFromAST_0 = require(l_utilities_0.typeFromAST).typeFromAST;
local l_getOperationRootType_0 = require(l_utilities_0.getOperationRootType).getOperationRootType;
local v52 = require(script.Parent.values);
local l_getVariableValues_0 = v52.getVariableValues;
local l_getArgumentValues_0 = v52.getArgumentValues;
local l_getDirectiveValues_0 = v52.getDirectiveValues;
local v56 = nil;
local v57 = nil;
local v58 = nil;
local v59 = nil;
local v60 = nil;
local v61 = nil;
local v62 = nil;
local v63 = nil;
local v64 = nil;
local v65 = nil;
local v66 = nil;
local v67 = nil;
local v68 = nil;
local v69 = nil;
local v70 = nil;
local v71 = nil;
local v72 = nil;
local v73 = nil;
local v74 = nil;
local v75 = nil;
local v76 = nil;
local v77 = nil;
local v78 = nil;
local v79 = nil;
local v80 = nil;
local v81 = nil;
local _ = nil;
local v83 = nil;
v56 = function(v84)
    local l_schema_0 = v84.schema;
    local l_document_0 = v84.document;
    local l_rootValue_0 = v84.rootValue;
    local l_contextValue_0 = v84.contextValue;
    local l_variableValues_0 = v84.variableValues;
    local l_operationName_0 = v84.operationName;
    local l_fieldResolver_0 = v84.fieldResolver;
    local l_typeResolver_0 = v84.typeResolver;
    v58(l_schema_0, l_document_0, l_variableValues_0);
    local v93 = v59(l_schema_0, l_document_0, l_rootValue_0, l_contextValue_0, l_variableValues_0, l_operationName_0, l_fieldResolver_0, l_typeResolver_0);
    if not l_Array_0.isArray(v93) and v93.schema then
        return v65(v93, (v66(v93, v93.operation, l_rootValue_0)));
    else
        return {
            errors = v93
        };
    end;
end;
v57 = function(v94)
    local v95 = v56(v94);
    if l_isPromise_0(v95) then
        error(l_Error_0.new("GraphQL execution failed to complete synchronously."));
    end;
    return v95;
end;
v65 = function(v96, v97)
    if not l_isPromise_0(v97) then
        if #v96.errors == 0 then
            return {
                data = v97
            };
        else
            return {
                errors = v96.errors,
                data = v97
            };
        end;
    else
        return v97:andThen(function(v98)
            return v65(v96, v98);
        end);
    end;
end;
v58 = function(v99, v100, v101)
    l_devAssert_0(v100, "Must provide document.");
    l_assertValidSchema_0(v99);
    local l_l_devAssert_0_0 = l_devAssert_0;
    local v103 = true;
    if v101 ~= nil then
        v103 = l_isObjectLike_0(v101);
    end;
    l_l_devAssert_0_0(v103, "Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.");
end;
v59 = function(v104, v105, v106, v107, v108, v109, v110, v111)
    local v112 = nil;
    local v113 = {};
    for _, v115 in ipairs(v105.definitions) do
        if v115.kind == l_Kind_0.OPERATION_DEFINITION then
            if v109 == nil then
                if v112 ~= nil then
                    return {
                        l_GraphQLError_0.new("Must provide operation name if query contains multiple operations.")
                    };
                else
                    v112 = v115;
                end;
            elseif (v115.name and v115.name.value) == v109 then
                v112 = v115;
            end;
        elseif v115.kind == l_Kind_0.FRAGMENT_DEFINITION then
            v113[v115.name.value] = v115;
        end;
    end;
    if v112 then
        local v116 = l_getVariableValues_0(v104, v112.variableDefinitions or {}, v108 or {}, {
            maxErrors = 50
        });
        if not v116.errors then
            return {
                schema = v104,
                fragments = v113,
                rootValue = v106,
                contextValue = v107,
                operation = v112,
                variableValues = v116.coerced,
                fieldResolver = v110 or v63,
                typeResolver = v111 or v62,
                errors = {}
            };
        else
            return v116.errors;
        end;
    elseif v109 ~= nil then
        return {
            l_GraphQLError_0.new(("Unknown operation named \"%s\"."):format(v109))
        };
    else
        return {
            l_GraphQLError_0.new("Must provide an operation.")
        };
    end;
end;
v66 = function(v117, v118, v119)
    local v120 = l_getOperationRootType_0(v117.schema, v118);
    local v121 = v60(v117, v120, v118.selectionSet, l_Map_0.new(), {});
    local v122 = nil;
    local v123 = nil;
    if v118.operation == "mutation" then
        local l_status_0, l_result_0 = pcall(v67, v117, v120, v119, nil, v121);
        v122 = l_status_0;
        v123 = l_result_0;
    else
        local l_status_1, l_result_1 = pcall(v68, v117, v120, v119, nil, v121);
        v122 = l_status_1;
        v123 = l_result_1;
    end;
    if not l_isPromise_0(v123) then
        if v122 then
            return v123;
        else
            table.insert(v117.errors, v123);
            return v16;
        end;
    else
        return v123:andThen(nil, function(v128)
            table.insert(v117.errors, v128);
            return v15.resolve(v16);
        end);
    end;
end;
v67 = function(v129, v130, v131, v132, v133)
    return l_promiseReduce_0(v133:keys(), function(v134, v135)
        local v136 = v72(v129, v130, v131, v133[v135], (l_addPath_0(v132, v135, v130.name)));
        if v136 == nil then
            return v134;
        elseif not l_isPromise_0(v136) then
            v134[v135] = v136;
            return v134;
        else
            return v136:andThen(function(v137)
                v134[v135] = v137;
                return v134;
            end);
        end;
    end, {});
end;
v68 = function(v138, v139, v140, v141, v142)
    local v143 = {};
    local v144 = false;
    for _, v146 in ipairs(v142:keys()) do
        local v147 = v72(v138, v139, v140, v142[v146], (l_addPath_0(v141, v146, v139.name)));
        if v147 ~= nil then
            v143[v146] = v147;
            if l_isPromise_0(v147) then
                v144 = true;
            end;
        end;
    end;
    if v144 then
        return l_promiseForObject_0(v143);
    else
        return v143;
    end;
end;
v60 = function(v148, v149, v150, v151, v152)
    for _, v154 in ipairs(v150.selections) do
        if v154.kind == l_Kind_0.FIELD then
            if v69(v148, v154) then
                local v155 = v71(v154);
                if not v151[v155] then
                    v151[v155] = {};
                end;
                table.insert(v151[v155], v154);
            end;
        elseif v154.kind == l_Kind_0.INLINE_FRAGMENT then
            if not (not v69(v148, v154) or not v70(v148, v154, v149)) then
                v60(v148, v149, v154.selectionSet, v151, v152);
            end;
        elseif v154.kind == l_Kind_0.FRAGMENT_SPREAD then
            local l_value_0 = v154.name.value;
            if not (v152[l_value_0] or not v69(v148, v154)) then
                v152[l_value_0] = true;
                local v157 = v148.fragments[l_value_0];
                if not (not v157 or not v70(v148, v157, v149)) then
                    v60(v148, v149, v157.selectionSet, v151, v152);
                end;
            end;
        end;
    end;
    return v151;
end;
v69 = function(v158, v159)
    local v160 = l_getDirectiveValues_0(l_GraphQLSkipDirective_0, v159, v158.variableValues);
    if (v160 and v160["if"]) == true then
        return false;
    else
        local v161 = l_getDirectiveValues_0(l_GraphQLIncludeDirective_0, v159, v158.variableValues);
        if (v161 and v161["if"]) == false then
            return false;
        else
            return true;
        end;
    end;
end;
v70 = function(v162, v163, v164)
    local l_typeCondition_0 = v163.typeCondition;
    if l_typeCondition_0 then
        local v166 = l_typeFromAST_0(v162.schema, l_typeCondition_0);
        if v166 == v164 then
            return true;
        elseif not l_isAbstractType_0(v166) then
            return false;
        else
            return v162.schema:isSubType(v166, v164);
        end;
    else
        return true;
    end;
end;
v71 = function(v167)
    if not v167.alias then
        return v167.name.value;
    else
        return v167.alias.value;
    end;
end;
v72 = function(v168, v169, v170, v171, v172)
    local v173 = v64(v168.schema, v169, v171[1].name.value);
    if v173 then
        local l_type_1 = v173.type;
        local v175 = if not v173.resolve then v168.fieldResolver else v173.resolve;
        local v176 = v61(v168, v173, v171, v169, v172);
        local l_status_2, l_result_2 = pcall(function()
            local v177 = v175(v170, l_getArgumentValues_0(v173, v171[1], v168.variableValues), v168.contextValue, v176);
            local v178 = nil;
            v178 = if not l_isPromise_0(v177) then v74(v168, l_type_1, v171, v176, v172, v177) else v177:andThen(function(v179)
                return v74(v168, l_type_1, v171, v176, v172, v179);
            end);
            if not l_isPromise_0(v178) then
                return v178;
            else
                return v178:andThen(nil, function(v180)
                    return v73(l_locatedError_0(v180, v171, l_pathToArray_0(v172)), l_type_1, v168);
                end);
            end;
        end);
        if l_status_2 then
            return l_result_2;
        else
            return v73(l_locatedError_0(l_result_2, v171, l_pathToArray_0(v172)), l_type_1, v168);
        end;
    else
        return ;
    end;
end;
v61 = function(v183, v184, v185, v186, v187)
    return {
        fieldName = v184.name,
        fieldNodes = v185,
        returnType = v184.type,
        parentType = v186,
        path = v187,
        schema = v183.schema,
        fragments = v183.fragments,
        rootValue = v183.rootValue,
        operation = v183.operation,
        variableValues = v183.variableValues
    };
end;
v73 = function(v188, v189, v190)
    if l_isNonNullType_0(v189) then
        error(v188);
    end;
    table.insert(v190.errors, v188);
    return v16;
end;
v74 = function(v191, v192, v193, v194, v195, v196)
    if l_instanceof_0(v196, l_Error_0) then
        error(v196);
    end;
    if not l_isNonNullType_0(v192) then
        if not l_isNillish_0(v196) then
            if not l_isListType_0(v192) then
                if not l_isLeafType_0(v192) then
                    if not l_isAbstractType_0(v192) then
                        if not l_isObjectType_0(v192) then
                            l_invariant_0(false, "Cannot complete value of unexpected output type: " .. l_inspect_0(v192));
                            assert(false, "Cannot complete value of unexpected output type: " .. l_inspect_0(v192));
                            return ;
                        else
                            return v79(v191, v192, v193, v194, v195, v196);
                        end;
                    else
                        return v77(v191, v192, v193, v194, v195, v196);
                    end;
                else
                    return v76(v192, v196);
                end;
            else
                return v75(v191, v192, v193, v194, v195, v196);
            end;
        else
            return v16;
        end;
    else
        local v197 = v74(v191, v192.ofType, v193, v194, v195, v196);
        if l_isNillish_0(v197) then
            error(l_Error_0.new(("Cannot return null for non-nullable field %s.%s."):format(v194.parentType.name, v194.fieldName)));
        end;
        return v197;
    end;
end;
v75 = function(v198, v199, v200, v201, v202, v203)
    if l_instanceof_0(v203, l_Set_0) then
        local v204 = {};
        for _, v206 in v203, nil, nil do
            table.insert(v204, v206);
        end;
        v203 = v204;
    end;
    if not l_isIteratableObject_0(v203) then
        error(l_GraphQLError_0.new(("Expected Iterable, but did not find one for field \"%s.%s\"."):format(v201.parentType.name, v201.fieldName)));
    end;
    local l_ofType_0 = v199.ofType;
    local v208 = false;
    local v209 = false;
    local v218 = l_Array_0.from(v203, function(v210, v211)
        local v212 = l_addPath_0(v202, v211, nil);
        local l_status_3, l_result_3 = pcall(function()
            local v213 = nil;
            v213 = if not l_isPromise_0(v210) then v74(v198, l_ofType_0, v200, v201, v212, v210) else v210:andThen(function(v214)
                return v74(v198, l_ofType_0, v200, v201, v212, v214);
            end);
            if not l_isPromise_0(v213) then
                v209 = true;
                return v213;
            else
                v208 = true;
                return v213:andThen(nil, function(v215)
                    return v73(l_locatedError_0(v215, v200, l_pathToArray_0(v212)), l_ofType_0, v198);
                end);
            end;
        end);
        if l_status_3 then
            return l_result_3;
        else
            return v73(l_locatedError_0(l_result_3, v200, l_pathToArray_0(v212)), l_ofType_0, v198);
        end;
    end);
    if not (not v209 or not v208) then
        v218 = l_Array_0.map(v218, function(v219)
            if not l_isPromise_0(v219) then
                return (v15.resolve(v219));
            else
                return v219;
            end;
        end);
    end;
    return if not v208 then v218 else v15.all(v218);
end;
v76 = function(v220, v221)
    local v222 = v220:serialize(v221);
    if v222 == nil then
        error(l_Error_0.new(("Expected a value of type \"%s\" but "):format(l_inspect_0(v220)) .. ("received: %s"):format(l_inspect_0(v221))));
    end;
    return v222;
end;
v77 = function(v223, v224, v225, v226, v227, v228)
    local v229 = (if not v224.resolveType then v223.typeResolver else v224.resolveType)(v228, v223.contextValue, v226, v224);
    if not l_isPromise_0(v229) then
        return v79(v223, v78(v229, v223, v224, v225, v226, v228), v225, v226, v227, v228);
    else
        return v229:andThen(function(v230)
            return v79(v223, v78(v230, v223, v224, v225, v226, v228), v225, v226, v227, v228);
        end);
    end;
end;
v78 = function(v231, v232, v233, v234, v235, v236)
    if v231 == nil then
        error(l_GraphQLError_0.new(("Abstract type \"%s\" must resolve to an Object type at runtime for field \"%s.%s\". Either the \"%s\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function."):format(v233.name, v235.parentType.name, v235.fieldName, v233.name), v234));
    end;
    if l_isObjectType_0(v231) then
        error(l_GraphQLError_0.new("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead."));
    end;
    if typeof(v231) ~= "string" then
        error(l_GraphQLError_0.new(("Abstract type \"%s\" must resolve to an Object type at runtime for field \"%s.%s\" with "):format(v233.name, v235.parentType.name, v235.fieldName) .. ("value %s, received \"%s\"."):format(l_inspect_0(v236), l_inspect_0(v231))));
    end;
    local v237 = v232.schema:getType(v231);
    if v237 == nil then
        error(l_GraphQLError_0.new(("Abstract type \"%s\" was resolve to a type \"%s\" that does not exist inside schema."):format(v233.name, v231), v234));
    end;
    if not l_isObjectType_0(v237) then
        error(l_GraphQLError_0.new(("Abstract type \"%s\" was resolve to a non-object type \"%s\"."):format(v233.name, v231), v234));
    end;
    if not v232.schema:isSubType(v233, v237) then
        error(l_GraphQLError_0.new(("Runtime Object type \"%s\" is not a possible type for \"%s\"."):format(v237.name, v233.name), v234));
    end;
    return v237;
end;
v79 = function(v238, v239, v240, v241, v242, v243)
    if v239.isTypeOf ~= nil then
        local v244 = v239:isTypeOf(v243, v238.contextValue, v241);
        if not l_isPromise_0(v244) then
            if not v244 then
                error(v80(v239, v243, v240));
            end;
        else
            return v244:andThen(function(v245)
                if not v245 then
                    error(v80(v239, v243, v240));
                end;
                return v81(v238, v239, v240, v242, v243);
            end);
        end;
    end;
    return v81(v238, v239, v240, v242, v243);
end;
v80 = function(v246, v247, v248)
    return l_GraphQLError_0.new(("Expected value of type \"%s\" but got: %s."):format(v246.name, l_inspect_0(v247)), v248);
end;
v81 = function(v249, v250, v251, v252, v253)
    return v68(v249, v250, v253, v252, (v83(v249, v250, v251)));
end;
v83 = l_memoize3_0(function(v254, v255, v256)
    local v257 = l_Map_0.new();
    local v258 = {};
    for _, v260 in ipairs(v256) do
        if v260.selectionSet then
            v257 = v60(v254, v255, v260.selectionSet, v257, v258);
        end;
    end;
    return v257;
end);
v62 = function(v261, v262, v263, v264)
    if l_isObjectLike_0(v261) and typeof(v261.__typename) == "string" then
        return v261.__typename;
    else
        local v265 = v263.schema:getPossibleTypes(v264);
        local v266 = {};
        for v267 = 1, #v265 do
            local v268 = v265[v267];
            if v268.isTypeOf then
                local v269 = v268:isTypeOf(v261, v262, v263);
                if not l_isPromise_0(v269) then
                    if v269 then
                        return v268.name;
                    end;
                else
                    v266[v267] = v269;
                end;
            end;
        end;
        if #v266 > 0 then
            return v15.all(v266):andThen(function(v270)
                for v271 = 1, #v270 do
                    if v270[v271] then
                        return v265[v271].name;
                    end;
                end;
                return nil;
            end);
        else
            return nil;
        end;
    end;
end;
v63 = function(v272, v273, v274, v275)
    if l_isObjectLike_0(v272) or typeof(v272) == "function" then
        local v276 = v272[v275.fieldName];
        if typeof(v276) == "function" then
            return v272[v275.fieldName](v272, v273, v274, v275);
        else
            return v276;
        end;
    else
        return nil;
    end;
end;
v64 = function(v277, v278, v279)
    if v279 == l_SchemaMetaFieldDef_0.name and v277:getQueryType() == v278 then
        return l_SchemaMetaFieldDef_0;
    elseif v279 == l_TypeMetaFieldDef_0.name and v277:getQueryType() == v278 then
        return l_TypeMetaFieldDef_0;
    elseif v279 == l_TypeNameMetaFieldDef_0.name then
        return l_TypeNameMetaFieldDef_0;
    else
        return v278:getFields():get(v279);
    end;
end;
return {
    execute = v56,
    executeSync = v57,
    assertValidExecutionArguments = v58,
    buildExecutionContext = v59,
    collectFields = v60,
    buildResolveInfo = v61,
    getFieldDef = v64,
    defaultFieldResolver = v63,
    defaultTypeResolver = v62
};


local l_Parent_0 = script.Parent.Parent;
local l_Array_0 = require(l_Parent_0.Parent.LuauPolyfill).Array;
local v2 = require(l_Parent_0.luaUtils.null);
local l_isNillish_0 = require(l_Parent_0.luaUtils.isNillish).isNillish;
local _ = require(l_Parent_0.jsutils.ObjMap);
local l_keyMap_0 = require(l_Parent_0.jsutils.keyMap).keyMap;
local l_inspect_0 = require(l_Parent_0.jsutils.inspect).inspect;
local l_printPathArray_0 = require(l_Parent_0.jsutils.printPathArray).printPathArray;
local l_GraphQLError_0 = require(l_Parent_0.error.GraphQLError).GraphQLError;
local l_language_0 = l_Parent_0.language;
local _ = require(l_language_0.ast);
local l_Kind_0 = require(l_language_0.kinds).Kind;
local l_print_0 = require(l_language_0.printer).print;
local l_type_0 = l_Parent_0.type;
local _ = require(l_type_0.schema);
local _ = require(l_type_0.definition);
local _ = require(l_type_0.directives);
local v17 = require(l_Parent_0.type.definition);
local l_isInputType_0 = v17.isInputType;
local l_isNonNullType_0 = v17.isNonNullType;
local l_typeFromAST_0 = require(l_Parent_0.utilities.typeFromAST).typeFromAST;
local l_valueFromAST_0 = require(l_Parent_0.utilities.valueFromAST).valueFromAST;
local l_coerceInputValue_0 = require(l_Parent_0.utilities.coerceInputValue).coerceInputValue;
local v23 = nil;
local v24 = nil;
local v25 = nil;
local v26 = nil;
local v27 = nil;
v23 = function(v28, v29, v30, v31)
    local v32 = {};
    local v33 = nil;
    if v31 ~= nil then
        v33 = v31.maxErrors;
    end;
    local l_status_0, l_result_0 = pcall(v24, v28, v29, v30, function(v34)
        if v33 ~= nil and v33 <= #v32 then
            error(l_GraphQLError_0.new("Too many errors processing variables, error limit reached. Execution aborted."));
        end;
        table.insert(v32, v34);
    end);
    if not l_status_0 then
        table.insert(v32, l_result_0);
    end;
    if #v32 == 0 then
        return {
            coerced = l_result_0
        };
    else
        return {
            errors = v32
        };
    end;
end;
v24 = function(v37, v38, v39, v40)
    local v41 = {};
    for _, v43 in ipairs(v38) do
        local l_value_0 = v43.variable.name.value;
        local v45 = l_typeFromAST_0(v37, v43.type);
        if l_isInputType_0(v45) then
            if v27(v39, l_value_0) then
                local v46 = v39[l_value_0];
                if not (v46 == v2) or not l_isNonNullType_0(v45) then
                    v41[l_value_0] = l_coerceInputValue_0(v46, v45, function(v47, v48, v49)
                        local v50 = ("Variable \"$%s\" got invalid value "):format(l_value_0) .. l_inspect_0(v48);
                        if #v47 > 0 then
                            v50 = v50 .. (" at \"%s%s\""):format(l_value_0, l_printPathArray_0(v47));
                        end;
                        v40(l_GraphQLError_0.new(v50 .. "; " .. v49.message, v43, nil, nil, nil, v49.originalError));
                    end);
                else
                    v40(l_GraphQLError_0.new(("Variable \"$%s\" of non-null type \"%s\" must not be null."):format(l_value_0, (l_inspect_0(v45))), v43));
                end;
            elseif not v43.defaultValue then
                if l_isNonNullType_0(v45) then
                    v40(l_GraphQLError_0.new(("Variable \"$%s\" of required type \"%s\" was not provided."):format(l_value_0, (l_inspect_0(v45))), v43));
                end;
            else
                v41[l_value_0] = l_valueFromAST_0(v43.defaultValue, v45);
            end;
        else
            v40(l_GraphQLError_0.new(("Variable \"$%s\" expected value of type \"%s\" which cannot be used as an input type."):format(l_value_0, (l_print_0(v43.type))), v43.type));
        end;
    end;
    return v41;
end;
v25 = function(v51, v52, v53)
    local v54 = {};
    local v56 = l_keyMap_0(if not v52.arguments then {} else v52.arguments, function(v55)
        return v55.name.value;
    end);
    for _, v58 in ipairs(v51.args) do
        local l_name_0 = v58.name;
        local l_type_1 = v58.type;
        local v61 = v56[l_name_0];
        if v61 then
            local l_value_1 = v61.value;
            local v63 = l_value_1.kind == l_Kind_0.NULL;
            if l_value_1.kind == l_Kind_0.VARIABLE then
                local l_value_2 = l_value_1.name.value;
                if v53 ~= nil and v27(v53, l_value_2) then
                    v63 = l_isNillish_0(v53[l_value_2]);
                elseif v58.defaultValue ~= nil then
                    v54[l_name_0] = v58.defaultValue;
                    continue;
                elseif l_isNonNullType_0(l_type_1) then
                    error(l_GraphQLError_0.new(("Argument \"%s\" of required type \"%s\" "):format(l_name_0, l_inspect_0(l_type_1)) .. ("was provided the variable \"$%s\" which was not provided a runtime value."):format(l_value_2), l_value_1));
                    continue;
                else
                    continue;
                end;
            end;
            if not (not v63 or not l_isNonNullType_0(l_type_1)) then
                error(l_GraphQLError_0.new(("Argument \"%s\" of non-null type \"%s\" "):format(l_name_0, l_inspect_0(l_type_1)) .. "must not be null.", l_value_1));
            end;
            local v65 = l_valueFromAST_0(l_value_1, l_type_1, v53);
            if v65 == nil then
                error(l_GraphQLError_0.new(("Argument \"%s\" has invalid value %s."):format(l_name_0, l_print_0(l_value_1)), l_value_1));
            end;
            v54[l_name_0] = v65;
        elseif v58.defaultValue ~= nil then
            v54[l_name_0] = v58.defaultValue;
        elseif l_isNonNullType_0(l_type_1) then
            error(l_GraphQLError_0.new(("Argument \"%s\" of required type \"%s\" "):format(l_name_0, l_inspect_0(l_type_1)) .. "was not provided.", v52));
        end;
    end;
    return v54;
end;
v26 = function(v66, v67, v68)
    local v70 = if not v67.directives then nil else l_Array_0.find(v67.directives, function(v69)
        return v69.name.value == v66.name;
    end);
    if not v70 then
        return nil;
    else
        return v25(v66, v70, v68);
    end;
end;
v27 = function(v71, v72)
    return v71[v72] ~= nil;
end;
return {
    getVariableValues = v23,
    getArgumentValues = v25,
    getDirectiveValues = v26
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Error_0 = require(l_Parent_1.LuauPolyfill).Error;
local v3 = require(l_Parent_1.Promise);
local _ = require(l_Parent_0.jsutils.PromiseOrValue);
local l_isPromise_0 = require(l_Parent_0.jsutils.isPromise).isPromise;
local _ = require(l_Parent_0.language.source);
local l_parse_0 = require(l_Parent_0.language.parser).parse;
local _ = require(l_Parent_0.type.definition);
local _ = require(l_Parent_0.type.schema);
local l_validate_0 = require(l_Parent_0.validation.validate).validate;
local l_validateSchema_0 = require(l_Parent_0.type.validate).validateSchema;
local l_execute_0 = require(l_Parent_0.execution.execute).execute;
local v13 = {};
local v14 = nil;
v13.graphql = function(v15)
    return v3.new(function(v16)
        return v16(v14(v15));
    end);
end;
v13.graphqlSync = function(v17)
    local v18 = v14(v17);
    if l_isPromise_0(v18) then
        error(l_Error_0.new("GraphQL execution failed to complete synchronously."));
    end;
    return v18;
end;
v14 = function(v19)
    local l_schema_0 = v19.schema;
    local l_source_0 = v19.source;
    local l_rootValue_0 = v19.rootValue;
    local l_contextValue_0 = v19.contextValue;
    local l_variableValues_0 = v19.variableValues;
    local l_operationName_0 = v19.operationName;
    local l_fieldResolver_0 = v19.fieldResolver;
    local l_typeResolver_0 = v19.typeResolver;
    local v28 = l_validateSchema_0(l_schema_0);
    if #v28 > 0 then
        return {
            errors = v28
        };
    else
        local v29 = nil;
        local l_status_0, l_result_0 = pcall(function()
            v29 = l_parse_0(l_source_0);
        end);
        if l_status_0 then
            local v32 = l_validate_0(l_schema_0, v29);
            if #v32 > 0 then
                return {
                    errors = v32
                };
            else
                return l_execute_0({
                    schema = l_schema_0,
                    document = v29,
                    rootValue = l_rootValue_0,
                    contextValue = l_contextValue_0,
                    variableValues = l_variableValues_0,
                    operationName = l_operationName_0,
                    fieldResolver = l_fieldResolver_0,
                    typeResolver = l_typeResolver_0
                });
            end;
        else
            return {
                errors = {
                    l_result_0
                }
            };
        end;
    end;
end;
return v13;


local l_Array_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Array;
return {
    addPath = function(v1, v2, v3)
        return {
            prev = v1,
            key = v2,
            typename = v3
        };
    end,
    pathToArray = function(v4)
        local v5 = {};
        local l_v4_0 = v4;
        while l_v4_0 do
            table.insert(v5, l_v4_0.key);
            l_v4_0 = l_v4_0.prev;
        end;
        return l_Array_0.reverse(v5);
    end
};


return {
    devAssert = function(v0, v1)
        if not v0 then
            error(v1, 2);
        end;
    end
};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
return {
    didYouMean = function(v1, v2)
        local v3 = nil;
        local v4 = nil;
        if not v2 then
            v4 = v1;
        else
            v3 = v1;
            v4 = v2;
        end;
        local v5 = " Did you mean ";
        if v3 then
            v5 = v5 .. v3 .. " ";
        end;
        local v6 = {};
        for v7 = 1, #v4 do
            v6[v7] = ("%q"):format(v4[v7]);
        end;
        local v8 = #v6;
        if v8 == 0 then
            return "";
        elseif v8 == 1 then
            return v5 .. v6[1] .. "?";
        elseif v8 == 2 then
            return v5 .. v6[1] .. " or " .. v6[2] .. "?";
        else
            local v9 = {};
            table.move(v6, 1, 5, 1, v9);
            return v5 .. table.concat(v9, ", ") .. ", or " .. tostring((table.remove(v9))) .. "?";
        end;
    end
};


identityFunc = function(v0)
    return v0;
end;
return {
    identityFunc = identityFunc
};


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_0.Parent.Parent.LuauPolyfill);
local l_Array_0 = v3.Array;
local l_Object_0 = v3.Object;
local v6 = require(l_Parent_1.luaUtils.null);
local v7 = nil;
local v8 = nil;
local v9 = nil;
local v10 = nil;
local v11 = nil;
local function v13(v12)
    return v7(v12, {});
end;
v7 = function(v14, v15)
    local v16 = typeof(v14);
    if v16 == "string" then
        return l_HttpService_0:JSONEncode(v14);
    elseif v16 == "number" then
        if v14 ~= v14 then
            return "NaN";
        elseif v14 == math.huge then
            return "Infinity";
        elseif v14 == -math.huge then
            return "-Infinity";
        else
            return (tostring(v14));
        end;
    elseif v16 == "function" then
        return "[function]";
    elseif v16 == "table" then
        if v14 == v6 then
            return "null";
        else
            return v8(v14, v15);
        end;
    else
        return (tostring(v14));
    end;
end;
v8 = function(v17, v18)
    if table.find(v18, v17) ~= nil then
        return "[Circular]";
    else
        local v19 = {
            unpack(v18)
        };
        table.insert(v19, v17);
        if typeof(v17.toJSON) == "function" then
            local v20 = v17:toJSON(v17);
            if v20 ~= v17 then
                if typeof(v20) == "string" then
                    return v20;
                else
                    return v7(v20, v19);
                end;
            end;
        elseif l_Array_0.isArray(v17) then
            return v9(v17, v19);
        end;
        return v10(v17, v19);
    end;
end;
v10 = function(v21, v22)
    local v23 = l_Object_0.keys(v21);
    if #v23 == 0 then
        return "{}";
    elseif #v22 > 2 then
        return "[" .. v11(v21) .. "]";
    else
        local v24 = {};
        for v25 = 1, #v23 do
            local v26 = v23[v25];
            v24[v25] = v26 .. ": " .. v7(v21[v26], v22);
        end;
        return "{ " .. table.concat(v24, ", ") .. " }";
    end;
end;
v9 = function(v27, v28)
    local v29 = #v27;
    if v29 == 0 then
        return "[]";
    elseif #v28 > 2 then
        return "[Array]";
    else
        local v30 = math.min(10, v29);
        local v31 = v29 - v30;
        local v32 = {};
        for v33 = 1, v30 do
            v32[v33] = v7(v27[v33], v28);
        end;
        if v31 == 1 then
            table.insert(v32, "... 1 more item");
        elseif v31 > 1 then
            table.insert(v32, ("... %d more items"):format(v31));
        end;
        return "[" .. table.concat(v32, ", ") .. "]";
    end;
end;
v11 = function(_)
    return "Object";
end;
return {
    inspect = v13
};


local l_isNillish_0 = require(script.Parent.Parent.luaUtils.isNillish).isNillish;
local function v5(v1, v2)
    if not l_isNillish_0(v1) then
        if not (typeof(v1) == "table") or typeof(v2) ~= "table" then
            return false;
        elseif v2.new ~= nil and v1.new == v2.new then
            return true;
        else
            local v3 = getmetatable(v1);
            while true do
                if typeof(v3) ~= "table" then
                    return false;
                elseif v3.__index == v2 then
                    return true;
                else
                    local l_v3_0 = v3;
                    v3 = getmetatable(v3.__index);
                    if l_v3_0 == v3 then
                        return false;
                    end;
                end;
            end;
        end;
    else
        return false;
    end;
end;
return function(v6, v7)
    return v5(v6, v7);
end;


return {
    invariant = function(v0, v1)
        if not v0 then
            error(v1 or "Unexpected invariant triggered.");
        end;
    end
};


return {
    isIteratableObject = function(v0)
        if typeof(v0) ~= "table" then
            return false;
        elseif next(v0) == nil then
            return true;
        elseif #v0 == 0 then
            return false;
        else
            return true;
        end;
    end
};


return {
    isObjectLike = function(v0)
        return typeof(v0) == "table";
    end
};


local v0 = require(script.Parent.Parent.Parent.Promise);
return {
    isPromise = function(v1)
        return v0.is(v1);
    end
};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local _ = require(script.Parent.ObjMap);
return {
    keyMap = function(v2, v3)
        local v4 = {};
        for _, v6 in ipairs(v2) do
            v4[v3(v6)] = v6;
        end;
        return v4;
    end
};


local l_Map_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Map;
return {
    keyValMap = function(v1, v2, v3)
        local v4 = l_Map_0.new();
        for _, v6 in ipairs(v1) do
            v4:set(v2(v6), v3(v6));
        end;
        return v4;
    end
};


local _ = require(script.Parent.ObjMap);
return {
    mapValue = function(v1, v2)
        local v3 = {};
        for v4, v5 in pairs(v1) do
            v3[v4] = v2(v5, v4);
        end;
        return v3;
    end
};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local function _(v2)
    if v2 == nil then
        return v1;
    else
        return v2;
    end;
end;
local function _()
    return (setmetatable({}, {
        __mode = "kv"
    }));
end;
return {
    memoize3 = function(v5)
        local v6 = nil;
        return function(v7, v8, v9)
            local v10 = if v7 == nil then v1 else v7;
            local v11 = if v8 == nil then v1 else v8;
            local v12 = if v9 == nil then v1 else v9;
            if not v6 then
                v6 = setmetatable({}, {
                    __mode = "kv"
                });
            end;
            local v13 = v6[v10];
            local v14 = nil;
            if not v13 then
                v13 = setmetatable({}, {
                    __mode = "kv"
                });
                v6[v10] = v13;
            else
                v14 = v13[v11];
                if v14 then
                    local v15 = v14[v12];
                    if v15 ~= nil then
                        if v15 == v1 then
                            return nil;
                        else
                            return v15;
                        end;
                    end;
                end;
            end;
            if not v14 then
                v14 = setmetatable({}, {
                    __mode = "kv"
                });
                v13[v11] = v14;
            end;
            local v16 = v5(v7, v8, v9);
            v14[v12] = if v16 == nil then v1 else v16;
            return v16;
        end;
    end
};


local v0 = require(script.Parent.Parent.Parent.LuauPolyfill);
local l_Number_0 = v0.Number;
local l_String_0 = v0.String;
local l_isNaN_0 = l_Number_0.isNaN;
local v4 = nil;
local v5 = nil;
local v6 = nil;
local function v15(v7, v8)
    local v9 = 1;
    local v10 = 1;
    while true do
        if v9 <= #v7 and v10 <= #v8 then
            local v11 = l_String_0.charCodeAt(v7, v9);
            local v12 = l_String_0.charCodeAt(v8, v10);
            if not v4(v11) or not v4(v12) then
                if v11 < v12 then
                    return -1;
                elseif v12 < v11 then
                    return 1;
                else
                    v9 = v9 + 1;
                    v10 = v10 + 1;
                end;
            else
                local v13 = 0;
                while true do
                    v9 = v9 + 1;
                    v13 = (v13 * 10 + v11) - v5;
                    v11 = l_String_0.charCodeAt(v7, v9);
                    if not (v4(v11) and v13 > 0) then
                        break;
                    end;
                end;
                local v14 = 0;
                while true do
                    v10 = v10 + 1;
                    v14 = (v14 * 10 + v12) - v5;
                    v12 = l_String_0.charCodeAt(v8, v10);
                    if not (v4(v12) and v14 > 0) then
                        break;
                    end;
                end;
                if v13 < v14 then
                    return -1;
                elseif v14 < v13 then
                    return 1;
                end;
            end;
        else
            return #v7 - #v8;
        end;
    end;
end;
v5 = 48;
v6 = 57;
v4 = function(v16)
    local v17 = not l_isNaN_0(v16);
    if v17 then
        v17 = false;
        if v5 <= v16 then
            v17 = v16 <= v6;
        end;
    end;
    return v17;
end;
return {
    naturalCompare = v15
};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
return {
    printPathArray = function(v1)
        local v2 = {};
        for v3 = 1, #v1 do
            local v4 = v1[v3];
            v2[v3] = typeof(v4) == "number" and "[" .. tostring(v4) .. "]" or "." .. v4;
        end;
        return table.concat(v2, "");
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Promise);
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Object_0 = v2.Object;
local _ = require(script.Parent.ObjMap);
return {
    promiseForObject = function(v6)
        local v7 = l_Object_0.keys(v6);
        return v1.all((l_Array_0.map(v7, function(v8)
            local v9 = v6[v8];
            if not v1.is(v9) then
                return v1.resolve(v9);
            else
                return v9;
            end;
        end))):andThen(function(v10)
            return l_Array_0.reduce(v10, function(v11, v12, v13)
                v11[v7[v13]] = v12;
                return v11;
            end, {});
        end);
    end
};


local l_Parent_0 = script.Parent;
local l_Array_0 = require(l_Parent_0.Parent.Parent.LuauPolyfill).Array;
local _ = require(l_Parent_0.PromiseOrValue);
local l_isPromise_0 = require(l_Parent_0.isPromise).isPromise;
return {
    promiseReduce = function(v4, v5, v6)
        return l_Array_0.reduce(v4, function(v7, v8)
            if not l_isPromise_0(v7) then
                return v5(v7, v8);
            else
                return v7:andThen(function(v9)
                    return v5(v9, v8);
                end);
            end;
        end, v6);
    end
};


local l_Object_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Object;
local l_naturalCompare_0 = require(script.Parent.naturalCompare).naturalCompare;
local v2 = {};
local function v15(v3, v4)
    local v5 = {};
    local v6 = v2.new(v3);
    local v7 = math.floor(v3:len() * 0.4) + 1;
    for v8 = 1, #v4 do
        local v9 = v4[v8];
        local v10 = v6:measure(v9, v7);
        if v10 ~= nil then
            v5[v9] = v10;
        end;
    end;
    local v11 = l_Object_0.keys(v5);
    table.sort(v11, function(v12, v13)
        local v14 = v5[v12] - v5[v13];
        if v14 ~= 0 then
            return v14 < 0;
        else
            return l_naturalCompare_0(v12, v13) < 0;
        end;
    end);
    return v11;
end;
local v16 = nil;
v2.__index = v2;
v2.new = function(v17)
    local v18 = setmetatable({}, v2);
    v18._input = v17;
    v18._inputLowerCase = v17:lower();
    v18._inputArray = v16(v18._inputLowerCase);
    local v19 = v17:len();
    v18._rows = {
        table.create(v19 + 1, 0),
        table.create(v19 + 1, 0),
        table.create(v19 + 1, 0)
    };
    return v18;
end;
v2.measure = function(v20, v21, v22)
    if v20._input == v21 then
        return 0;
    else
        local v23 = v21:lower();
        if v20._inputLowerCase == v23 then
            return 1;
        else
            local v24 = v16(v23);
            local l__inputArray_0 = v20._inputArray;
            if #v24 < #l__inputArray_0 then
                local l_v24_0 = v24;
                v24 = l__inputArray_0;
                l__inputArray_0 = l_v24_0;
            end;
            local v27 = #v24;
            local v28 = #l__inputArray_0;
            if v22 < v27 - v28 then
                return nil;
            else
                local l__rows_0 = v20._rows;
                for v30 = 0, v28 do
                    l__rows_0[1][v30 + 1] = v30;
                end;
                for v31 = 1, v27 do
                    local v32 = l__rows_0[(v31 - 1) % 3 + 1];
                    local v33 = l__rows_0[v31 % 3 + 1];
                    v33[1] = v31;
                    local l_v31_0 = v31;
                    for v35 = 1, v28 do
                        local v36 = math.min(v32[v35 + 1] + 1, v33[v35] + 1, v32[v35] + (v24[v31] == l__inputArray_0[v35] and 0 or 1));
                        if ((v31 > 1 and v35 > 1) and v24[v31] == l__inputArray_0[v35 - 1]) and v24[v31 - 1] == l__inputArray_0[v35] then
                            v36 = math.min(v36, l__rows_0[(v31 - 2) % 3 + 1][v35 - 1] + 1);
                        end;
                        if v36 < l_v31_0 then
                            l_v31_0 = v36;
                        end;
                        v33[v35 + 1] = v36;
                    end;
                    if v22 < l_v31_0 then
                        return nil;
                    end;
                end;
                local v37 = l__rows_0[v27 % 3 + 1][v28 + 1];
                if v37 <= v22 then
                    return v37;
                else
                    return nil;
                end;
            end;
        end;
    end;
end;
v16 = function(v38)
    local v39 = v38:len();
    local v40 = {};
    for v41 = 1, v39 do
        v40[v41] = v38:byte(v41);
    end;
    return v40;
end;
return {
    suggestionList = v15
};


local _ = require(script.Parent.ObjMap);
return {
    toObjMap = function(v1)
        local v2 = {};
        for v3, v4 in pairs(v1) do
            v2[v3] = v4;
        end;
        return v2;
    end
};


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Array_0 = require(l_Parent_0.Parent.LuauPolyfill).Array;
local l_isObjectLike_0 = require(l_Parent_0.jsutils.isObjectLike).isObjectLike;
local function v3(v4)
    if l_isObjectLike_0(v4) then
        if type(v4.toJSON) == "function" then
            return v4:toJSON();
        elseif not l_Array_0.isArray(v4) then
            local v5 = {};
            for v6, v7 in pairs(v4) do
                v5[v6] = v3(v7);
            end;
            return v5;
        else
            return l_Array_0.map(v4, v3);
        end;
    else
        return v4;
    end;
end;
return {
    toJSONDeep = v3
};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local _ = require(script.Parent.source);
local _ = require(script.Parent.tokenKind);
local v3 = {};
v3.__index = v3;
v3.new = function(v4, v5, v6)
    return (setmetatable({
        start = v4.start,
        _end = v5._end,
        startToken = v4,
        endToken = v5,
        source = v6
    }, v3));
end;
v3.toJSON = function(v7)
    return {
        start = v7.start,
        _end = v7._end
    };
end;
local v8 = {};
v8.__index = v8;
v8.new = function(v9, v10, v11, v12, v13, v14, v15)
    return (setmetatable({
        kind = v9,
        start = v10,
        _end = v11,
        line = v12,
        column = v13,
        value = v15,
        prev = v14,
        next = nil
    }, v8));
end;
v8.toJSON = function(v16)
    return {
        kind = v16.kind,
        value = v16.value,
        line = v16.line,
        column = v16.column
    };
end;
return {
    Location = v3,
    Token = v8,
    isNode = function(v17)
        local v18 = false;
        if typeof(v17) == "table" then
            v18 = typeof(v17.kind) == "string";
        end;
        return v18;
    end
};


local v0 = require(script.Parent.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_String_0 = v0.String;
local v3 = nil;
local v4 = nil;
local _ = nil;
v4 = function(v6)
    local v7 = l_String_0.split(v6, {
        "\r\n",
        "\n",
        "\r"
    });
    local v8 = v3(v6);
    if v8 ~= 0 then
        for v9 = 2, #v7 do
            v7[v9] = l_String_0.slice(v7[v9], v8 + 1);
        end;
    end;
    local v10 = 0;
    while not (not (v10 < #v7) or not isBlank(v7[v10 + 1])) do
        v10 = v10 + 1;
    end;
    local v11 = #v7;
    while not (not (v10 < v11) or not isBlank(v7[(v11 - 1) + 1])) do
        v11 = v11 - 1;
    end;
    return l_Array_0.join(l_Array_0.slice(v7, v10 + 1, v11 + 1), "\n");
end;
isBlank = function(v12)
    for v13 = 1, #v12 do
        local v14 = string.sub(v12, v13, v13);
        if v14 ~= " " and v14 ~= "\t" then
            return false;
        end;
    end;
    return true;
end;
v3 = function(v15)
    local v16 = true;
    local v17 = true;
    local v18 = 0;
    local v19 = nil;
    local v20 = 1;
    local v21 = string.len(v15);
    while v20 <= v21 do
        local v22 = l_String_0.charCodeAt(v15, v20);
        if v22 == 13 and l_String_0.charCodeAt(v15, v20 + 1) == 10 then
            v20 = v20 + 1;
        end;
        if v22 == 10 then
            v16 = false;
            v17 = true;
            v18 = 0;
        elseif not (v22 ~= 9) or v22 == 32 then
            v18 = v18 + 1;
        else
            if (v17 and v16 ~= true) and (not (v19 ~= nil) or v18 < v19) then
                v19 = v18;
            end;
            v17 = false;
        end;
        v20 = v20 + 1;
    end;
    return not not v19 and v19 or 0;
end;
return {
    getBlockStringIndentation = v3,
    dedentBlockStringValue = v4,
    printBlockString = function(v23, v24, v25)
        local v26 = v24 or "";
        local v27 = not (v25 == nil) and v25;
        local v28 = string.find(v23, "\n") == nil;
        local v29 = true;
        if string.sub(v23, 1, 1) ~= " " then
            v29 = string.sub(v23, 1, 1) == "\t";
        end;
        local v30 = string.sub(v23, #v23, #v23) == "\"";
        local v31 = string.sub(v23, #v23, #v23) == "\\";
        local v32 = true;
        if v28 == true then
            v32 = (v30 or v31) or v27;
        end;
        local v33 = "";
        if v32 and (v28 and v29) ~= true then
            v33 = v33 .. "\n" .. v26;
        end;
        v33 = v33 .. (v26 ~= "" and string.gsub(v23, "\n", "\n" .. v26) or v23);
        if v32 then
            v33 = v33 .. "\n";
        end;
        return "\"\"\"" .. string.gsub(v33, "\"\"\"", "\\\"\"\"") .. "\"\"\"";
    end
};


return {
    DirectiveLocation = require(script.Parent.Parent.Parent.LuauPolyfill).Object.freeze({
        QUERY = "QUERY",
        MUTATION = "MUTATION",
        SUBSCRIPTION = "SUBSCRIPTION",
        FIELD = "FIELD",
        FRAGMENT_DEFINITION = "FRAGMENT_DEFINITION",
        FRAGMENT_SPREAD = "FRAGMENT_SPREAD",
        INLINE_FRAGMENT = "INLINE_FRAGMENT",
        VARIABLE_DEFINITION = "VARIABLE_DEFINITION",
        SCHEMA = "SCHEMA",
        SCALAR = "SCALAR",
        OBJECT = "OBJECT",
        FIELD_DEFINITION = "FIELD_DEFINITION",
        ARGUMENT_DEFINITION = "ARGUMENT_DEFINITION",
        INTERFACE = "INTERFACE",
        UNION = "UNION",
        ENUM = "ENUM",
        ENUM_VALUE = "ENUM_VALUE",
        INPUT_OBJECT = "INPUT_OBJECT",
        INPUT_FIELD_DEFINITION = "INPUT_FIELD_DEFINITION"
    })
};


local v0 = require(script.location);
local v1 = require(script.printLocation);
local v2 = require(script.kinds);
local v3 = require(script.tokenKind);
local v4 = require(script.parser);
local v5 = require(script.visitor);
local v6 = require(script.ast);
local v7 = require(script.predicates);
return {
    Source = require(script.source).Source,
    getLocation = v0.getLocation,
    printLocation = v1.printLocation,
    printSourceLocation = v1.printSourceLocation,
    Kind = v2.Kind,
    TokenKind = v3.TokenKind,
    Lexer = require(script.lexer).Lexer,
    parse = v4.parse,
    parseValue = v4.parseValue,
    parseType = v4.parseType,
    print = require(script.printer).print,
    visit = v5.visit,
    visitInParallel = v5.visitInParallel,
    getVisitFn = v5.getVisitFn,
    BREAK = v5.BREAK,
    REMOVE = v5.REMOVE,
    Location = v6.Location,
    Token = v6.Token,
    isDefinitionNode = v7.isDefinitionNode,
    isExecutableDefinitionNode = v7.isExecutableDefinitionNode,
    isSelectionNode = v7.isSelectionNode,
    isValueNode = v7.isValueNode,
    isTypeNode = v7.isTypeNode,
    isTypeSystemDefinitionNode = v7.isTypeSystemDefinitionNode,
    isTypeDefinitionNode = v7.isTypeDefinitionNode,
    isTypeSystemExtensionNode = v7.isTypeSystemExtensionNode,
    isTypeExtensionNode = v7.isTypeExtensionNode,
    DirectiveLocation = require(script.directiveLocation).DirectiveLocation
};


return {
    Kind = {
        NAME = "Name",
        DOCUMENT = "Document",
        OPERATION_DEFINITION = "OperationDefinition",
        VARIABLE_DEFINITION = "VariableDefinition",
        SELECTION_SET = "SelectionSet",
        FIELD = "Field",
        ARGUMENT = "Argument",
        FRAGMENT_SPREAD = "FragmentSpread",
        INLINE_FRAGMENT = "InlineFragment",
        FRAGMENT_DEFINITION = "FragmentDefinition",
        VARIABLE = "Variable",
        INT = "IntValue",
        FLOAT = "FloatValue",
        STRING = "StringValue",
        BOOLEAN = "BooleanValue",
        NULL = "NullValue",
        ENUM = "EnumValue",
        LIST = "ListValue",
        OBJECT = "ObjectValue",
        OBJECT_FIELD = "ObjectField",
        DIRECTIVE = "Directive",
        NAMED_TYPE = "NamedType",
        LIST_TYPE = "ListType",
        NON_NULL_TYPE = "NonNullType",
        SCHEMA_DEFINITION = "SchemaDefinition",
        OPERATION_TYPE_DEFINITION = "OperationTypeDefinition",
        SCALAR_TYPE_DEFINITION = "ScalarTypeDefinition",
        OBJECT_TYPE_DEFINITION = "ObjectTypeDefinition",
        FIELD_DEFINITION = "FieldDefinition",
        INPUT_VALUE_DEFINITION = "InputValueDefinition",
        INTERFACE_TYPE_DEFINITION = "InterfaceTypeDefinition",
        UNION_TYPE_DEFINITION = "UnionTypeDefinition",
        ENUM_TYPE_DEFINITION = "EnumTypeDefinition",
        ENUM_VALUE_DEFINITION = "EnumValueDefinition",
        INPUT_OBJECT_TYPE_DEFINITION = "InputObjectTypeDefinition",
        DIRECTIVE_DEFINITION = "DirectiveDefinition",
        SCHEMA_EXTENSION = "SchemaExtension",
        SCALAR_TYPE_EXTENSION = "ScalarTypeExtension",
        OBJECT_TYPE_EXTENSION = "ObjectTypeExtension",
        INTERFACE_TYPE_EXTENSION = "InterfaceTypeExtension",
        UNION_TYPE_EXTENSION = "UnionTypeExtension",
        ENUM_TYPE_EXTENSION = "EnumTypeExtension",
        INPUT_OBJECT_TYPE_EXTENSION = "InputObjectTypeExtension"
    }
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Parent.LuauPolyfill);
local l_Number_0 = v2.Number;
local l_String_0 = v2.String;
local l_isNaN_0 = l_Number_0.isNaN;
local l_HttpService_0 = game:GetService("HttpService");
local l_syntaxError_0 = require(l_Parent_1.error.syntaxError).syntaxError;
local _ = require(script.Parent.source);
local v9 = require(l_Parent_0.tokenKind);
local l_Token_0 = require(l_Parent_0.ast).Token;
local l_TokenKind_0 = v9.TokenKind;
local v12 = require(l_Parent_1.luaUtils.toUnicodeString);
local l_dedentBlockStringValue_0 = require(l_Parent_0.blockString).dedentBlockStringValue;
local v14 = nil;
local v15 = nil;
local v16 = nil;
local v17 = nil;
v16 = function(v18, v19, v20, v21)
    local v22 = v17(v18);
    local v23 = v17(v19);
    local v24 = v17(v20);
    local v25 = v17(v21);
    if not ((v22 >= 0 and v23 >= 0) and v24 >= 0) or v25 < 0 then
        return -1;
    else
        return (bit32.bor(bit32.lshift(v22, 12), bit32.lshift(v23, 8), bit32.lshift(v24, 4), v25));
    end;
end;
v17 = function(v26)
    if v26 >= 48 and v26 <= 57 then
        return v26 - 48;
    elseif v26 >= 65 and v26 <= 70 then
        return v26 - 55;
    elseif v26 >= 97 and v26 <= 102 then
        return v26 - 87;
    else
        return -1;
    end;
end;
local function v48(v27, v28, v29, v30, v31)
    local l_body_0 = v27.body;
    local v33 = string.len(l_body_0);
    local v34 = v28 + 1;
    local v35 = 0;
    local function _()
        return v34 ~= v33 + 1;
    end;
    local function _()
        v35 = l_String_0.charCodeAt(l_body_0, v34);
        return not l_isNaN_0(v35);
    end;
    local function _()
        return v35 == 95;
    end;
    local function _()
        local v39 = false;
        if v35 >= 48 then
            v39 = v35 <= 57;
        end;
        return v39;
    end;
    local function _()
        local v41 = false;
        if v35 >= 65 then
            v41 = v35 <= 90;
        end;
        return v41;
    end;
    local function _()
        local v43 = false;
        if v35 >= 97 then
            v43 = v35 <= 122;
        end;
        return v43;
    end;
    local function _()
        local v45 = v35 == 95;
        if not v45 then
            v45 = false;
            if v35 >= 48 then
                v45 = v35 <= 57;
            end;
            if not v45 then
                v45 = false;
                if v35 >= 65 then
                    v45 = v35 <= 90;
                end;
                if not v45 then
                    v45 = false;
                    if v35 >= 97 then
                        v45 = v35 <= 122;
                    end;
                end;
            end;
        end;
        return v45;
    end;
    while v34 ~= v33 + 1 do
        v35 = l_String_0.charCodeAt(l_body_0, v34);
        if not l_isNaN_0(v35) then
            local v47 = v35 == 95;
            if not v47 then
                v47 = false;
                if v35 >= 48 then
                    v47 = v35 <= 57;
                end;
                if not v47 then
                    v47 = false;
                    if v35 >= 65 then
                        v47 = v35 <= 90;
                    end;
                    if not v47 then
                        v47 = false;
                        if v35 >= 97 then
                            v47 = v35 <= 122;
                        end;
                    end;
                end;
            end;
            if v47 then
                v34 = v34 + 1;
            else
                break;
            end;
        else
            break;
        end;
    end;
    return l_Token_0.new(l_TokenKind_0.NAME, v28, v34, v29, v30, v31, l_String_0.slice(l_body_0, v28, v34));
end;
local function v57(v49, v50, v51, v52, v53)
    local l_body_1 = v49.body;
    local v55 = nil;
    local l_v50_0 = v50;
    while true do
        l_v50_0 = l_v50_0 + 1;
        v55 = l_String_0.charCodeAt(l_body_1, l_v50_0);
        if not (not l_isNaN_0(v55) and (not (v55 <= 31) or v55 == 9)) then
            break;
        end;
    end;
    return l_Token_0.new(l_TokenKind_0.COMMENT, v50, l_v50_0, v51, v52, v53, l_String_0.slice(l_body_1, v50 + 1, l_v50_0));
end;
printCharCode = function(v58)
    if not l_isNaN_0(v58) then
        if v58 < 127 then
            return l_HttpService_0:JSONEncode((string.char(v58)));
        else
            return v12(v58);
        end;
    else
        return l_TokenKind_0.EOF;
    end;
end;
readDigits = function(v59, v60, v61)
    local l_body_2 = v59.body;
    local l_v60_0 = v60;
    local l_v61_0 = v61;
    if l_v61_0 >= 48 and l_v61_0 <= 57 then
        while true do
            l_v60_0 = l_v60_0 + 1;
            l_v61_0 = l_String_0.charCodeAt(l_body_2, l_v60_0);
            if not (l_v61_0 >= 48 and l_v61_0 <= 57) then
                break;
            end;
        end;
        return l_v60_0;
    else
        error(l_syntaxError_0(v59, l_v60_0, "Invalid number, expected digit but got: " .. printCharCode(l_v61_0) .. "."));
        return ;
    end;
end;
unexpectedCharacterMessage = function(v65)
    if ((v65 < 32 and v65 ~= 9) and v65 ~= 10) and v65 ~= 13 then
        return "Cannot contain the invalid character " .. printCharCode(v65) .. ".";
    elseif v65 == 39 then
        return "Unexpected single quote character ('), did you mean to use a double quote (\")?";
    else
        return "Cannot parse the unexpected character " .. printCharCode(v65) .. ".";
    end;
end;
isNameStart = function(v66)
    local v67 = v66 == 95;
    local v68 = false;
    if v66 >= 65 then
        v68 = v66 <= 90;
    end;
    local v69 = false;
    if v66 >= 97 then
        v69 = v66 <= 122;
    end;
    return (v67 or v68) or v69;
end;
readNumber = function(v70, v71, v72, v73, v74, v75)
    local l_body_3 = v70.body;
    local l_v72_0 = v72;
    local l_v71_0 = v71;
    local v79 = false;
    if l_v72_0 == 45 then
        l_v71_0 = l_v71_0 + 1;
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
    end;
    if l_v72_0 == 48 then
        l_v71_0 = l_v71_0 + 1;
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
        if l_v72_0 >= 48 and l_v72_0 <= 57 then
            error(l_syntaxError_0(v70, l_v71_0, "Invalid number, unexpected digit after 0: " .. printCharCode(l_v72_0) .. "."));
        end;
    else
        l_v71_0 = readDigits(v70, l_v71_0, l_v72_0);
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
    end;
    if l_v72_0 == 46 then
        v79 = true;
        l_v71_0 = l_v71_0 + 1;
        l_v71_0 = readDigits(v70, l_v71_0, (l_String_0.charCodeAt(l_body_3, l_v71_0)));
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
    end;
    if not (l_v72_0 ~= 69) or l_v72_0 == 101 then
        v79 = true;
        l_v71_0 = l_v71_0 + 1;
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
        if not (l_v72_0 ~= 43) or l_v72_0 == 45 then
            l_v71_0 = l_v71_0 + 1;
            l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
        end;
        l_v71_0 = readDigits(v70, l_v71_0, l_v72_0);
        l_v72_0 = l_String_0.charCodeAt(l_body_3, l_v71_0);
    end;
    if not (l_v72_0 ~= 46 and not isNameStart(l_v72_0)) then
        error(l_syntaxError_0(v70, l_v71_0, "Invalid number, expected digit but got: " .. printCharCode(l_v72_0) .. "."));
    end;
    return l_Token_0.new(not not v79 and l_TokenKind_0.FLOAT or l_TokenKind_0.INT, v71, l_v71_0, v73, v74, v75, l_String_0.slice(l_body_3, v71, l_v71_0));
end;
local function v89(v80, v81)
    local l_source_0 = v80.source;
    local l_body_4 = l_source_0.body;
    local v84 = utf8.len(l_body_4);
    assert(v84 ~= nil, "invalid utf8 supplied for token");
    local l__end_0 = v81._end;
    while true do
        if l__end_0 <= v84 then
            local v86 = l_String_0.charCodeAt(l_body_4, l__end_0);
            local l_line_0 = v80.line;
            local v88 = l__end_0 - v80.lineStart;
            if not ((v86 ~= 65279 and v86 ~= 9) and v86 ~= 32) or v86 == 44 then
                l__end_0 = l__end_0 + 1;
            elseif v86 == 10 then
                l__end_0 = l__end_0 + 1;
                v80.line = v80.line + 1;
                v80.lineStart = l__end_0 - 1;
            elseif v86 == 13 then
                l__end_0 = if l_String_0.charCodeAt(l_body_4, l__end_0 + 1) == 10 then l__end_0 + 2 else l__end_0 + 1;
                v80.line = v80.line + 1;
                v80.lineStart = l__end_0 - 1;
            elseif v86 == 33 then
                return l_Token_0.new(l_TokenKind_0.BANG, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
            elseif v86 == 35 then
                return v57(l_source_0, l__end_0, l_line_0, v88, v81);
            elseif v86 == 36 then
                return l_Token_0.new(l_TokenKind_0.DOLLAR, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
            elseif v86 == 38 then
                return l_Token_0.new(l_TokenKind_0.AMP, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
            elseif v86 == 40 then
                return l_Token_0.new(l_TokenKind_0.PAREN_L, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
            elseif v86 == 41 then
                return l_Token_0.new(l_TokenKind_0.PAREN_R, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
            else
                if v86 == 46 then
                    if l_String_0.charCodeAt(l_body_4, l__end_0 + 1) == 46 and l_String_0.charCodeAt(l_body_4, l__end_0 + 2) == 46 then
                        return l_Token_0.new(l_TokenKind_0.SPREAD, l__end_0, l__end_0 + 3, l_line_0, v88, v81);
                    end;
                elseif v86 == 58 then
                    return l_Token_0.new(l_TokenKind_0.COLON, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 61 then
                    return l_Token_0.new(l_TokenKind_0.EQUALS, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 64 then
                    return l_Token_0.new(l_TokenKind_0.AT, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 91 then
                    return l_Token_0.new(l_TokenKind_0.BRACKET_L, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 93 then
                    return l_Token_0.new(l_TokenKind_0.BRACKET_R, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 123 then
                    return l_Token_0.new(l_TokenKind_0.BRACE_L, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 124 then
                    return l_Token_0.new(l_TokenKind_0.PIPE, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 125 then
                    return l_Token_0.new(l_TokenKind_0.BRACE_R, l__end_0, l__end_0 + 1, l_line_0, v88, v81);
                elseif v86 == 34 then
                    if l_String_0.charCodeAt(l_body_4, l__end_0 + 1) == 34 and l_String_0.charCodeAt(l_body_4, l__end_0 + 2) == 34 then
                        return v14(l_source_0, l__end_0, l_line_0, v88, v81, v80);
                    else
                        return v15(l_source_0, l__end_0, l_line_0, v88, v81);
                    end;
                elseif not (((((((((v86 ~= 45 and v86 ~= 48) and v86 ~= 49) and v86 ~= 50) and v86 ~= 51) and v86 ~= 52) and v86 ~= 53) and v86 ~= 54) and v86 ~= 55) and v86 ~= 56) or v86 == 57 then
                    return readNumber(l_source_0, l__end_0, v86, l_line_0, v88, v81);
                elseif not (((((((((((((((((((((((((((((((((((((((((((((((((((v86 ~= 65 and v86 ~= 66) and v86 ~= 67) and v86 ~= 68) and v86 ~= 69) and v86 ~= 70) and v86 ~= 71) and v86 ~= 72) and v86 ~= 73) and v86 ~= 74) and v86 ~= 75) and v86 ~= 76) and v86 ~= 77) and v86 ~= 78) and v86 ~= 79) and v86 ~= 80) and v86 ~= 81) and v86 ~= 82) and v86 ~= 83) and v86 ~= 84) and v86 ~= 85) and v86 ~= 86) and v86 ~= 87) and v86 ~= 88) and v86 ~= 89) and v86 ~= 90) and v86 ~= 95) and v86 ~= 97) and v86 ~= 98) and v86 ~= 99) and v86 ~= 100) and v86 ~= 101) and v86 ~= 102) and v86 ~= 103) and v86 ~= 104) and v86 ~= 105) and v86 ~= 106) and v86 ~= 107) and v86 ~= 108) and v86 ~= 109) and v86 ~= 110) and v86 ~= 111) and v86 ~= 112) and v86 ~= 113) and v86 ~= 114) and v86 ~= 115) and v86 ~= 116) and v86 ~= 117) and v86 ~= 118) and v86 ~= 119) and v86 ~= 120) and v86 ~= 121) or v86 == 122 then
                    return v48(l_source_0, l__end_0, l_line_0, v88, v81);
                end;
                error(l_syntaxError_0(l_source_0, l__end_0, unexpectedCharacterMessage(v86)));
            end;
        else
            return l_Token_0.new(l_TokenKind_0.EOF, v84 + 1, v84 + 1, v80.line, l__end_0 - v80.lineStart, v81);
        end;
    end;
end;
local v90 = {};
v90.__index = v90;
v90.new = function(v91)
    local v92 = l_Token_0.new(l_TokenKind_0.SOF, 1, 1, 0, 0, nil);
    return (setmetatable({
        source = v91,
        lastToken = v92,
        token = v92,
        line = 1,
        lineStart = 0
    }, v90));
end;
v90.advance = function(v93)
    v93.lastToken = v93.token;
    v93.token = v93:lookahead();
    return v93.token;
end;
v90.lookahead = function(v94)
    local l_token_0 = v94.token;
    if l_token_0.kind ~= l_TokenKind_0.EOF then
        while true do
            if not l_token_0.next then
                local v96 = v89(v94, l_token_0);
                l_token_0.next = v96;
                v96.prev = l_token_0;
                l_token_0 = v96;
            else
                l_token_0 = l_token_0.next;
            end;
            if not (l_token_0.kind == l_TokenKind_0.COMMENT) then
                break;
            end;
        end;
    end;
    return l_token_0;
end;
local function v99(v97)
    local v98 = true;
    if v97 ~= l_TokenKind_0.BANG then
        v98 = true;
        if v97 ~= l_TokenKind_0.DOLLAR then
            v98 = true;
            if v97 ~= l_TokenKind_0.AMP then
                v98 = true;
                if v97 ~= l_TokenKind_0.PAREN_L then
                    v98 = true;
                    if v97 ~= l_TokenKind_0.PAREN_R then
                        v98 = true;
                        if v97 ~= l_TokenKind_0.SPREAD then
                            v98 = true;
                            if v97 ~= l_TokenKind_0.COLON then
                                v98 = true;
                                if v97 ~= l_TokenKind_0.EQUALS then
                                    v98 = true;
                                    if v97 ~= l_TokenKind_0.AT then
                                        v98 = true;
                                        if v97 ~= l_TokenKind_0.BRACKET_L then
                                            v98 = true;
                                            if v97 ~= l_TokenKind_0.BRACKET_R then
                                                v98 = true;
                                                if v97 ~= l_TokenKind_0.BRACE_L then
                                                    v98 = true;
                                                    if v97 ~= l_TokenKind_0.PIPE then
                                                        v98 = v97 == l_TokenKind_0.BRACE_R;
                                                    end;
                                                end;
                                            end;
                                        end;
                                    end;
                                end;
                            end;
                        end;
                    end;
                end;
            end;
        end;
    end;
    return v98;
end;
v14 = function(v100, v101, v102, v103, v104, v105)
    local l_body_5 = v100.body;
    local v107 = v101 + 3;
    local l_v107_0 = v107;
    local v109 = 0;
    local v110 = "";
    while true do
        if not (v107 <= string.len(l_body_5)) or l_isNaN_0(l_String_0.charCodeAt(l_body_5, v107)) then
            error(l_syntaxError_0(v100, v107, "Unterminated string."));
            return ;
        else
            v109 = l_String_0.charCodeAt(l_body_5, v107);
            if (v109 == 34 and l_String_0.charCodeAt(l_body_5, v107 + 1) == 34) and l_String_0.charCodeAt(l_body_5, v107 + 2) == 34 then
                return l_Token_0.new(l_TokenKind_0.BLOCK_STRING, v101, v107 + 3, v102, v103, v104, l_dedentBlockStringValue_0(v110 .. l_String_0.slice(l_body_5, l_v107_0, v107)));
            else
                if ((v109 < 32 and v109 ~= 9) and v109 ~= 10) and v109 ~= 13 then
                    error(l_syntaxError_0(v100, v107, "Invalid character within String: " .. printCharCode(v109) .. "."));
                end;
                if v109 == 10 then
                    v107 = v107 + 1;
                    v105.line = v105.line + 1;
                    v105.lineStart = v107 - 1;
                elseif v109 == 13 then
                    v107 = if l_String_0.charCodeAt(l_body_5, v107 + 1) == 10 then v107 + 2 else v107 + 1;
                    v105.line = v105.line + 1;
                    v105.lineStart = v107 - 1;
                elseif ((v109 == 92 and l_String_0.charCodeAt(l_body_5, v107 + 1) == 34) and l_String_0.charCodeAt(l_body_5, v107 + 2) == 34) and l_String_0.charCodeAt(l_body_5, v107 + 3) == 34 then
                    v110 = v110 .. l_String_0.slice(l_body_5, l_v107_0, v107) .. "\"\"\"";
                    v107 = v107 + 4;
                    l_v107_0 = v107;
                else
                    v107 = v107 + 1;
                end;
            end;
        end;
    end;
end;
v15 = function(v111, v112, v113, v114, v115)
    local l_body_6 = v111.body;
    local v117 = utf8.len(l_body_6);
    assert(v117 ~= nil, "invalid utf8 sequence detected");
    local v118 = v112 + 1;
    local l_v118_0 = v118;
    local v120 = "";
    while v118 <= v117 do
        local v121 = l_String_0.charCodeAt(l_body_6, v118);
        if l_isNaN_0(v121) then
            break;
        elseif v121 == 34 then
            return l_Token_0.new(l_TokenKind_0.STRING, v112, v118 + 1, v113, v114, v115, v120 .. l_String_0.slice(l_body_6, l_v118_0, v118));
        elseif v121 ~= 10 and v121 ~= 13 then
            if v121 < 32 and v121 ~= 9 then
                error(l_syntaxError_0(v111, v118, "Invalid character within String: " .. printCharCode(v121) .. "."));
            end;
            v118 = v118 + 1;
            if v121 == 92 then
                v120 = v120 .. l_String_0.slice(l_body_6, l_v118_0, v118 - 1);
                v121 = l_String_0.charCodeAt(l_body_6, v118);
                if v121 == 34 then
                    v120 = v120 .. "\"";
                elseif v121 == 47 then
                    v120 = v120 .. "/";
                elseif v121 == 92 then
                    v120 = v120 .. "\\";
                elseif v121 == 98 then
                    v120 = v120 .. "\b";
                elseif v121 == 102 then
                    v120 = v120 .. "\f";
                elseif v121 == 110 then
                    v120 = v120 .. "\n";
                elseif v121 == 114 then
                    v120 = v120 .. "\r";
                elseif v121 == 116 then
                    v120 = v120 .. "\t";
                elseif v121 == 117 then
                    local v122 = v16(l_String_0.charCodeAt(l_body_6, v118 + 1), l_String_0.charCodeAt(l_body_6, v118 + 2), l_String_0.charCodeAt(l_body_6, v118 + 3), l_String_0.charCodeAt(l_body_6, v118 + 4));
                    if v122 < 0 then
                        error(l_syntaxError_0(v111, v118, "Invalid character escape sequence: \\u" .. l_String_0.slice(l_body_6, v118 + 1, v118 + 5) .. "."));
                    end;
                    v120 = v120 .. utf8.char(v122);
                    v118 = v118 + 4;
                else
                    error(l_syntaxError_0(v111, v118, "Invalid character escape sequence: \\" .. utf8.char(v121) .. "."));
                end;
                v118 = v118 + 1;
                l_v118_0 = v118;
            end;
        else
            break;
        end;
    end;
    error(l_syntaxError_0(v111, v118, "Unterminated string."));
end;
return {
    Lexer = v90,
    isPunctuatorTokenKind = v99
};


local l_String_0 = require(script.Parent.Parent.Parent.LuauPolyfill).String;
local _ = require(script.Parent.source);
return {
    getLocation = function(v2, v3)
        local v4 = {
            "\r\n",
            "\r",
            "\n"
        };
        local v5 = 1;
        local l_v3_0 = v3;
        local v7 = l_String_0.findOr(v2.body, v4);
        while v7 ~= nil and v7.index < v3 do
            local v8 = v7.index + string.len(v7.match);
            v5 = v5 + 1;
            l_v3_0 = (v3 + 1) - v8;
            v7 = l_String_0.findOr(v2.body, v4, v8);
        end;
        return {
            line = v5,
            column = l_v3_0
        };
    end
};