local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Parent.Dash);
local l_class_0 = v1.class;
local l_slice_0 = v1.slice;
local l_filter_0 = v1.filter;
local l_forEach_0 = v1.forEach;
local l_keys_0 = v1.keys;
local l_some_0 = v1.some;
local l_values_0 = v1.values;
local l_concat_0 = table.concat;
local l_insert_0 = table.insert;
local l_sort_0 = table.sort;
local v12 = require(l_Parent_0.RoactInspector.Utils.getSymbol);
local v13 = require(l_Parent_0.RoactInspector.Utils.sanitizeRoactLog);
local _ = require(l_Parent_0.Types);
local v44 = l_class_0("RoactProfiler", function(v15, v16, v17, v18)
    local v19 = {
        active = false,
        events = {},
        rows = {},
        instanceEvents = {},
        selectedEvents = {},
        indent = 0,
        eventCount = 0,
        debugInterface = v15,
        registeredFnProxies = {},
        registeredComponents = {},
        instanceIndices = {},
        nextInstanceIndex = 1,
        nextEventId = 1,
        renderTimes = {},
        filter = {},
        searchTerm = nil,
        roact = v18,
        treeWatcher = v16,
        tree = v17,
        startTime = 0,
        profileComponents = {
            sortIndex = nil,
            sortOrder = nil,
            columns = {
                "instanceName",
                "depth",
                "count",
                "renderTime",
                "time"
            }
        },
        profileEvents = {
            sortIndex = nil,
            sortOrder = nil,
            columns = {
                "startTime",
                "renderTime",
                "time",
                "cause",
                "details"
            }
        }
    };
    v19.resolveUpdateProxy = function(v20, ...)
        local v21 = debug.traceback();
        local v22 = os.clock();
        local v23 = {
            ...
        };
        local l_v19_0 = v19;
        l_v19_0.indent = l_v19_0.indent + 1;
        l_v19_0 = v20.props;
        local l_state_0 = v20.state;
        local l_status_0, l_result_0 = pcall(function()
            return v20:__resolveUpdateHidden(unpack(v23));
        end);
        if not (not l_status_0 or not l_result_0) then
            local v28 = v20.shouldUpdate == v19.roact.PureComponent.shouldUpdate;
            local v29 = l_state_0 ~= v20.state;
            local v30 = l_v19_0 ~= v20.props;
            l_insert_0(v19.events, {
                instance = v20,
                depth = v19.indent,
                renderTime = v19.renderTimes[v19.indent] or 0,
                startTime = v22,
                endTime = os.clock(),
                updateTrace = v21,
                isPure = v28,
                oldState = not not v29 and l_state_0 or nil,
                newState = not not v29 and v20.state or nil,
                oldProps = not not v30 and l_v19_0 or nil,
                newProps = not not v30 and v20.props or nil
            });
        end;
        v19.renderTimes[v19.indent] = nil;
        local l_v19_1 = v19;
        l_v19_1.indent = l_v19_1.indent - 1;
        if not l_status_0 then
            warn("Update error during profiling", l_result_0);
        end;
        return l_result_0;
    end;
    v19.mountProxy = function(v32, ...)
        local v33 = os.clock();
        local v34 = debug.traceback();
        local v35 = {
            ...
        };
        local l_v19_2 = v19;
        l_v19_2.indent = l_v19_2.indent + 1;
        local v37;
        l_v19_2, v37 = pcall(function()
            return v32:__mountHidden(unpack(v35));
        end);
        if l_v19_2 then
            l_insert_0(v19.events, {
                depth = v19.indent,
                instance = v32,
                renderTime = v19.renderTimes[v19.indent] or 0,
                startTime = v33,
                endTime = os.clock(),
                isMount = true,
                updateTrace = v34
            });
        end;
        v19.renderTimes[v19.indent] = nil;
        local l_v19_3 = v19;
        l_v19_3.indent = l_v19_3.indent - 1;
        if l_v19_2 then
            return v37;
        else
            warn("Mount error during profiling", v37);
            return false;
        end;
    end;
    v19.renderProxy = function(v39, ...)
        local v40 = os.clock();
        local v41 = {
            ...
        };
        local l_status_1, l_result_1 = pcall(function()
            return v39:__renderHidden(unpack(v41));
        end);
        if l_status_1 then
            v19.renderTimes[v19.indent] = (v19.renderTimes[v19.indent] or 0) + (os.clock() - v40) * 1000;
        end;
        if l_status_1 then
            return l_result_1;
        else
            warn("Render error during profiling", l_result_1);
            return false;
        end;
    end;
    return v19;
end);
v44.getRootNode = function(v45)
    return v12(v45.tree, "InternalData").rootNode;
end;
v44.sortData = function(v46, v47, v48, v49)
    v46[v47].sortIndex = v48;
    v46[v47].sortOrder = v49;
end;
v44.getData = function(v50, v51, v52, v53, v54)
    v50:updateRows();
    local v55 = v50:getComponentRows();
    local v56 = l_slice_0(v50:getEventRows(), v53, v54);
    l_forEach_0(v56, function(v57)
        if not v57.log then
            v57.log = v13(v57.updateTrace);
        end;
    end);
    return {
        componentRows = l_slice_0(v55, v51, v52),
        eventRows = v56,
        rowCount = #v55,
        eventCount = v50.eventCount,
        instanceEventCount = #v50.selectedEvents
    };
end;
v44.updateRows = function(v58)
    l_forEach_0(v58.events, function(v59)
        local v60 = v58.instanceIndices[v59.instance];
        if not v58.instanceIndices[v59.instance] then
            v60 = v58.nextInstanceIndex;
            v58.instanceIndices[v59.instance] = v58.nextInstanceIndex;
            local l_v58_0 = v58;
            l_v58_0.nextInstanceIndex = l_v58_0.nextInstanceIndex + 1;
        end;
        local v62 = v12(v59.instance, "InternalData");
        local v63 = v62 and v62.virtualNode;
        local v64 = v63 and v58.treeWatcher:getHostNode(v63);
        local v65 = v64 and v58.treeWatcher:getPath(v64.hostObject);
        local v66 = tostring(v60);
        local v67 = v58.rows[v66] or {
            instanceId = v66,
            count = 0,
            depth = v59.depth,
            path = v65,
            pathString = v65 and "Path: " .. l_concat_0(v65, "."),
            instanceName = v59.instance.__componentName,
            time = 0,
            renderTime = 0
        };
        v58.rows[v66] = v67;
        v67.count = v67.count + 1;
        if not v58.instanceEvents[v66] then
            v58.instanceEvents[v66] = {};
        end;
        l_insert_0(v58.instanceEvents[v66], v58:getEventInfo(v59));
        v67.time = v67.time + (v59.endTime - v59.startTime) * 1000;
        v67.renderTime = v67.renderTime + v59.renderTime;
    end, {});
    v58.eventCount = v58.eventCount + #v58.events;
    v58.events = {};
end;
v44.selectInstance = function(v68, v69)
    v68.selectedEvents = v68.instanceEvents[v69] or {};
end;
v44.getComponentRows = function(v70)
    local v71 = l_values_0(v70.rows);
    if not (not v70.filter and not v70.searchTerm) then
        v71 = l_filter_0(v71, function(v72)
            if not v70.searchTerm or v72.instanceName:lower():find(v70.searchTerm) then
                return not l_some_0(v70.filter, function(v73)
                    return v72.instanceName:find(v73);
                end);
            else
                return false;
            end;
        end);
    end;
    return v70:getSortedData(v71, v70.profileComponents);
end;
v44.getEventRows = function(v74)
    return v74:getSortedData(v74.selectedEvents, v74.profileEvents);
end;
v44.getSortedData = function(v75, v76, v77)
    if v77.sortIndex then
        l_sort_0(v76, function(v78, v79)
            local v80 = v77.columns[v77.sortIndex];
            if v75.profileComponents.sortOrder == Enum.SortDirection.Descending then
                return v78[v80] < v79[v80];
            else
                return v79[v80] < v78[v80];
            end;
        end);
    end;
    return v76;
end;
v44.getEventInfo = function(v81, v82)
    local v83 = "";
    local v84 = "";
    local v85 = "";
    if v82.isMount then
        v83 = "Mount";
    end;
    if v82.oldState then
        v83 = v83 .. "State";
        local v86, v87 = v81:getChangedKeys(v82.oldState, v82.newState);
        v84 = v86;
        v85 = v87;
    end;
    if v82.oldProps then
        v83 = v83 .. "Props";
        local v88, v89 = v81:getChangedKeys(v82.oldProps, v82.newProps);
        v84 = v88;
        v85 = v89;
    end;
    return {
        startTime = v82.startTime - v81.startTime,
        renderTime = v82.renderTime,
        time = (v82.endTime - v82.startTime) * 1000,
        cause = v83,
        updateTrace = v82.updateTrace,
        details = v84,
        detailsTip = v85
    };
end;
v44.getChangedKeys = function(_, v91, v92)
    local v93 = {};
    l_forEach_0(v91, function(v94, v95)
        if v94 ~= v92[v95] then
            v93[tostring(v95)] = true;
        end;
    end);
    l_forEach_0(v92, function(v96, v97)
        if v96 ~= v91[v97] then
            v93[tostring(v97)] = true;
        end;
    end);
    local v98 = l_keys_0(v93);
    local v99 = nil;
    if #v98 == 0 then
        v99 = "No values changed";
    else
        v99 = "";
        l_forEach_0(v98, function(v100)
            v99 = v99 .. ("%s: %s -> %s\n"):format(tostring(v100), tostring(v91[v100]), (tostring(v92[v100])));
        end);
    end;
    return l_concat_0(v98, ", "), v99;
end;
v44.clearData = function(v101)
    v101.events = {};
    v101.eventCount = 0;
    v101.nextInstanceIndex = 0;
    v101.instanceIndices = {};
    v101.renderTimes = {};
    v101.rows = {};
    v101.instanceEvents = {};
    v101.selectedEvents = {};
end;
v44.setActive = function(v102, v103)
    if v102.active == v103 then
        return ;
    else
        v102.active = v103;
        local v104 = v102:getRootNode();
        if not v103 then
            v102:stop(v104);
            return ;
        else
            v102.startTime = os.clock();
            v102:start(v104);
            return ;
        end;
    end;
end;
v44.start = function(v105, v106)
    assert(v105.createElementHidden == nil, "Roact Profiler already started");
    v105.createElementHidden = v105.roact.createElement;
    v105.roact.createElement = function(v107, ...)
        return v105.createElementHidden(v105:registerComponent(v107), ...);
    end;
    v105:registerNode(v106);
end;
v44.registerNode = function(v108, v109)
    v108:registerComponent(v109.currentElement and v109.currentElement.component);
    l_forEach_0(v109.children, function(v110)
        v108:registerNode(v110);
    end);
end;
v44.registerComponent = function(v111, v112)
    if not v111.registeredComponents[v112] then
        if typeof(v112) == "table" then
            v111:registerComponentClass(v112);
        elseif typeof(v112) == "function" then
            v111:registerComponentFn(v112);
        else
            return v112;
        end;
    end;
    return v111.registeredComponents[v112];
end;
v44.registerComponentClass = function(v113, v114)
    v113.registeredComponents[v114] = v114;
    v114.__resolveUpdateHidden = v114.__resolveUpdate;
    v114.__resolveUpdate = v113.resolveUpdateProxy;
    v114.__mountHidden = v114.__mount;
    v114.__mount = v113.mountProxy;
    v114.__renderHidden = v114.render;
    v114.render = v113.renderProxy;
end;
v44.registerComponentFn = function(v115, v116)
    local function v121(...)
        local v117 = os.clock();
        local v118 = {
            ...
        };
        local l_status_2, l_result_2 = pcall(function()
            return v116(unpack(v118));
        end);
        if l_status_2 then
            v115.renderTimes[v115.indent] = (v115.renderTimes[v115.indent] or 0) + (os.clock() - v117) * 1000;
            return l_result_2;
        else
            warn("Render fn error during profiling", l_result_2);
            return false;
        end;
    end;
    v115.registeredComponents[v116] = v121;
    v115.registeredComponents[v121] = v121;
    v115.registeredFnProxies[v121] = v116;
end;
v44.setFilter = function(v122, v123)
    v122.filter = v123;
end;
v44.setSearchTerm = function(v124, v125)
    v124.searchTerm = v125:lower();
end;
v44.stop = function(v126, v127)
    v126.roact.createElement = v126.createElementHidden;
    v126.createElementHidden = nil;
    l_forEach_0(v126.registeredComponents, function(_, v129)
        if typeof(v129) == "table" then
            v129.__mount = v129.__mountHidden;
            v129.__mountHidden = nil;
            v129.__resolveUpdate = v129.__resolveUpdateHidden;
            v129.__resolveUpdateHidden = nil;
            v129.render = v129.__renderHidden;
            v129.__renderHidden = nil;
        end;
    end);
    v126:unregisterNode(v127);
    v126.registeredComponents = {};
    v126.registeredFnProxies = {};
    v126.componentIds = {};
end;
v44.destroy = function(v130)
    v130:setActive(false);
    v130:clearData();
end;
v44.unregisterNode = function(v131, v132)
    local v133 = v132.currentElement and v132.currentElement.component;
    if v131.registeredFnProxies[v133] then
        v132.currentElement.component = v131.registeredFnProxies[v133];
    end;
    l_forEach_0(v132.children, function(v134)
        v131:unregisterNode(v134);
    end);
end;
return v44;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.RoactInspector.Utils.getSymbol);
local v3 = require(l_Parent_0.RoactInspector.Utils.getChildAtKey);
local v4 = require(l_Parent_1.Dash);
local l_append_0 = v4.append;
local l_class_0 = v4.class;
local l_collectArray_0 = v4.collectArray;
local l_pick_0 = v4.pick;
local l_keys_0 = v4.keys;
local l_last_0 = v4.last;
local l_map_0 = v4.map;
local l_mapOne_0 = v4.mapOne;
local l_reduce_0 = v4.reduce;
local l_reverse_0 = v4.reverse;
local l_slice_0 = v4.slice;
local l_insert_0 = table.insert;
local v20 = l_class_0("RoactTreeWatcher", function(v17, v18, v19)
    return {
        debugInterface = v17,
        tree = v18,
        onPathChanged = v19,
        cachedRoot = {
            branchData = {},
            childNodes = {}
        }
    };
end);
v20._init = function(v21)
    v21.onPoll = function()
        if v21.tree then
            v21:_checkNodes();
            delay(0.25, v21.onPoll);
        end;
    end;
end;
v20.getRootNode = function(v22)
    return v2(v22.tree, "InternalData").rootNode;
end;
v20.monitor = function(v23)
    spawn(v23.onPoll);
end;
v20._checkNodes = function(v24)
    v24:_checkNode(v24:getRootNode(), v24.cachedRoot, {});
end;
v20._checkNode = function(v25, v26, v27, v28)
    local v33 = l_collectArray_0(v25:_getBranchNodes(v26), function(v29, v30)
        local v31 = v27.branchData[v29];
        local v32 = v30.instance or v30.currentElement;
        if not (v31 and v32.props == v31.props) or v32.state ~= v31.state then
            v27.branchData[v29] = {
                props = v32.props,
                state = v32.state
            };
            return v29;
        else
            return nil;
        end;
    end);
    if #v33 > 0 then
        v25.onPathChanged(v28, v33);
    end;
    local v34 = v25:getHostNode(v26);
    v27.childNodes = l_pick_0(v27.childNodes, function(v35, v36)
        local v37 = l_append_0({}, v28, {
            v36
        });
        local v38 = v3(v34.children, v36);
        if not v38 then
            return false;
        else
            v25:_checkNode(v38, v35, v37);
            return true;
        end;
    end);
end;
v20.getNode = function(v39, v40)
    return l_reduce_0(v40, function(v41, v42)
        if not v41 or not v41.children then
            return nil;
        else
            local v43 = v3(v41.children, v42);
            return not not v43 and v39:getHostNode(v43) or nil;
        end;
    end, (v39:getHostNode((v39:getRootNode()))));
end;
v20.watchPath = function(v44, v45)
    local v46 = v44:getRootNode();
    local l_cachedRoot_0 = v44.cachedRoot;
    l_cachedRoot_0.branchData = v44:_getBranchData(v46);
    l_reduce_0(v45, function(v48, v49)
        if v48 then
            l_cachedRoot_0.childNodes[v49] = l_cachedRoot_0.childNodes[v49] or {
                childNodes = {}
            };
            l_cachedRoot_0 = l_cachedRoot_0.childNodes[v49];
            local v50 = v3(v48.children, v49);
            if v50 then
                l_cachedRoot_0.branchData = v44:_getBranchData(v50);
                return v44:getHostNode(v50);
            else
                return nil;
            end;
        else
            return nil;
        end;
    end, v44:getHostNode(v46));
end;
v20._getBranchData = function(v51, v52)
    return l_map_0(v51:_getBranchNodes(v52), function(v53)
        local v54 = v53.instance or v53.currentElement;
        return {
            props = v54.props,
            state = v54.state
        };
    end);
end;
v20.getChildren = function(v55, v56, v57, v58)
    if v58 == 0 then
        return nil;
    else
        local v59 = v55:getHostNode(v57);
        if v59 then
            return (l_map_0(v59.children, function(v60, v61)
                local v62 = l_append_0({}, v56, {
                    v61
                });
                local l_hostObject_0 = v55:getHostNode(v60).hostObject;
                return {
                    Name = typeof(v61) == "number" and v61 or tostring(v61),
                    Icon = not not l_hostObject_0 and l_hostObject_0.ClassName or "Branch",
                    Children = v55:getChildren(v62, v60, v58 - 1),
                    Path = v62
                };
            end));
        else
            return nil;
        end;
    end;
end;
v20.getHostNode = function(v64, v65, v66)
    local v67 = v2(v65.children, "UseParentKey");
    while v67 do
        v65 = v67;
        v67 = v2(v65.children, "UseParentKey");
        if not (v67 or not v66) then
            if not v64:isFragment(v65) then
                if v64:isPortal(v65) then
                    v67 = l_mapOne_0(v65.children);
                end;
            else
                v67 = v65.children[1];
            end;
        end;
    end;
    return v65;
end;
v20.getRootPath = function(v68)
    local v69 = v2(v68:getRootNode().children, "UseParentKey");
    local v70 = {};
    while v69 do
        local l_v69_0 = v69;
        v69 = v2(l_v69_0.children, "UseParentKey");
        if not v69 then
            if not v68:isFragment(l_v69_0) then
                if v68:isPortal(l_v69_0) then
                    local v72 = l_keys_0(l_v69_0.children);
                    l_insert_0(v70, v72[1]);
                    v69 = l_v69_0.children[v72[1]];
                end;
            else
                v69 = l_v69_0.children[1];
                l_insert_0(v70, 1);
            end;
        end;
    end;
    return l_slice_0(v70, 0, -1);
end;
v20.isFragment = function(_, v74)
    return v74.currentElement and v74.currentElement.elements;
end;
v20.isPortal = function(_, v76)
    return v76.currentElement and tostring(v76.currentElement.component) == "Symbol(Portal)";
end;
v20.isFunction = function(_, v78)
    return v78.currentElement and typeof(v78.currentElement.component) == "function";
end;
v20.isHost = function(_, v80)
    return v80.currentElement and typeof(v80.currentElement.component) == "string";
end;
v20.getNodes = function(v81, v82)
    local v83 = l_slice_0(v82, 1, -1);
    local v84 = l_last_0(v82);
    local v85 = v81:getNode(v83);
    if v85 then
        return v81:_getBranchNodes((v3(v85.children, v84)));
    else
        return nil;
    end;
end;
v20._getBranchNodes = function(_, v87)
    local v88 = {};
    while v87 do
        l_insert_0(v88, v87);
        v87 = v2(v87.children, "UseParentKey");
    end;
    return v88;
end;
v20.getNodeName = function(v89, v90)
    if not v89:isFragment(v90) then
        if not v89:isPortal(v90) then
            if not v89:isFunction(v90) then
                if not v89:isHost(v90) then
                    return v90.currentElement.component.__componentName;
                else
                    return v90.currentElement.component;
                end;
            else
                return (tostring(v90.currentElement.component));
            end;
        else
            return "Portal";
        end;
    else
        return "Fragment";
    end;
end;
v20.getNodeIcon = function(v91, v92)
    if not v91:isFragment(v92) then
        if not v91:isPortal(v92) then
            if not v91:isFunction(v92) then
                if not v91:isHost(v92) then
                    local l___componentName_0 = v92.currentElement.component.__componentName;
                    if not l___componentName_0:find("Provider") then
                        if not l___componentName_0:find("Consumer") and not l___componentName_0:find("RoduxConnection") then
                            if not v92.currentElement.component.shouldUpdate then
                                return "Stateful";
                            else
                                return "Pure";
                            end;
                        else
                            return "Consumer";
                        end;
                    else
                        return "Provider";
                    end;
                else
                    return v92.hostObject.ClassName;
                end;
            else
                return "Functional";
            end;
        else
            return "Portal";
        end;
    else
        return "Fragment";
    end;
end;
v20.getPath = function(v94, v95)
    return (v94:_getFullPath((v94:_getInstancePath(v95))));
end;
v20._getInstancePath = function(v96, v97)
    local v98 = {};
    while v97 and v97 ~= v96.debugInterface.rootInstance do
        l_insert_0(v98, tonumber(v97.Name) or v97.Name);
        v97 = v97.Parent;
    end;
    local v99 = l_append_0({}, v96.debugInterface.rootPath or v96:getRootPath(), l_reverse_0(v98));
    if not v96.debugInterface.rootPrefix then
        return v99;
    else
        return (l_slice_0(v99, #v96.debugInterface.rootPrefix + 1));
    end;
end;
v20._getFullPath = function(v100, v101)
    local v102 = {};
    if l_reduce_0(v101, function(v103, v104)
        return v100:_dfsFindNextChildNode(v103, v104, v102);
    end, (v100:getHostNode((v100:getRootNode())))) ~= nil then
        return v102;
    else
        return v101;
    end;
end;
v20._dfsFindNextChildNode = function(v105, v106, v107, v108)
    if not (v106 ~= nil) or v106.children == nil then
        return nil;
    else
        local v109 = v3(v106.children, v107);
        if v109 then
            local v110 = v105:getHostNode(v109);
            if v110 ~= nil then
                l_insert_0(v108, v107);
                return v110;
            end;
        end;
        for v111, v112 in pairs(v106.children) do
            local v113 = tostring(v111) == "Symbol(UseParentKey)";
            if not v113 then
                l_insert_0(v108, v111);
            end;
            local v114 = v105:_dfsFindNextChildNode(v112, v107, v108);
            if v114 ~= nil then
                return v114;
            elseif not v113 then
                table.remove(v108);
            end;
        end;
        return nil;
    end;
end;
v20.destroy = function(v115)
    v115.tree = nil;
end;
return v20;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.RoactInspector.Utils.getSymbol);
local l_startsWith_0 = require(l_Parent_1.Dash).startsWith;
return function(v4, v5)
    if v4 == nil then
        return nil;
    else
        local v6 = v4[v5];
        if v6 == nil and typeof(v5) == "number" then
            v6 = v4[tostring(v5)];
        end;
        if not (not (v6 == nil and typeof(v5) == "string") or not l_startsWith_0(v5, "Symbol(")) then
            v6 = v2(v4, (v5:sub(8, -2)));
        end;
        return v6;
    end;
end;


local v0 = {};
return function(v1, v2)
    if v0[v2] and v1[v0[v2]] ~= nil then
        return v1[v0[v2]];
    else
        for v3, v4 in pairs(v1) do
            if tostring(v3) == "Symbol(" .. v2 .. ")" then
                v0[v2] = v3;
                return v4;
            end;
        end;
        return nil;
    end;
end;


local v0 = require(script.Parent.Parent.Parent.Parent.Dash);
local l_some_0 = v0.some;
local l_collectArray_0 = v0.collectArray;
local l_forEach_0 = v0.forEach;
local l_endsWith_0 = v0.endsWith;
local l_concat_0 = table.concat;
local v6 = {
    "RoactInspector%.Classes",
    "Roact%.createReconciler",
    "Roact%.Component",
    "Roact%.SingleEventManager",
    "Roact%.RobloxRenderer",
    "Libs%.RoactRodux",
    "Rodux%.Signal",
    "Rodux%.Store"
};
return function(v7)
    local v8 = v7:split("\n");
    local v9 = 0;
    l_forEach_0(v8, function(v10)
        if not (not v10:match("Roact.Component") or not l_endsWith_0(v10, "function __update")) then
            v9 = v9 + 1;
        end;
    end);
    local v15 = l_concat_0(l_collectArray_0(v8, function(_, v12)
        local v14 = l_some_0(v6, function(v13)
            return v12:match(v13);
        end);
        if v14 then
            if not v12:match("Roact%.Component") or not l_endsWith_0(v12, "function setState") then
                if not v12:match("RoactRodux%.connect") then
                    if v12:match("Roact%.SingleEventManager") then
                        return "Roact event";
                    end;
                else
                    return "Rodux Store updated";
                end;
            else
                return "Roact.Component setState";
            end;
        end;
        return not v14 and v12 or nil;
    end), "\n");
    if v9 > 0 then
        return ("Update chain: %d component(s)\nTrigger:\n%s"):format(v9, v15);
    else
        return v15;
    end;
end;


local v1 = {
    isRunningUnderCLI = function()
        local l_RunningUnderCLI_0 = script.Parent:FindFirstChild("RunningUnderCLI");
        return not not l_RunningUnderCLI_0 and (l_RunningUnderCLI_0.Value or false);
    end
};
v1.getStudioService = function()
    return not not v1.isRunningUnderCLI() and Instance.new("Frame") or game:GetService("StudioService");
end;
v1.getCoreGui = function()
    return not not v1.isRunningUnderCLI() and Instance.new("Frame") or game:GetService("CoreGui");
end;
v1.getRobloxPluginGuiService = function()
    return not not v1.isRunningUnderCLI() and Instance.new("Frame") or game:GetService("RobloxPluginGuiService");
end;
return v1;


local v0 = require(script.Classes.PluginDebugInterface);
local v1 = require(script.Classes.CoreGuiDebugInterface);
local v2 = require(script.Classes.StandalonePluginDebugInterface);
local v3 = require(script.Classes.LibraryDebugInterface);
local v4 = require(script.Classes.InspectorDebugInterface);
return {
    forPlugin = function(v5, v6)
        assert(typeof(v5) == "string", ("%s must be a string, did you write DeveloperTools:%s() instead of DeveloperTools.%s() by mistake?"):format(v5, "forPlugin", "forPlugin"));
        assert(v6, "DeveloperTools:forPlugin() expected plugin for argument #2");
        return v0.new(v5, v6);
    end,
    forStandalonePlugin = function(v7, v8, v9)
        assert(typeof(v7) == "string", ("%s must be a string, did you write DeveloperTools:%s() instead of DeveloperTools.%s() by mistake?"):format(v7, "forStandalonePlugin", "forStandalonePlugin"));
        assert(v8, "DeveloperTools:forStandalonePlugin() expected plugin for argument #2");
        return v2.new(v7, v8, v9);
    end,
    forCoreGui = function(v10, v11)
        assert(typeof(v10) == "string", ("%s must be a string, did you write DeveloperTools:%s() instead of DeveloperTools.%s() by mistake?"):format(v10, "appName", "appName"));
        return v1.new(v10, v11);
    end,
    forLibrary = function(v12, v13)
        assert(typeof(v12) == "string", ("%s must be a string, did you write DeveloperTools:%s() instead of DeveloperTools.%s() by mistake?"):format(v12, "libraryName", "libraryName"));
        return v3.new(v12, v13);
    end,
    forInspector = function(v14)
        return v4.new(v14);
    end,
    RoactInspectorApi = require(script.RoactInspector.Classes.RoactInspectorApi)
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local l_instanceof_0 = v1.instanceof;
local v5 = {};
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local l_RobloxInstance_0 = require(l_Parent_0.RobloxShared).RobloxInstance;
local l_getRobloxProperties_0 = l_RobloxInstance_0.getRobloxProperties;
local l_InstanceSubset_0 = l_RobloxInstance_0.InstanceSubset;
local function v25(v10, v11, v12, v13, v14, v15, v16)
    local v17 = v16 or ": ";
    local v18 = "";
    local v21 = l_Array_0.sort(l_Object_0.keys(v10), if v11.compareKeys ~= nil and v11.compareKeys ~= l_Object_0.None then v11.compareKeys else function(v19, v20)
        if type(v19) .. tostring(v19) < type(v20) .. tostring(v20) then
            return -1;
        elseif type(v19) .. tostring(v19) == type(v20) .. tostring(v20) then
            return 0;
        else
            return 1;
        end;
    end);
    if #v21 > 0 then
        v18 = v18 .. v11.spacingOuter;
        local v22 = v12 .. v11.indent;
        for v23 = 1, #v21 do
            local v24 = v21[v23];
            v18 = v18 .. v22 .. v15(v24, v11, v22, v13, v14) .. v17 .. v15(v10[v24], v11, v22, v13, v14);
            if v23 < #v21 then
                v18 = v18 .. "," .. v11.spacingInner;
            elseif not v11.min then
                v18 = v18 .. ",";
            end;
        end;
        v18 = v18 .. v11.spacingOuter .. v12;
    end;
    return v18;
end;
local function v49(v26, v27, v28, v29, v30, v31, v32)
    local v33 = "";
    local l_v26_Children_0 = v26:GetChildren();
    table.sort(l_v26_Children_0, function(v35, v36)
        return v35.Name < v36.Name;
    end);
    local v37 = l_getRobloxProperties_0(v26.ClassName);
    if not (#v37 <= 0) or #l_v26_Children_0 > 0 then
        v33 = v33 .. v27.spacingOuter;
        local v38 = v28 .. v27.indent;
        local v39 = nil;
        for _, v41 in ipairs(v37) do
            v39 = v26[v41];
        end;
        v39 = nil;
        for v42, v43 in ipairs(v37) do
            local v44 = v31(v43, v27, v38, v29, v30);
            local v45 = v26[v43];
            v33 = string.format("%s%s%s: %s", v33, v38, v44, if l_getType_0(v45) == "Instance" then v31(v45, v27, v38, math.huge, v30) else v31(v45, v27, v38, v29, v30));
            if not (v42 >= #v37) or #l_v26_Children_0 > 0 then
                v33 = v33 .. "," .. v27.spacingInner;
            elseif not v27.min then
                v33 = v33 .. ",";
            end;
        end;
        local v46 = l_Array_0.filter(l_v26_Children_0, v32);
        for v47, v48 in ipairs(v46) do
            v33 = string.format("%s%s%s: %s", v33, v38, v31(v48.Name, v27, v38, v29, v30), (v31(v48, v27, v38, v29, v30)));
            if v47 < #v46 then
                v33 = v33 .. "," .. v27.spacingInner;
            elseif not v27.min then
                v33 = v33 .. ",";
            end;
        end;
        v33 = v33 .. v27.spacingOuter .. v28;
    end;
    return v33;
end;
local function _(v50)
    return function(v51, v52, v53, v54, v55, v56)
        v54 = v54 + 1;
        if v52.maxDepth <= v54 then
            return string.format("\"%s\" [%s]", v51.Name, v51.ClassName);
        elseif not l_instanceof_0(v51, l_InstanceSubset_0) then
            return v51.ClassName .. " {" .. v49(v51, v52, v53, v54, v55, v56, v50) .. "}";
        else
            return v51.ClassName .. " {" .. v25(v51.subset, v52, v53, v54, v55, v56) .. "}";
        end;
    end;
end;
local function v60(v58)
    local v59 = true;
    if l_getType_0(v58) ~= "Instance" then
        v59 = l_instanceof_0(v58, l_InstanceSubset_0);
    end;
    return v59;
end;
v5.default = function(v61)
    return {
        test = v60,
        serialize = function(v62, v63, v64, v65, v66, v67)
            v65 = v65 + 1;
            if v63.maxDepth <= v65 then
                return string.format("\"%s\" [%s]", v62.Name, v62.ClassName);
            elseif not l_instanceof_0(v62, l_InstanceSubset_0) then
                return v62.ClassName .. " {" .. v49(v62, v63, v64, v65, v66, v67, v61) .. "}";
            else
                return v62.ClassName .. " {" .. v25(v62.subset, v63, v64, v65, v66, v67) .. "}";
            end;
        end
    };
end;
return v5;


local v0 = {};
return {
    getIgnore = function()
        return v0;
    end,
    setIgnore = function(v1)
        v0 = v1;
    end
};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Boolean_0 = v0.Boolean;
local l_Error_0 = v0.Error;
local l_Object_0 = v0.Object;
local v5 = require(script.Parent["config-default-ignore"]);
local v6 = {};
local _ = require(script.Parent.types.config);
local l_prettyDOM_0 = require(script.Parent["pretty-dom"]).prettyDOM;
local v15 = {
    testIdAttribute = "data-testid",
    asyncUtilTimeout = 1000,
    asyncWrapper = function(v9)
        return v9();
    end,
    unstable_advanceTimersWrapper = function(v10)
        return v10();
    end,
    eventWrapper = function(v11)
        return v11();
    end,
    defaultHidden = false,
    defaultIgnore = v5.getIgnore(),
    showOriginalStackTrace = false,
    throwSuggestions = false,
    getElementError = function(v12, v13)
        local v14 = l_Error_0.new(l_Array_0.join(l_Array_0.filter({
            v12,
            (l_prettyDOM_0(v13))
        }, l_Boolean_0.toJSBoolean), "\n\n"));
        v14.name = "TestingLibraryElementError";
        return v14;
    end,
    _disableExpensiveErrorDiagnostics = false,
    computedStyleSupportsPseudoElements = false
};
v6.runWithExpensiveErrorDiagnosticsDisabled = function(v16)
    local l_status_0, l_result_0 = pcall(function()
        v15._disableExpensiveErrorDiagnostics = true;
        return v16();
    end);
    v15._disableExpensiveErrorDiagnostics = false;
    if not l_status_0 then
        error(l_result_0);
    end;
    return l_result_0;
end;
v6.configure = function(v19)
    if typeof(v19) == "function" then
        v19 = v19(v15);
    end;
    if v19.defaultIgnore then
        v5.setIgnore(v19.defaultIgnore);
    end;
    v15 = l_Object_0.assign({}, l_Object_0.assign(v15, {
        defaultIgnore = l_Object_0.None
    }), v19);
end;
v6.getConfig = function()
    return l_Object_0.assign({}, v15, {
        defaultIgnore = v5.getIgnore()
    });
end;
return v6;


return {
    eventMap = {
        copy = {
            EventType = "ClipboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        cut = {
            EventType = "ClipboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        paste = {
            EventType = "ClipboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        compositionEnd = {
            EventType = "CompositionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        compositionStart = {
            EventType = "CompositionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        compositionUpdate = {
            EventType = "CompositionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        keyDown = {
            EventType = "KeyboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                charCode = 0,
                composed = true
            }
        },
        keyPress = {
            EventType = "KeyboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                charCode = 0,
                composed = true
            }
        },
        keyUp = {
            EventType = "KeyboardEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                charCode = 0,
                composed = true
            }
        },
        focus = {
            EventType = "FocusEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false,
                composed = true
            }
        },
        blur = {
            EventType = "FocusEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false,
                composed = true
            }
        },
        focusIn = {
            EventType = "FocusEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        focusOut = {
            EventType = "FocusEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        change = {
            EventType = "Event",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        input = {
            EventType = "InputEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        invalid = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = true
            }
        },
        submit = {
            EventType = "Event",
            defaultInit = {
                bubbles = true,
                cancelable = true
            }
        },
        reset = {
            EventType = "Event",
            defaultInit = {
                bubbles = true,
                cancelable = true
            }
        },
        click = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                button = 0,
                composed = true
            }
        },
        contextMenu = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        dblClick = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        drag = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        dragEnd = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        dragEnter = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        dragExit = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        dragLeave = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        dragOver = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        dragStart = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        drop = {
            EventType = "DragEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        mouseDown = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        mouseEnter = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false,
                composed = true
            }
        },
        mouseLeave = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false,
                composed = true
            }
        },
        mouseMove = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        mouseOut = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        mouseOver = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        mouseUp = {
            EventType = "MouseEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        select = {
            EventType = "Event",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        touchCancel = {
            EventType = "TouchEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        touchEnd = {
            EventType = "TouchEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        touchMove = {
            EventType = "TouchEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        touchStart = {
            EventType = "TouchEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        resize = {
            EventType = "UIEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        scroll = {
            EventType = "UIEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        wheel = {
            EventType = "WheelEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        abort = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        canPlay = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        canPlayThrough = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        durationChange = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        emptied = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        encrypted = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        ended = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        loadedData = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        loadedMetadata = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        loadStart = {
            EventType = "ProgressEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        pause = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        play = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        playing = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        progress = {
            EventType = "ProgressEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        rateChange = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        seeked = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        seeking = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        stalled = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        suspend = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        timeUpdate = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        volumeChange = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        waiting = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        load = {
            EventType = "UIEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        error = {
            EventType = "Event",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        animationStart = {
            EventType = "AnimationEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        animationEnd = {
            EventType = "AnimationEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        animationIteration = {
            EventType = "AnimationEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        transitionCancel = {
            EventType = "TransitionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        transitionEnd = {
            EventType = "TransitionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true
            }
        },
        transitionRun = {
            EventType = "TransitionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        transitionStart = {
            EventType = "TransitionEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        },
        pointerOver = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        pointerEnter = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        pointerDown = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        pointerMove = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        pointerUp = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        pointerCancel = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        pointerOut = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = true,
                composed = true
            }
        },
        pointerLeave = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = false,
                cancelable = false
            }
        },
        gotPointerCapture = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        lostPointerCapture = {
            EventType = "PointerEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false,
                composed = true
            }
        },
        popState = {
            EventType = "PopStateEvent",
            defaultInit = {
                bubbles = true,
                cancelable = false
            }
        }
    },
    eventAliasMap = {
        doubleClick = "dblClick"
    }
};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Error_0 = v0.Error;
local l_Object_0 = v0.Object;
local v4 = require(script.Parent.jsHelpers.dispatchEvent);
local v5 = {};
local l_getConfig_0 = require(script.Parent.config).getConfig;
local _ = require(script.Parent.helpers).getWindowFromNode;
local v8 = require(script.Parent["event-map"]);
local l_eventMap_0 = v8.eventMap;
local _ = v8.eventAliasMap;
local v15 = setmetatable({}, {
    __call = function(_, v12, v13, v14)
        return l_getConfig_0().eventWrapper(function()
            if not v13 then
                error(l_Error_0.new("Unable to fire an event - please provide an event object."));
            end;
            if not v12 then
                error(l_Error_0.new(("Unable to fire a \"%s\" event - please provide an Instance."):format(v13)));
            end;
            return v4(v12, v13, v14);
        end);
    end
});
l_Array_0.forEach(l_Object_0.keys(l_eventMap_0), function(v16)
    v15[v16] = function(v17, v18)
        return v15(v17, v16, v18);
    end;
end);
v5.fireEvent = v15;
return v5;


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_String_0 = v0.String;
local l_getConfig_0 = require(script.Parent.config).getConfig;
return {
    getNodeTestId = function(v4)
        local l_Tags_0 = game:GetService("CollectionService"):GetTags(v4);
        if #l_Tags_0 == 0 then
            return nil;
        else
            local v7 = l_Array_0.filter(l_Tags_0, function(v6)
                return l_String_0.startsWith(v6, l_getConfig_0().testIdAttribute);
            end);
            if #v7 == 0 then
                return nil;
            else
                if #v7 > 1 then
                    error("Instance has multiple TestId tags set");
                end;
                return l_String_0.split(v7[1], l_getConfig_0().testIdAttribute .. "=")[2];
            end;
        end;
    end
};


local v0 = {};
local function v2(v1)
    return v1.Text;
end;
local function _(v3)
    if not pcall(v2, v3) or v3:IsA("TextBox") then
        return "";
    else
        return v3.Text;
    end;
end;
v0.getNodeText = function(v5)
    if not pcall(v2, v5) or v5:IsA("TextBox") then
        return "";
    else
        return v5.Text;
    end;
end;
return v0;


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Object_0 = v0.Object;
local v3 = {};
local v4 = require(script.Parent.queries);
v3.getQueriesForElement = function(v5, v6, v7)
    local v8 = if v6 == nil then v4 else v6;
    return (l_Array_0.reduce(l_Object_0.keys(v8), function(v9, v10)
        local v11 = v8[v10];
        v9[v10] = function(...)
            return v11(v5, ...);
        end;
        return v9;
    end, if v7 == nil then {} else v7));
end;
return v3;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = {};
local v5 = require(l_Parent_0.Chalk);
local v6 = require(script.Parent.jsHelpers.fs);
local l_codeFrameColumns_0 = require(script.Parent.jsHelpers["babel-code-frame"]).codeFrameColumns;
local function v18(v8)
    local v9, v10 = string.find(v8, "%s+");
    local v11 = if v9 then v10 + 1 else 1;
    local v12 = string.sub(v8, v11, (string.find(v8:sub(v11), " ") or #v8 + 1) - 1);
    local v13 = v12:split(":");
    local v14 = v13[1];
    local v15 = tonumber(v13[2], 10);
    local v16 = tonumber(v13[3], 10);
    local v17 = "";
    if pcall(function()
        v17 = v6.readFileSync(v14);
    end) then
        return ("%s\n%s\n"):format(v5.dim(v12), (l_codeFrameColumns_0(v17, {
            start = {
                line = v15,
                column = v16
            }
        }, {
            highlightCode = true,
            linesBelow = 0
        })));
    else
        return "";
    end;
end;
v4.getUserCodeFrame = function()
    if v6.readFileSync and l_Boolean_0.toJSBoolean(l_codeFrameColumns_0) then
        return v18((l_Array_0.find(l_Array_0.slice((v1.Error.new().stack or ""):split("\n"), 2), function(v19)
            return not v19:find("Packages%._Index");
        end)));
    else
        return "";
    end;
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local v5 = require(script.Parent.jsHelpers.typeError);
local v6 = require(script.Parent.jsHelpers.document);
local v7 = {};
local function v9()
    local l_jest_0 = require(l_Parent_0.JestGlobals).jest;
    if l_jest_0 ~= nil then
        return (pcall(l_jest_0.getTimerCount));
    else
        return false;
    end;
end;
local function v10()
    return v6;
end;
local function v12(v11)
    if not l_Boolean_0.toJSBoolean(v11.defaultView) then
        if not l_Boolean_0.toJSBoolean(v11.ownerDocument) or not l_Boolean_0.toJSBoolean(v11.ownerDocument.defaultView) then
            if not l_Boolean_0.toJSBoolean(v11.window) then
                if not l_Boolean_0.toJSBoolean(v11.ownerDocument) or not l_Boolean_0.toJSBoolean(v11.ownerDocument.defaultView == nil) then
                    if typeof(v11.andThen) == "function" then
                        error(l_Error_0.new("It looks like you passed a Promise object instead of a DOM node. Did you do something like `fireEvent.click(screen.findBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`, or await the findBy query `fireEvent.click(await screen.findBy...`?"));
                        return ;
                    elseif not l_Array_0.isArray(v11) then
                        if typeof(v11.debug) == "function" and typeof(v11.logTestingPlaygroundURL) == "function" then
                            error(l_Error_0.new("It looks like you passed a `screen` object. Did you do something like `fireEvent.click(screen, ...` when you meant to use a query, e.g. `fireEvent.click(screen.getBy..., `?"));
                            return ;
                        else
                            error(l_Error_0.new(("The given node is not an Element, the node type is: %s."):format((typeof(v11)))));
                            return ;
                        end;
                    else
                        error(l_Error_0.new("It looks like you passed an Array instead of a DOM node. Did you do something like `fireEvent.click(screen.getAllBy...` when you meant to use a `getBy` query `fireEvent.click(screen.getBy...`?"));
                        return ;
                    end;
                else
                    error(l_Error_0.new("It looks like the window object is not available for the provided node."));
                    return ;
                end;
            else
                return v11.window;
            end;
        else
            return v11.ownerDocument.defaultView;
        end;
    else
        return v11.defaultView;
    end;
end;
local function v16(v13)
    local function _(v14)
        return (typeof(v14));
    end;
    if not v13 or typeof(v13.GetChildren) ~= "function" then
        error(v5.new(("Expected container to be an Element, a Document or a DocumentFragment but got %s."):format((typeof(v13)))));
    end;
end;
v7.getWindowFromNode = v12;
v7.getDocument = v10;
v7.checkContainerType = v16;
v7.jestFakeTimersAreEnabled = v9;
v7.TEXT_NODE = 3;
return v7;


local l_Object_0 = require(script.Parent.LuauPolyfill).Object;
local v1 = {};
local l_getQueriesForElement_0 = require(script["get-queries-for-element"]).getQueriesForElement;
local v3 = require(script.queries);
local v4 = require(script["query-helpers"]);
l_Object_0.assign(v1, require(script.queries));
l_Object_0.assign(v1, require(script["wait-for"]));
l_Object_0.assign(v1, require(script["wait-for-element-to-be-removed"]));
v1.getDefaultNormalizer = require(script.matches).getDefaultNormalizer;
l_Object_0.assign(v1, require(script["get-node-text"]));
l_Object_0.assign(v1, require(script.events));
l_Object_0.assign(v1, require(script["get-queries-for-element"]));
l_Object_0.assign(v1, require(script.screen));
l_Object_0.assign(v1, require(script["query-helpers"]));
l_Object_0.assign(v1, require(script["pretty-dom"]));
local v5 = require(script.config);
v1.configure = v5.configure;
v1.getConfig = v5.getConfig;
l_Object_0.assign(v1, require(script.suggestions));
v1.within = l_getQueriesForElement_0;
v1.queries = v3;
v1.queryHelpers = v4;
v1.document = require(script.jsHelpers.document);
local _ = require(script.types);
return v1;


return {
    displayName = "Jest",
    setupFilesAfterEnv = {
        script.Parent.Parent.TestsSetup["setup-env"]
    },
    testMatch = {
        "**/__tests__/**/*.spec"
    }
};


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Object_0 = v1.Object;
local l_String_0 = v1.String;
local l_console_0 = v1.console;
local v8 = {};
local function v9(...)
    return require(l_Parent_0.Chalk);
end;
local v10 = false;
local function _(v11)
    return {
        gutter = v11.grey,
        marker = v11.red.bold,
        message = v11.red.bold
    };
end;
local v13 = {
    "\r\n",
    "\n",
    "\r",
    "\2028",
    "\2029"
};
local function v32(v14, v15, v16)
    local v17 = l_Object_0.assign({}, {
        column = 1,
        line = 0
    }, v14.start);
    local v18 = l_Object_0.assign({}, v17, v14["end"]);
    local v19 = v16 or {};
    local v20 = v19.linesAbove == nil and 2 or v19.linesAbove;
    local v21 = v19.linesBelow == nil and 3 or v19.linesBelow;
    local l_line_0 = v17.line;
    local l_column_0 = v17.column;
    local l_line_1 = v18.line;
    local l_column_1 = v18.column;
    local v26 = math.max(l_line_0 - v20, 1);
    local v27 = math.min(#v15 == 0 and 1 or #v15, l_line_1 + v21);
    if l_line_0 == 0 then
        v26 = 1;
    end;
    if l_line_1 == 0 then
        v27 = #v15 == 0 and 1 or #v15;
    end;
    local v28 = l_line_1 - l_line_0;
    local v29 = {};
    if v28 > 0 then
        for v30 = 0, v28 do
            local v31 = v30 + l_line_0;
            if l_column_0 <= 1 then
                v29[v31] = true;
            elseif v30 == 0 then
                v29[v31] = {
                    l_column_0,
                    (#v15[v31] - l_column_0) + 1
                };
            elseif v30 == v28 then
                v29[v31] = {
                    1,
                    l_column_1
                };
            else
                v29[v31] = {
                    1,
                    #v15[v31]
                };
            end;
        end;
    elseif l_column_0 == l_column_1 then
        if l_column_0 > 1 then
            v29[l_line_0] = {
                l_column_0,
                1
            };
        else
            v29[l_line_0] = true;
        end;
    else
        v29[l_line_0] = {
            l_column_0,
            l_column_1 - l_column_0
        };
    end;
    return {
        start = v26,
        ["end"] = v27,
        markerLines = v29
    };
end;
local function v73(v33, v34, v35)
    local v36 = v35 or {};
    local v37 = v9(v36);
    local v38 = {
        gutter = v37.grey,
        marker = v37.red.bold,
        message = v37.red.bold
    };
    local _ = function(_, v40)
        return v40;
    end;
    local v42 = v32(v34, l_String_0.split(v33, v13), v36);
    local l_start_0 = v42.start;
    local v44 = v42["end"];
    local l_markerLines_0 = v42.markerLines;
    local v46 = if not l_Boolean_0.toJSBoolean(v34.start) then v34.start else typeof(v34.start.column) == "number";
    local v47 = #tostring(v44);
    local v72 = l_Array_0.join(l_Array_0.map(l_Array_0.slice(l_String_0.split(v33, v13, v44), l_start_0, v44 + 1), function(v48, v49)
        local v50 = (l_start_0 + v49) - 1;
        local v51 = (" %s |"):format((string.sub((" %s"):format((tostring(v50))), -v47)));
        local v52 = l_markerLines_0[v50];
        local v53 = not l_Boolean_0.toJSBoolean(l_markerLines_0[v50 + 1]);
        if not l_Boolean_0.toJSBoolean(v52) then
            local v54 = " %s%s";
            local _ = v38.gutter;
            return v54:format(v51, if #v48 > 0 then (" %s"):format(v48) else "");
        else
            local v56 = "";
            if l_Array_0.isArray(v52) then
                local v57 = string.sub(v48, 1, (math.max(v52[1] - 1, 0))):gsub("[^\t]", " ");
                local v58 = if v52[2] > 1 then v52[2] else 1;
                local l_join_0 = l_Array_0.join;
                local v60 = {};
                local v61 = "\n ";
                local l_gutter_1 = v38.gutter;
                local v63 = ({
                    v51:gsub("%d", " ")
                })[1];
                l_gutter_1 = " ";
                local l_v57_0 = v57;
                local _ = v38.marker;
                ??? = ("^"):rep(v58);
                setlist { ['R011[1 to ???]'] = 'R012 to ???' };
                v56 = l_join_0(v60, "");
                if not (not v53 or not l_Boolean_0.toJSBoolean(v36.message)) then
                    l_join_0 = v56;
                    v60 = " ";
                    v63 = v38.message;
                    v56 = l_join_0 .. v60 .. v36.message;
                end;
            end;
            local l_join_1 = l_Array_0.join;
            local v67 = {};
            local l_marker_1 = v38.marker;
            local v69 = ">";
            local l_gutter_2 = v38.gutter;
            l_marker_1 = v51;
            l_gutter_2 = if #v48 > 0 then (" %s"):format(v48) else "";
            local l_v56_0 = v56;
            setlist { ['R009[1 to 4]'] = 'R010 to R013' };
            return l_join_1(v67, "");
        end;
    end), "\n");
    if not (not l_Boolean_0.toJSBoolean(v36.message) or v46) then
        v72 = ("%s%s\n%s"):format((" "):rep(v47 + 1), tostring(v36.message), v72);
    end;
    return v72;
end;
v8.codeFrameColumns = v73;
v8.default = function(v74, v75, v76, v77)
    if v77 == nil then
        v77 = {};
    end;
    if not v10 then
        v10 = true;
        l_Error_0.new("Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.").name = "DeprecationWarning";
        l_console_0.warn(l_Error_0.new("Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."));
    end;
    return v73(v74, {
        start = {
            column = math.max(v76 or 1, 1),
            line = v75
        }
    }, v77);
end;
return v8;


local l_Error_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Error;
local l_VirtualInputManager_0 = game:GetService("VirtualInputManager");
local function _(v2)
    local l_Parent_0 = v2.Parent;
    if l_Parent_0 == nil then
        return v2;
    else
        while l_Parent_0.Parent ~= nil and l_Parent_0.Parent.Parent ~= game do
            l_Parent_0 = l_Parent_0.Parent;
        end;
        return l_Parent_0;
    end;
end;
local function _(v5)
    return function(v6, v7)
        local l_v6_FirstAncestorOfClass_0 = v6:FindFirstAncestorOfClass("CoreGui");
        local l_v6_FirstAncestorOfClass_1 = v6:FindFirstAncestorOfClass("ScreenGui");
        local v10 = l_v6_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v11 = l_v6_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v12 = nil;
        local v13 = false;
        if not v11:FindFirstAncestorOfClass("CoreGui") and v11.Parent == nil then
            v11.Parent = v10;
            v13 = true;
        end;
        if not v6:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_1 = v6.Parent;
            if l_Parent_1 == nil then
                v12 = v6;
            else
                while l_Parent_1.Parent ~= nil and l_Parent_1.Parent.Parent ~= game do
                    l_Parent_1 = l_Parent_1.Parent;
                end;
                v12 = l_Parent_1;
            end;
            v12.Parent = v11;
        end;
        v5(v6, v7);
        if l_v6_FirstAncestorOfClass_1 ~= v11 then
            v12.Parent = nil;
            v11:Destroy();
        end;
        if not (not v11 or not v13) then
            v11.Parent = nil;
        end;
    end;
end;
local function _(v16)
    local l_AbsolutePosition_0 = v16.AbsolutePosition;
    local l_AbsoluteSize_0 = v16.AbsoluteSize;
    return l_AbsolutePosition_0.X + l_AbsoluteSize_0.X / 2, l_AbsolutePosition_0.Y + l_AbsoluteSize_0.Y / 2;
end;
local function v25(v20)
    local l_AbsolutePosition_1 = v20.AbsolutePosition;
    local l_AbsoluteSize_1 = v20.AbsoluteSize;
    local v23 = l_AbsolutePosition_1.X + l_AbsoluteSize_1.X / 2;
    local v24 = l_AbsolutePosition_1.Y + l_AbsoluteSize_1.Y / 2;
    l_VirtualInputManager_0:SendMouseButtonEvent(v23, v24, 0, true, nil, 1);
    l_VirtualInputManager_0:SendMouseButtonEvent(v23, v24, 0, false, nil, 1);
    l_VirtualInputManager_0:WaitForInputEventsProcessed();
end;
local function v28(_, v27)
    if not (v27 and v27.key) then
        error("No key set for event");
    end;
    l_VirtualInputManager_0:SendKeyEvent(true, v27.key, false, nil);
    l_VirtualInputManager_0:WaitForInputEventsProcessed();
end;
local function v31(_, v30)
    if not (v30 and v30.key) then
        error("No key set for event");
    end;
    l_VirtualInputManager_0:SendKeyEvent(false, v30.key, false, nil);
    l_VirtualInputManager_0:WaitForInputEventsProcessed();
end;
local function v36(v32, v33)
    if not v32:IsA("TextBox") then
        error(l_Error_0.new("The change event must be fired in a TextBox Instance"));
    elseif not (not v33 or not v33.target) then
        for v34, v35 in pairs(v33.target) do
            v32[v34] = v35;
        end;
        return ;
    end;
end;
local function v39(v37, v38)
    v37.Size = if not not v38 and v38.value then v38.value else v37.Size;
end;
local v85 = {
    click = function(v40, v41)
        local l_v40_FirstAncestorOfClass_0 = v40:FindFirstAncestorOfClass("CoreGui");
        local l_v40_FirstAncestorOfClass_1 = v40:FindFirstAncestorOfClass("ScreenGui");
        local v44 = l_v40_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v45 = l_v40_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v46 = nil;
        local v47 = false;
        if not v45:FindFirstAncestorOfClass("CoreGui") and v45.Parent == nil then
            v45.Parent = v44;
            v47 = true;
        end;
        if not v40:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_2 = v40.Parent;
            if l_Parent_2 == nil then
                v46 = v40;
            else
                while l_Parent_2.Parent ~= nil and l_Parent_2.Parent.Parent ~= game do
                    l_Parent_2 = l_Parent_2.Parent;
                end;
                v46 = l_Parent_2;
            end;
            v46.Parent = v45;
        end;
        v25(v40, v41);
        if l_v40_FirstAncestorOfClass_1 ~= v45 then
            v46.Parent = nil;
            v45:Destroy();
        end;
        if not (not v45 or not v47) then
            v45.Parent = nil;
        end;
    end,
    keyDown = function(v49, v50)
        local l_v49_FirstAncestorOfClass_0 = v49:FindFirstAncestorOfClass("CoreGui");
        local l_v49_FirstAncestorOfClass_1 = v49:FindFirstAncestorOfClass("ScreenGui");
        local v53 = l_v49_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v54 = l_v49_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v55 = nil;
        local v56 = false;
        if not v54:FindFirstAncestorOfClass("CoreGui") and v54.Parent == nil then
            v54.Parent = v53;
            v56 = true;
        end;
        if not v49:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_3 = v49.Parent;
            if l_Parent_3 == nil then
                v55 = v49;
            else
                while l_Parent_3.Parent ~= nil and l_Parent_3.Parent.Parent ~= game do
                    l_Parent_3 = l_Parent_3.Parent;
                end;
                v55 = l_Parent_3;
            end;
            v55.Parent = v54;
        end;
        v28(v49, v50);
        if l_v49_FirstAncestorOfClass_1 ~= v54 then
            v55.Parent = nil;
            v54:Destroy();
        end;
        if not (not v54 or not v56) then
            v54.Parent = nil;
        end;
    end,
    keyUp = function(v58, v59)
        local l_v58_FirstAncestorOfClass_0 = v58:FindFirstAncestorOfClass("CoreGui");
        local l_v58_FirstAncestorOfClass_1 = v58:FindFirstAncestorOfClass("ScreenGui");
        local v62 = l_v58_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v63 = l_v58_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v64 = nil;
        local v65 = false;
        if not v63:FindFirstAncestorOfClass("CoreGui") and v63.Parent == nil then
            v63.Parent = v62;
            v65 = true;
        end;
        if not v58:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_4 = v58.Parent;
            if l_Parent_4 == nil then
                v64 = v58;
            else
                while l_Parent_4.Parent ~= nil and l_Parent_4.Parent.Parent ~= game do
                    l_Parent_4 = l_Parent_4.Parent;
                end;
                v64 = l_Parent_4;
            end;
            v64.Parent = v63;
        end;
        v31(v58, v59);
        if l_v58_FirstAncestorOfClass_1 ~= v63 then
            v64.Parent = nil;
            v63:Destroy();
        end;
        if not (not v63 or not v65) then
            v63.Parent = nil;
        end;
    end,
    change = function(v67, v68)
        local l_v67_FirstAncestorOfClass_0 = v67:FindFirstAncestorOfClass("CoreGui");
        local l_v67_FirstAncestorOfClass_1 = v67:FindFirstAncestorOfClass("ScreenGui");
        local v71 = l_v67_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v72 = l_v67_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v73 = nil;
        local v74 = false;
        if not v72:FindFirstAncestorOfClass("CoreGui") and v72.Parent == nil then
            v72.Parent = v71;
            v74 = true;
        end;
        if not v67:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_5 = v67.Parent;
            if l_Parent_5 == nil then
                v73 = v67;
            else
                while l_Parent_5.Parent ~= nil and l_Parent_5.Parent.Parent ~= game do
                    l_Parent_5 = l_Parent_5.Parent;
                end;
                v73 = l_Parent_5;
            end;
            v73.Parent = v72;
        end;
        v36(v67, v68);
        if l_v67_FirstAncestorOfClass_1 ~= v72 then
            v73.Parent = nil;
            v72:Destroy();
        end;
        if not (not v72 or not v74) then
            v72.Parent = nil;
        end;
    end,
    resize = function(v76, v77)
        local l_v76_FirstAncestorOfClass_0 = v76:FindFirstAncestorOfClass("CoreGui");
        local l_v76_FirstAncestorOfClass_1 = v76:FindFirstAncestorOfClass("ScreenGui");
        local v80 = l_v76_FirstAncestorOfClass_0 or game:GetService("CoreGui");
        local v81 = l_v76_FirstAncestorOfClass_1 or Instance.new("ScreenGui");
        local v82 = nil;
        local v83 = false;
        if not v81:FindFirstAncestorOfClass("CoreGui") and v81.Parent == nil then
            v81.Parent = v80;
            v83 = true;
        end;
        if not v76:FindFirstAncestorOfClass("ScreenGui") then
            local l_Parent_6 = v76.Parent;
            if l_Parent_6 == nil then
                v82 = v76;
            else
                while l_Parent_6.Parent ~= nil and l_Parent_6.Parent.Parent ~= game do
                    l_Parent_6 = l_Parent_6.Parent;
                end;
                v82 = l_Parent_6;
            end;
            v82.Parent = v81;
        end;
        v39(v76, v77);
        if l_v76_FirstAncestorOfClass_1 ~= v81 then
            v82.Parent = nil;
            v81:Destroy();
        end;
        if not (not v81 or not v83) then
            v81.Parent = nil;
        end;
    end
};
return function(v86, v87, v88)
    local v89 = v85[v87];
    if not v89 then
        error("Event not found");
    end;
    v89(v86, v88);
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_ScreenGui_0 = Instance.new("ScreenGui");
local l_Folder_0 = Instance.new("Folder");
l_Folder_0.Name = "Document";
l_Folder_0.Parent = l_ScreenGui_0;
l_ScreenGui_0.Parent = l_CoreGui_0;
return l_Folder_0;


local l_Error_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Error;
local v1 = nil;
local function _()
    local l_status_0, l_result_0 = pcall(function()
        return game:GetService("FileSystemService");
    end);
    return not not l_status_0 and l_result_0 or nil;
end;
local function v10(v5)
    local v6 = v5:split("/");
    local v7 = table.concat(table.pack(table.unpack(v6, 1, #v6 - 1)), "/");
    local l_status_1, l_result_1 = pcall(function()
        if not v1:Exists(v7) then
            v1:CreateDirectories(v7);
        end;
    end);
    if not (l_status_1 or not l_result_1:find("Error%(13%): Access Denied%. Path is outside of sandbox%.")) then
        error("Provided path is invalid: you likely need to provide a different argument to --fs.read.\n" .. "You may need to pass in `--fs.read=$PWD`");
    end;
end;
return {
    readFileSync = function(v11)
        if v1 == nil then
            local l_status_2, l_result_2 = pcall(function()
                return game:GetService("FileSystemService");
            end);
            v1 = not not l_status_2 and l_result_2 or nil;
        end;
        if not v1 then
            error(l_Error_0.new("Attempting to read file in an environment where FileSystemService is inaccessible."));
        end;
        v10(v11);
        return v1:ReadFile(v11);
    end
};


local l_document_0 = require(script.Parent.Parent.Parent.DomTestingLibrary).document;
return {
    toBeInTheDocument = function(v1, v2, _)
        local v4 = {
            isNot = v1.isNot,
            promise = v1.promise
        };
        return {
            message = function()
                return v1.utils.matcherHint("toBeInTheDocument", nil, nil, v4) .. "\n\n" .. (not v1.isNot and "element could not be found in the document" or "element was found in the document");
            end,
            pass = v2:IsDescendantOf(l_document_0)
        };
    end,
    toBeEmptyDOMElement = function(v5, v6, _)
        local v8 = {
            isNot = v5.isNot,
            promise = v5.promise
        };
        return {
            message = function()
                return v5.utils.matcherHint("toBeEmptyDOMElement", nil, nil, v8) .. "\n\n" .. (not v5.isNot and "element is not empty" or "element is empty");
            end,
            pass = #v6:GetChildren() == 0
        };
    end,
    toHaveTextContent = function(v9, v10, v11)
        if v10:IsA("TextBox") then
            error("toHaveTextContent is not meant to be used with TextBox");
        end;
        local l_Text_0 = v10.Text;
        local v13 = not v11;
        if not v13 then
            v13 = true;
            if v11 ~= "" then
                v13 = l_Text_0 == "";
            end;
        end;
        local v14 = nil;
        if typeof(v11) == "string" then
            v14 = string.find(l_Text_0, v11, 1, true);
        elseif typeof(v11) == "table" and typeof(v11.test) == "function" then
            v14 = v11:test(l_Text_0);
        else
            error("Unhandled expected value type: string or regex is required");
        end;
        local v15 = {
            isNot = v9.isNot,
            promise = v9.promise
        };
        return {
            message = function()
                return v9.utils.matcherHint("toHaveTextContent", nil, nil, v15) .. "\n\n" .. if not v13 then "Expected element " .. (not v9.isNot and "to" or "not to") .. " have text content" else "Checking with empty string will always match, use .toBeEmptyDOMElement() instead";
            end,
            pass = not v13 and not not v14
        };
    end,
    toHaveValue = function(v16, v17, v18)
        if not v17:IsA("TextBox") then
            error("toHaveValue is meant to be used only with TextBox");
        end;
        local l_Text_1 = v17.Text;
        local v20 = nil;
        if typeof(v18) == "string" then
            v20 = string.find(l_Text_1, v18, 1, true);
        elseif typeof(v18) == "table" and typeof(v18.test) == "function" then
            v20 = v18:test(l_Text_1);
        else
            error("Unhandled expected value type: string or regex is required");
        end;
        local v21 = {
            isNot = v16.isNot,
            promise = v16.promise
        };
        return {
            message = function()
                return v16.utils.matcherHint("toHaveValue", nil, nil, v21) .. "\n\n" .. "Expected element " .. (not v16.isNot and "to" or "not to") .. " have value";
            end,
            pass = not not v20
        };
    end
};


local l_Array_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Array;
local l_getNodeTestId_0 = require(script.Parent.Parent["get-node-test-id"]).getNodeTestId;
local v2 = {};
local function v9(v3, v4, v5)
    return l_Array_0.some(v4, function(v6)
        if v5 then
            if v5 == "property" then
                local _, l_result_0 = pcall(function()
                    return v3[v6];
                end);
                return l_result_0 ~= nil;
            elseif v5 == "tag" then
                return l_getNodeTestId_0(v3) ~= nil;
            else
                return v3:GetAttribute(v6) ~= nil;
            end;
        else
            return v3.ClassName:find(v6) ~= nil;
        end;
    end);
end;
local function v10(v11, v12, v13, v14)
    local v15 = {};
    l_Array_0.forEach(v11:GetChildren(), function(v16)
        local l_v12_0 = v12;
        local l_v13_0 = v13;
        if l_Array_0.some(l_v12_0, function(v19)
            if l_v13_0 then
                if l_v13_0 == "property" then
                    local _, l_result_1 = pcall(function()
                        return v16[v19];
                    end);
                    return l_result_1 ~= nil;
                elseif l_v13_0 == "tag" then
                    return l_getNodeTestId_0(v16) ~= nil;
                else
                    return v16:GetAttribute(v19) ~= nil;
                end;
            else
                return v16.ClassName:find(v19) ~= nil;
            end;
        end) then
            table.insert(v15, v16);
        end;
        v15 = l_Array_0.concat(v15, v10(v16, v12, v13, v14));
    end);
    return if not v14 then v15 else if v14 == 1 then v15[1] else l_Array_0.slice(v15, 1, v14 + 1);
end;
v2.querySelector = function(v22, v23, v24)
    return (v10(v22, v23, v24, 1));
end;
v2.querySelectorAll = function(v25, v26, v27)
    return (v10(v25, v26, v27));
end;
v2.matches = v9;
return v2;


return function(v0)
    return (string.gsub(v0, "[\027\155][][()#;?%d]*[A-PRZcf-ntqry=><~]", ""));
end;


local l_Error_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Error;
local v1 = {};
v1.__index = v1;
v1.new = function(v2)
    return (setmetatable({
        name = "TypeError",
        message = v2 or "",
        stack = debug.traceback(nil, 2)
    }, l_Error_0));
end;
return v1;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_console_0 = v1.console;
local v6 = require(script.Parent.jsHelpers.typeError);
local v7 = {};
local v8 = require(l_Parent_0.PrettyFormat);
local l_default_0 = require(script.Parent.DOMElementFilter).default;
local v10 = require(script.Parent["get-user-code-frame"]);
local l_getDocument_0 = require(script.Parent.helpers).getDocument;
local v12 = require(script.Parent["config-default-ignore"]);
local function _()
    return true;
end;
local function v15(v14)
    return not l_Array_0.includes(v12.getIgnore(), v14.ClassName);
end;
local function v23(v16, v17, v18)
    local v19 = if v18 == nil then {} else v18;
    if not v16 then
        v16 = l_getDocument_0();
    end;
    if typeof(v17) ~= "number" then
        local l_DEBUG_PRINT_LIMIT_0 = _G.DEBUG_PRINT_LIMIT;
        v17 = not not l_Boolean_0.toJSBoolean(l_DEBUG_PRINT_LIMIT_0) and l_DEBUG_PRINT_LIMIT_0 or 7000;
    end;
    if v17 == 0 then
        return "";
    else
        local v21 = typeof(v16);
        if v21 ~= "Instance" then
            error(v6.new(("Expected an Instance but got %s"):format(v21)));
        end;
        local v22 = v8.format(v16, l_Object_0.assign({}, {
            plugins = {
                l_default_0(if v19.filterNode == nil then v15 else v19.filterNode)
            },
            printFunctionName = false,
            highlight = true
        }, (l_Object_0.assign({}, v19, {
            filterNode = l_Object_0.None
        }))));
        if v17 ~= nil and v17 < #v22 then
            return (("%s..."):format((string.sub(v22, 1, v17))));
        else
            return v22;
        end;
    end;
end;
local function v25(...)
    local v24 = v10.getUserCodeFrame();
    if not l_Boolean_0.toJSBoolean(v24) then
        l_console_0.log((v23(...)));
        return ;
    else
        l_console_0.log(("%s\n\n%s"):format(v23(...), v24));
        return ;
    end;
end;
v7.prettyDOM = v23;
v7.logDOM = v25;
v7.prettyFormat = v8;
return v7;


local l_Object_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Object;
local v1 = {};
l_Object_0.assign(v1, require(script.Parent.Parent.matches));
l_Object_0.assign(v1, require(script.Parent.Parent["get-node-text"]));
l_Object_0.assign(v1, require(script.Parent.Parent["query-helpers"]));
l_Object_0.assign(v1, require(script.Parent.Parent.config));
return v1;


local l_Object_0 = require(script.Parent.Parent.LuauPolyfill).Object;
local v1 = {};
l_Object_0.assign(v1, require(script["placeholder-text"]));
l_Object_0.assign(v1, require(script.text));
l_Object_0.assign(v1, require(script["display-value"]));
l_Object_0.assign(v1, require(script["test-id"]));
return v1;


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local l_wrapAllByQueryWithSuggestion_0 = require(script.Parent.Parent["query-helpers"]).wrapAllByQueryWithSuggestion;
local l_checkContainerType_0 = require(script.Parent.Parent.helpers).checkContainerType;
local _ = require(script.Parent.Parent.types);
local v5 = require(script.Parent["all-utils"]);
local l_queryAllByAttribute_0 = v5.queryAllByAttribute;
local l_buildQueries_0 = v5.buildQueries;
local v8 = nil;
v8 = function(...)
    l_checkContainerType_0(({
        ...
    })[1]);
    return l_queryAllByAttribute_0("PlaceholderText", ...);
end;
local v9 = nil;
v9 = function(_, v11)
    return ("Found multiple elements with the placeholder text of: %s"):format((tostring(v11)));
end;
local v12 = nil;
v12 = function(_, v14)
    return ("Unable to find an element with the placeholder text of: %s"):format((tostring(v14)));
end;
local v15 = l_wrapAllByQueryWithSuggestion_0(v8, debug.info(v8, "n"), "queryAll");
local v16, v17, v18, v19, v20 = l_buildQueries_0(v8, v9, v12);
v1.queryByPlaceholderText = v16;
v1.queryAllByPlaceholderText = v15;
v1.getByPlaceholderText = v18;
v1.getAllByPlaceholderText = v17;
v1.findAllByPlaceholderText = v19;
v1.findByPlaceholderText = v20;
return v1;


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local l_checkContainerType_0 = require(script.Parent.Parent.helpers).checkContainerType;
local l_wrapAllByQueryWithSuggestion_0 = require(script.Parent.Parent["query-helpers"]).wrapAllByQueryWithSuggestion;
local _ = require(script.Parent.Parent.types);
local v5 = require(script.Parent["all-utils"]);
local l_queryAllByAttribute_0 = v5.queryAllByAttribute;
local l_getConfig_0 = v5.getConfig;
local l_buildQueries_0 = v5.buildQueries;
local function _()
    return l_getConfig_0().testIdAttribute;
end;
local v10 = nil;
v10 = function(...)
    l_checkContainerType_0(({
        ...
    })[1]);
    return l_queryAllByAttribute_0(l_getConfig_0().testIdAttribute, ...);
end;
local v11 = nil;
v11 = function(_, v13)
    return ("Found multiple elements by: [%s=\"%s\"]"):format(l_getConfig_0().testIdAttribute, (tostring(v13)));
end;
local v14 = nil;
v14 = function(_, v16)
    return ("Unable to find an element by: [%s=\"%s\"]"):format(l_getConfig_0().testIdAttribute, (tostring(v16)));
end;
local v17 = l_wrapAllByQueryWithSuggestion_0(v10, debug.info(v10, "n"), "queryAll");
local v18, v19, v20, v21, v22 = l_buildQueries_0(v10, v11, v14);
v1.queryByTestId = v18;
v1.queryAllByTestId = v17;
v1.getByTestId = v20;
v1.getAllByTestId = v19;
v1.findAllByTestId = v21;
v1.findByTestId = v22;
return v1;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local l_console_0 = v1.console;
local v5 = require(script.Parent.jsHelpers.document);
local v6 = require(script.Parent.jsHelpers.typeError);
local v7 = {};
local _ = require(l_Parent_0.PrettyFormat);
local l_getQueriesForElement_0 = require(script.Parent["get-queries-for-element"]).getQueriesForElement;
local l_getDocument_0 = require(script.Parent.helpers).getDocument;
local l_logDOM_0 = require(script.Parent["pretty-dom"]).logDOM;
local v12 = require(script.Parent.queries);
local v18 = {
    debug = function(v13, v14, v15)
        if not l_Array_0.isArray(v13) then
            return (l_logDOM_0(v13, v14, v15));
        else
            return (l_Array_0.forEach(v13, function(v16)
                return l_logDOM_0(v16, v14, v15);
            end));
        end;
    end,
    logTestingPlaygroundURL = function(v17)
        if v17 == nil then
            v17 = l_getDocument_0();
        end;
        if (not v17 or l_Array_0.isArray(v17)) or typeof(v17) ~= "Instance" then
            l_console_0.log("The element you're providing isn't a valid Instance.");
            return ;
        elseif #v17:GetChildren() == 0 then
            l_console_0.log("The provided element doesn't have any children.");
            return ;
        else
            return ;
        end;
    end
};
v7.screen = if typeof(v5) ~= "nil" then l_getQueriesForElement_0(v5, v12, v18) else l_Array_0.reduce(l_Object_0.keys(v12), function(v19, v20)
    v19[v20] = function()
        error(v6.new("For queries bound to document.body a global document has to be available... Learn more: https://testing-library.com/s/screen-global-error"));
    end;
    return v19;
end, v18);
return v7;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_console_0 = v1.console;
local v6 = require(l_Parent_0.LuauRegExp);
local l_getNodeTestId_0 = require(script.Parent["get-node-test-id"]).getNodeTestId;
local _ = require(script.Parent.types.suggestions);
local v9 = {};
local l_getDefaultNormalizer_0 = require(script.Parent.matches).getDefaultNormalizer;
local l_getNodeText_0 = require(script.Parent["get-node-text"]).getNodeText;
local l_getConfig_0 = require(script.Parent.config).getConfig;
local v13 = l_getDefaultNormalizer_0();
local function _(v14)
    return (v14:gsub("[\\%.%*%+\\%-%?%^%${}%(%)|%[%]]", "\\%1"));
end;
local function _(v16)
    return v6((v16:lower():gsub("[\\%.%*%+\\%-%?%^%${}%(%)|%[%]]", "\\%1")));
end;
local function v32(v18, _, v20, v21)
    local l_variant_0 = v21.variant;
    local l_name_0 = v21.name;
    local v24 = {};
    local v25 = {
        if not l_Array_0.includes({
            "Role",
            "TestId"
        }, v18) then v6((v20:lower():gsub("[\\%.%*%+\\%-%?%^%${}%(%)|%[%]]", "\\%1"))) else v20
    };
    if l_Boolean_0.toJSBoolean(l_name_0) then
        v24.name = v6((l_name_0:lower():gsub("[\\%.%*%+\\%-%?%^%${}%(%)|%[%]]", "\\%1")));
    end;
    if #l_Object_0.keys(v24) > 0 then
        table.insert(v25, v24);
    end;
    local v26 = ("%sBy%s"):format(l_variant_0, v18);
    return {
        queryName = v18,
        queryMethod = v26,
        queryArgs = v25,
        variant = l_variant_0,
        warning = "",
        toString = function()
            if l_Boolean_0.toJSBoolean("") then
                l_console_0.warn("");
            end;
            local v27, v28 = table.unpack(v25, 1, 2);
            if typeof(v27) == "string" then
                v27 = ("'%s'"):format(v27);
            end;
            return ("%s(%s%s)"):format(v26, tostring(v27), (tostring(if v28 ~= nil then (", { %s }"):format(l_Array_0.join(l_Array_0.map(l_Object_0.entries(v28), function(v29)
                local v30, v31 = table.unpack(v29, 1, 2);
                return ("%s: %s"):format(tostring(v30), (tostring(v31)));
            end), ", ")) else "")));
        end
    };
end;
local function _(v33, v34, v35)
    local v36;
    if not l_Boolean_0.toJSBoolean(v35) then
        v36 = false;
    else
        v36 = not l_Boolean_0.toJSBoolean(v34);
        if not v36 then
            return v34:lower() == v33:lower();
        end;
    end;
    return v36;
end;
v9.getSuggestedQuery = function(v38, v39, v40)
    local v41 = v39 == nil and "get" or v39;
    if not l_Array_0.includes(l_getConfig_0().defaultIgnore, v38.ClassName) then
        local l_status_0, l_result_0 = pcall(function()
            return v38.PlaceholderText;
        end);
        if not l_status_0 or not (not not l_Boolean_0.toJSBoolean(l_result_0) and (not l_Boolean_0.toJSBoolean(v40) or v40:lower() == ("PlaceholderText"):lower())) then
            local v44 = v13(l_getNodeText_0(v38));
            if not (not not l_Boolean_0.toJSBoolean(v44) and (not l_Boolean_0.toJSBoolean(v40) or v40:lower() == ("Text"):lower())) then
                local l_status_1, l_result_1 = pcall(function()
                    return v38.Text;
                end);
                if not l_status_1 or not (not not l_Boolean_0.toJSBoolean(l_result_1) and (not l_Boolean_0.toJSBoolean(v40) or v40:lower() == ("DisplayValue"):lower())) then
                    local v47 = l_getNodeTestId_0(v38);
                    if not v47 or not (not not l_Boolean_0.toJSBoolean(v47) and (not l_Boolean_0.toJSBoolean(v40) or v40:lower() == ("TestId"):lower())) then
                        return nil;
                    else
                        return (v32("TestId", v38, v47, {
                            variant = v41
                        }));
                    end;
                else
                    return (v32("DisplayValue", v38, v13(l_result_1), {
                        variant = v41
                    }));
                end;
            else
                return (v32("Text", v38, v44, {
                    variant = v41
                }));
            end;
        else
            return (v32("PlaceholderText", v38, l_result_0, {
                variant = v41
            }));
        end;
    else
        return nil;
    end;
end;
return v9;


local v0 = {};
local _ = require(script["get-queries-for-element"]);
local _ = require(script.queries);
local _ = require(script["query-helpers"]);
local _ = require(script.screen);
local _ = require(script["wait-for"]);
local _ = require(script["wait-for-element-to-be-removed"]);
local _ = require(script.matches);
local _ = require(script["get-node-text"]);
local _ = require(script.events);
local _ = require(script["pretty-dom"]);
local _ = require(script.config);
local _ = require(script.suggestions);
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = {};
local _ = require(l_Parent_0.PrettyFormat);
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.LuauRegExp);
local v3 = {};
local _ = require(script.Parent.matches);
local _ = require(script.Parent["query-helpers"]);
local _ = require(script.Parent["wait-for"]);
return v3;


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local _ = require(script.Parent.matches);
local _ = require(script.Parent["wait-for"]);
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local v2 = {};
local _ = require(l_Parent_0.PrettyFormat);
local _ = require(script.Parent["get-queries-for-element"]);
return v2;


local l_Parent_0 = script.Parent.Parent.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.LuauRegExp);
return {};


local _ = require(script.Parent.Parent.Parent.LuauPolyfill);
local v1 = {};
local _ = require(script.Parent["wait-for"]);
return v1;