local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Dash);
local l_None_0 = v2.None;
local l_join_0 = v2.join;
local l_joinDeep_0 = v2.joinDeep;
local l_collect_0 = v2.collect;
local l_values_0 = v2.values;
local l_sort_0 = table.sort;
local v9 = require(l_Parent_0.Src.Util.TabIds);
local l_Actions_0 = l_Parent_0.Src.Actions;
local v11 = require(l_Actions_0.SetTab);
local v12 = require(l_Actions_0.AddTargets);
local v13 = require(l_Actions_0.ClearTargets);
local v14 = require(l_Actions_0.CloseTarget);
local v15 = require(l_Actions_0.SelectTarget);
local v16 = require(l_Actions_0.ToggleTarget);
local function v18(v17)
    return v17.Id or v17.Name;
end;
local function v23(v19)
    local v20 = l_values_0(v19.Children);
    l_sort_0(v20, function(v21, v22)
        return v22.Name < v21.Name;
    end);
    return v20;
end;
local function _(v24, v25, v26)
    return {
        Name = v24,
        ClassName = v25,
        Children = v26 or {},
        GetChildren = v23,
        GetDebugId = v18
    };
end;
local v28 = {
    {
        Id = v9.ELEMENTS,
        Label = "Elements"
    },
    {
        Id = v9.PROFILE,
        Label = "Profile"
    }
};
return v1.createReducer({
    tabs = v28,
    selectedTab = v28[1],
    targets = {},
    selectedTargetName = nil,
    selectedTarget = nil,
    expandedTargets = {}
}, {
    [v11.name] = function(v29, v30)
        return l_join_0(v29, {
            selectedTab = v30.tab
        });
    end,
    [v13.name] = function(v31, _)
        return l_join_0(v31, {
            targets = {},
            expandedTargets = {},
            selectedTarget = l_None_0
        });
    end,
    [v15.name] = function(v33, v34)
        return l_join_0(v33, {
            selectedTarget = v34.target
        });
    end,
    [v14.name] = function(v35)
        return l_join_0(v35, {
            selectedTarget = l_None_0
        });
    end,
    [v16.name] = function(v36, v37)
        return l_joinDeep_0(v36, {
            expandedTargets = v37.change
        });
    end,
    [v12.name] = function(v38, v39)
        local v40 = ({
            Plugin = "Plugin",
            CoreGui = "CoreGui",
            Library = "Frame",
            StandalonePlugin = "Plugin"
        })[v39.sourceKind] or "Frame";
        return (l_joinDeep_0(v38, {
            targets = l_collect_0(v39.targets, function(_, v42)
                local v43 = {
                    Name = v42.name,
                    ClassName = v40,
                    Children = {},
                    GetChildren = v23,
                    GetDebugId = v18
                };
                local v44 = v42.name == "Roact tree" and "" or " - " .. v42.name;
                v43.Id = v42.id;
                v43.Name = v39.sourceName .. v44;
                v43.BridgeId = v39.fromBridgeId;
                return v42.id, v43;
            end)
        }));
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
return require(l_Parent_0.Packages.Framework).Style.makeTheme(l_Parent_0.Src.Components);


local l_Workspace_0 = game:GetService("Workspace");
local function _(v1, v2)
    v2 = v2 or false;
    return function()
        local l_DeveloperInspectorFlags_0 = l_Workspace_0:FindFirstChild("DeveloperInspectorFlags");
        if l_DeveloperInspectorFlags_0 and l_DeveloperInspectorFlags_0:FindFirstChild(v1) then
            return l_DeveloperInspectorFlags_0[v1].Value;
        else
            return v2;
        end;
    end;
end;
local v5 = {};
local v6 = nil or false;
local v7 = "RunningUnderCLI";
local l_v7_0 = v7 --[[ copy: 5 -> 6 ]];
local v9;
do
    local l_v6_0 = v6;
    v9 = function()
        local l_DeveloperInspectorFlags_1 = l_Workspace_0:FindFirstChild("DeveloperInspectorFlags");
        if l_DeveloperInspectorFlags_1 and l_DeveloperInspectorFlags_1:FindFirstChild(l_v7_0) then
            return l_DeveloperInspectorFlags_1[l_v7_0].Value;
        else
            return l_v6_0;
        end;
    end;
end;
v5.RunningUnderCLI = v9;
v6 = false or false;
v7 = "RunTests";
local l_v7_1 = v7 --[[ copy: 5 -> 7 ]];
do
    local l_v6_1 = v6;
    v9 = function()
        local l_DeveloperInspectorFlags_2 = l_Workspace_0:FindFirstChild("DeveloperInspectorFlags");
        if l_DeveloperInspectorFlags_2 and l_DeveloperInspectorFlags_2:FindFirstChild(l_v7_1) then
            return l_DeveloperInspectorFlags_2[l_v7_1].Value;
        else
            return l_v6_1;
        end;
    end;
end;
v5.RunTests = v9;
v6 = nil or false;
v7 = "LogTestsQuiet";
local l_v7_2 = v7 --[[ copy: 5 -> 8 ]];
do
    local l_v6_2 = v6;
    v9 = function()
        local l_DeveloperInspectorFlags_3 = l_Workspace_0:FindFirstChild("DeveloperInspectorFlags");
        if l_DeveloperInspectorFlags_3 and l_DeveloperInspectorFlags_3:FindFirstChild(l_v7_2) then
            return l_DeveloperInspectorFlags_3[l_v7_2].Value;
        else
            return l_v6_2;
        end;
    end;
end;
v5.LogTestsQuiet = v9;
v6 = nil or false;
v7 = "LogAnalytics";
do
    local l_v6_3 = v6;
    v9 = function()
        local l_DeveloperInspectorFlags_4 = l_Workspace_0:FindFirstChild("DeveloperInspectorFlags");
        if l_DeveloperInspectorFlags_4 and l_DeveloperInspectorFlags_4:FindFirstChild(v7) then
            return l_DeveloperInspectorFlags_4[v7].Value;
        else
            return l_v6_3;
        end;
    end;
end;
v5.LogAnalytics = v9;
return v5;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_ReplicatedStorage_0 = game:GetService("ReplicatedStorage");
local l_find_0 = require(l_Parent_0.Packages.Dash).find;
local function v10(v3, v4)
    if not v4:FindFirstChild(v3) then
        local l__Index_0 = l_Parent_0.Packages._Index;
        local v6 = v3 .. "-";
        local v9 = l_find_0(l__Index_0:GetChildren(), function(v7)
            local v8 = true;
            if v7.Name ~= v3 then
                v8 = v7.Name:sub(1, #v6) == v6;
            end;
            return v8;
        end);
        if v9 then
            v9:FindFirstChild(v3):Clone().Parent = v4;
        end;
        return ;
    else
        return ;
    end;
end;
return function()
    local l_Packages_0 = l_ReplicatedStorage_0:FindFirstChild("Packages");
    if not l_Packages_0 then
        l_Packages_0 = Instance.new("Folder");
        l_Packages_0.Name = "Packages";
        l_Packages_0.Parent = l_ReplicatedStorage_0;
    end;
    v10("Dash", l_Packages_0);
    v10("DeveloperTools", l_Packages_0);
end;


return {
    EVENTS = "profileEvents",
    COMPONENTS = "profileComponents"
};


local v0 = {
    Branch = 5923556358,
    Consumer = 5923556689,
    Fragment = 5923557006,
    Functional = 5923557211,
    Portal = 5923557429,
    Provider = 5923557657,
    Pure = 5923557814,
    Stateful = 5923557987
};
local function v2(v1)
    return game:GetService("StudioService"):GetClassIcon(v1);
end;
return function(v3)
    if not v0[v3] then
        local l_status_0, l_result_0 = pcall(function()
            return v2(v3);
        end);
        if not l_status_0 then
            return v2("Folder");
        else
            return l_result_0;
        end;
    else
        return {
            Image = "rbxassetid://" .. v0[v3],
            ImageRectSize = Vector2.new(24, 24),
            ImageRectOffset = Vector2.new(0, 0)
        };
    end;
end;


local l_RunningUnderCLI_0 = require(script.Parent.DebugFlags).RunningUnderCLI;
local v1 = nil;
local v2 = nil;
if not l_RunningUnderCLI_0 then
    v1 = settings().Studio["Show Core GUI in Explorer while Playing"];
    v2 = settings().Studio.PluginDebuggingEnabled;
else
    v1 = true;
    v2 = true;
end;
return function(v3)
    local v4 = nil;
    local v5 = 0;
    local v6 = string.split(v3, ":");
    v5 = tonumber(string.split(v6[2], " ")[1]);
    local v7 = string.split(v6[1], ".");
    local v8 = string.lower(v7[1]);
    if v8:find("builtin") then
        local v9 = v7[1] .. ".rbxm";
        if game:GetService("PluginDebugService"):FindFirstChild(v9) then
            table.insert(v7, 1, "PluginDebugService");
            v8 = string.lower(v7[1]);
        else
            warn(("Traceback unavailable: %s is not in PluginDebugService"):format(v9));
            return nil, nil;
        end;
    end;
    if v8:find("plugindebugservice") then
        if v7[3] == "rbxm" then
            v7[2] = v7[2] .. ".rbxm";
            table.remove(v7, 3);
        end;
        if not v2 then
            warn(("Traceback unavailable: %s is disabled."):format(v8));
        end;
    end;
    if not (not v8:find("coregui") or v1) then
        warn(("Traceback unavailable: %s is disabled."):format(v8));
    end;
    v4 = game:GetService(v7[1]);
    if v4 then
        for v10 = 2, #v7 do
            v4 = v4:FindFirstChild(v7[v10], true);
        end;
        return v4, v5;
    else
        warn(("Unable to find traceback. Does the path %s exist in the explorer?"):format(v3));
        return nil, nil;
    end;
end;


local v0 = require(script.Parent.Parent.Parent.Packages.Dash);
local l_collectArray_0 = v0.collectArray;
local l_collectSet_0 = v0.collectSet;
local l_copy_0 = v0.copy;
local l_forEach_0 = v0.forEach;
local l_reduce_0 = v0.reduce;
local function v10(v6, v7)
    return l_reduce_0(v7, function(v8, v9)
        if not v8 or not v8.Children then
            return nil;
        else
            return v8.Children[v9];
        end;
    end, v6);
end;
local function v11(v12, v13)
    if v12 then
        l_forEach_0(v13, function(v14, v15)
            local v16 = v12[v15];
            if v16 then
                if not v14.Children then
                    v14.Children = v16.Children;
                    return ;
                else
                    v14.Children = v11(v16.Children, v14.Children);
                    return ;
                end;
            else
                return ;
            end;
        end);
    end;
    return v13;
end;
return function(v17)
    local v20 = l_collectArray_0(v17.expanded, function(v18, v19)
        return not not v19 and v18.Path or nil;
    end);
    local v23 = l_collectArray_0(v17.selected, function(v21, v22)
        return not not v22 and v21.Path or nil;
    end);
    local v24 = nil;
    if #v17.path == 0 then
        v24 = {
            Children = v17.children
        };
    else
        v24 = l_copy_0(v17.root);
        local l_v24_0 = v24;
        do
            local l_l_v24_0_0 = l_v24_0;
            l_forEach_0(v17.path, function(v27)
                if not (l_l_v24_0_0 ~= nil) or l_l_v24_0_0.Children == nil then
                    return ;
                elseif not l_l_v24_0_0.Children[v27] then
                    l_l_v24_0_0 = nil;
                    return ;
                else
                    local v28 = l_copy_0(l_l_v24_0_0.Children[v27]);
                    l_l_v24_0_0.Children[v27] = v28;
                    l_l_v24_0_0 = v28;
                    return ;
                end;
            end);
            if l_l_v24_0_0 then
                local l_Children_0 = l_l_v24_0_0.Children;
                local l_children_0 = v17.children;
                if l_Children_0 then
                    l_forEach_0(l_children_0, function(v31, v32)
                        local v33 = l_Children_0[v32];
                        if v33 then
                            if not v31.Children then
                                v31.Children = v33.Children;
                                return ;
                            else
                                v31.Children = v11(v33.Children, v31.Children);
                                return ;
                            end;
                        else
                            return ;
                        end;
                    end);
                end;
                l_l_v24_0_0.Children = l_children_0;
            end;
        end;
    end;
    return {
        root = v24,
        selected = l_collectSet_0(v23, function(_, v35)
            return v10(v24, v35);
        end),
        expanded = l_collectSet_0(v20, function(_, v37)
            return v10(v24, v37);
        end)
    };
end;


return function(v0, v1)
    if v0 then
        if game:GetFastFlag("DeviceEmulatorPluginBasedUi") then
            require(script.Parent.commonInit)();
            local l_Parent_0 = script.Parent.Parent;
            if require(l_Parent_0.Src.Util.shouldPluginRun)() then
                local v3 = require(l_Parent_0.Packages.Roact);
                local v4 = require(l_Parent_0.Packages.Framework);
                local v5 = require(l_Parent_0.Src.MainPlugin);
                local v6 = require(l_Parent_0.Src.Util.hasInternalPermission)();
                local v7 = nil;
                local v8 = nil;
                if v6 then
                    v8 = v4.DeveloperTools.forPlugin(l_Parent_0.Name, v0);
                end;
                local function v9()
                    v0.Name = l_Parent_0.Name;
                    v7 = v3.mount((v3.createElement(v5, {
                        Plugin = v0,
                        pluginLoaderContext = v1
                    })));
                    if v8 then
                        v8:addRoactTree("Roact tree", v7);
                    end;
                end;
                v0.Unloading:Connect(function()
                    if v8 then
                        v8:destroy();
                    end;
                    if v7 then
                        v3.unmount(v7);
                        v7 = nil;
                    end;
                end);
                v9();
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Src.Util.DebugFlags);
if not (not v1.RunningUnderCLI() and not v1.RunTests()) then
    require(script.Parent.commonInit)();
    local v2 = require(l_Parent_0.Packages.Framework);
    local v3 = require(l_Parent_0.Packages.Dev.TestEZ);
    local l_TestBootstrap_0 = v3.TestBootstrap;
    local v5 = not not _G.TEAMCITY and v3.Reporters.TeamCityReporter or v3.Reporters.TextReporter;
    local l_Src_0 = l_Parent_0.Src;
    local v7 = {
        showTimingInfo = false,
        testNamePattern = nil,
        extraEnvironment = {}
    };
    print("----- All " .. l_Parent_0.Name .. " Tests ------");
    require(script.Parent.defineLuaFlags);
    l_TestBootstrap_0:run({
        l_Src_0
    }, v5, v7);
    print("----------------------------------");
    if v1.RunDeveloperFrameworkTests() then
        print("");
        print("----- All DeveloperFramework Tests ------");
        v2.TestHelpers.runFrameworkTests(v3, v5);
        print("----------------------------------");
    end;
end;
if v1.RunningUnderCLI() then
    pcall(function()
        game:GetService("ProcessService"):ExitAsync(0);
    end);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_SimpleExpandablePane_0 = l_UI_0.SimpleExpandablePane;
local l_Slider_0 = l_UI_0.Slider;
local l_Checkbox_0 = l_UI_0.Checkbox;
local v11 = v1.PureComponent:extend("GraphicsPane");
local l_UserGameSettings_0 = UserSettings():GetService("UserGameSettings");
local l_Rendering_0 = settings().Rendering;
local l_l_UserGameSettings_0_PropertyChangedSignal_0 = l_UserGameSettings_0:GetPropertyChangedSignal("SavedQualityLevel");
local l_l_UserGameSettings_0_PropertyChangedSignal_1 = l_UserGameSettings_0:GetPropertyChangedSignal("GraphicsQualityLevel");
local v16 = l_Rendering_0:GetMaxQualityLevel() - 1;
v11.init = function(v17, _)
    v17.state = {
        graphicsQuality = l_UserGameSettings_0.GraphicsQualityLevel,
        graphicsQualityAutoMode = l_UserGameSettings_0.GraphicsQualityLevel == 0
    };
    v17.setGraphicsQuality = function(v19)
        local v20 = math.clamp(v19, 1, v16);
        local l_GraphicsQualityLevel_0 = l_UserGameSettings_0.GraphicsQualityLevel;
        l_UserGameSettings_0.GraphicsQualityLevel = v20;
        l_Rendering_0.QualityLevel = v20;
        return v20, v20 - l_GraphicsQualityLevel_0;
    end;
    v17.toggleGraphicsQualityAutomatic = function()
        local v22 = not v17.state.graphicsQualityAutoMode;
        if not v22 then
            l_UserGameSettings_0.GraphicsQualityLevel = v17.state.graphicsQuality;
            l_Rendering_0.QualityLevel = v17.state.graphicsQuality;
        else
            l_UserGameSettings_0.GraphicsQualityLevel = 0;
            l_Rendering_0.QualityLevel = 0;
        end;
        v17:setState({
            graphicsQualityAutoMode = v22
        });
    end;
    local function v24()
        local l_GraphicsQualityLevel_1 = l_UserGameSettings_0.GraphicsQualityLevel;
        if l_GraphicsQualityLevel_1 ~= 0 then
            v17:setState({
                graphicsQuality = l_GraphicsQualityLevel_1
            });
        end;
        v17:setState({
            graphicsQualityAutoMode = l_GraphicsQualityLevel_1 == 0
        });
    end;
    v17.graphicsQualityLevelChangedConnection = l_l_UserGameSettings_0_PropertyChangedSignal_1:Connect(v24);
    v17.savedQualityLevelChangedConnection = l_l_UserGameSettings_0_PropertyChangedSignal_0:Connect(v24);
end;
v11.willUnmount = function(v25)
    v25.graphicsQualityLevelChangedConnection:Disconnect();
    v25.savedQualityLevelChangedConnection:Disconnect();
end;
v11.render = function(v26)
    local l_props_0 = v26.props;
    local l_state_0 = v26.state;
    local l_Localization_1 = l_props_0.Localization;
    return v1.createElement(l_Pane_0, {
        AutomaticSize = Enum.AutomaticSize.Y,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        Layout = Enum.FillDirection.Vertical,
        Padding = 10,
        Spacing = 10
    }, {
        GraphicsQualityPane = v1.createElement(l_SimpleExpandablePane_0, {
            AutomaticSize = Enum.AutomaticSize.Y,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Layout = Enum.FillDirection.Vertical,
            AlwaysExpanded = true,
            LayoutOrder = 1,
            Style = "Box",
            Text = l_Localization_1:getText("GraphicsQuality", "GraphicsQualityLabel")
        }, {
            v1.createElement(l_Slider_0, {
                AnchorPoint = Vector2.new(0, 0.5),
                Disabled = l_state_0.graphicsQualityAutoMode,
                Value = l_state_0.graphicsQuality,
                Min = 0,
                Max = v16,
                OnValueChanged = v26.setGraphicsQuality,
                Size = UDim2.new(0, 200, 0, 20),
                Padding = UDim.new(10, 10),
                SnapIncrement = 1,
                VerticalDragTolerance = 0
            }),
            v1.createElement(l_Checkbox_0, {
                Checked = l_state_0.graphicsQualityAutoMode,
                Key = "graphicsQualityAutoMode",
                OnClick = v26.toggleGraphicsQualityAutomatic,
                Text = l_Localization_1:getText("GraphicsQuality", "AutoGraphicsQualityLabel")
            })
        })
    });
end;
return (l_withContext_0({
    Localization = l_Localization_0,
    Stylizer = l_ContextServices_0.Stylizer
})(v11));


local l_StudioDeviceEmulatorService_0 = game:GetService("StudioDeviceEmulatorService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_UI_0 = v3.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_SimpleExpandablePane_0 = l_UI_0.SimpleExpandablePane;
local l_Checkbox_0 = l_UI_0.Checkbox;
local v11 = v2.PureComponent:extend("MultiTouchPane");
v11.init = function(v12, _)
    v12.state = {
        multiTouchEmulationOn = l_StudioDeviceEmulatorService_0.IsMultiTouchEmulationOn
    };
    v12.toggleMultiTouchEmulationOn = function()
        local v14 = not v12.state.multiTouchEmulationOn;
        l_StudioDeviceEmulatorService_0.IsMultiTouchEmulationOn = v14;
        v12:setState({
            multiTouchEmulationOn = v14
        });
    end;
end;
v11.render = function(v15)
    local l_props_0 = v15.props;
    local l_state_0 = v15.state;
    local l_Localization_1 = l_props_0.Localization;
    return v2.createElement(l_Pane_0, {
        AutomaticSize = Enum.AutomaticSize.Y,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        Layout = Enum.FillDirection.Vertical,
        Padding = 10,
        Spacing = 10
    }, {
        MultiTouchPane = v2.createElement(l_SimpleExpandablePane_0, {
            AutomaticSize = Enum.AutomaticSize.Y,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Layout = Enum.FillDirection.Vertical,
            AlwaysExpanded = true,
            LayoutOrder = 3,
            Style = "Box",
            Text = l_Localization_1:getText("MultiTouchPane", "MultiTouchPaneLabel")
        }, {
            v2.createElement(l_Checkbox_0, {
                Checked = l_state_0.multiTouchEmulationOn,
                Key = "multiTouchEmulationOn",
                OnClick = v15.toggleMultiTouchEmulationOn,
                Text = l_Localization_1:getText("MultiTouchPane", "MultiTouchPaneCheckboxLabel")
            })
        })
    });
end;
return (l_withContext_0({
    Localization = l_Localization_0,
    Stylizer = l_ContextServices_0.Stylizer
})(v11));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_SimpleExpandablePane_0 = l_UI_0.SimpleExpandablePane;
local l_TextInput_0 = l_UI_0.TextInput;
local v10 = v1.PureComponent:extend("NetworkPane");
local l_Network_0 = settings().Network;
local l_l_Network_0_PropertyChangedSignal_0 = l_Network_0:GetPropertyChangedSignal("IncomingReplicationLag");
v10.init = function(v13, _)
    v13.state = {
        incomingReplicationLag = tostring(l_Network_0.IncomingReplicationLag)
    };
    v13.incomingReplicationLagChangedConnection = l_l_Network_0_PropertyChangedSignal_0:Connect(function()
        v13:setState({
            incomingReplicationLag = tostring(l_Network_0.IncomingReplicationLag)
        });
    end);
end;
v10.willUnmount = function(v15)
    v15.incomingReplicationLagChangedConnection:Disconnect();
end;
v10.render = function(v16)
    local l_props_0 = v16.props;
    local l_state_0 = v16.state;
    local l_Localization_1 = l_props_0.Localization;
    return v1.createElement(l_Pane_0, {
        AutomaticSize = Enum.AutomaticSize.Y,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        Layout = Enum.FillDirection.Vertical,
        Padding = 10,
        Spacing = 10
    }, {
        networkPane = v1.createElement(l_SimpleExpandablePane_0, {
            AutomaticSize = Enum.AutomaticSize.Y,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Layout = Enum.FillDirection.Vertical,
            AlwaysExpanded = true,
            LayoutOrder = 2,
            Style = "Box",
            Text = l_Localization_1:getText("NetworkSettings", "NetworkReplicationLagLabel")
        }, {
            v1.createElement(l_TextInput_0, {
                PlaceholderText = l_Localization_1:getText("NetworkSettings", "NetworkReplicationLagPlaceholder"),
                ShouldFocus = true,
                Width = 100,
                MaxLength = 5,
                OnValidateText = function(v20)
                    local v21 = true;
                    if v20 ~= "" then
                        v21 = tonumber(v20) ~= nil;
                    end;
                    local v22 = nil;
                    if not v21 then
                        v22 = l_Localization_1:getText("NetworkSettings", "NetworkReplicationLagNotNumberError");
                    end;
                    return v21, v22;
                end,
                OnFormatText = function(v23)
                    if string.len(v23) > 5 then
                        return (string.sub(v23, 1, 5));
                    else
                        return v23;
                    end;
                end,
                Text = l_state_0.incomingReplicationLag,
                OnTextChanged = function(v24)
                    l_Network_0.IncomingReplicationLag = tonumber(v24 or 0);
                    v16:setState({
                        incomingReplicationLag = v24
                    });
                end
            })
        })
    });
end;
return (l_withContext_0({
    Localization = l_Localization_0,
    Stylizer = l_ContextServices_0.Stylizer
})(v10));


local v0 = require(script.Parent.Parent.Parent.Packages.Framework);
local l_ServiceWrapper_0 = v0.TestHelpers.ServiceWrapper;
local v2 = v0.ContextServices.ContextItem:extend("MultiTouchController");
v2.new = function(v3)
    local v4 = setmetatable({
        _studioDeviceEmulatorService = l_ServiceWrapper_0.new("StudioDeviceEmulatorService", v3),
        _screenGui = nil,
        _pivot = nil,
        _touches = {},
        _connectingLines = {},
        _mock = v3
    }, v2);
    v4._screenGui = v4:initScreenGui();
    v4._pivot = v4:makeNewPivotCircle();
    for v5 = 1, v4._studioDeviceEmulatorService:asService():GetMaxNumTouches() do
        v4._touches[v5] = v4:makeNewControlCircle();
        v4._connectingLines[v5] = v4:makeNewConnectingLine();
    end;
    if not v3 then
        v4._isMultiTouchEnabledChanged = v4._studioDeviceEmulatorService:asInstance():GetPropertyChangedSignal("IsMultiTouchEnabled"):Connect(function()
            if not v4._studioDeviceEmulatorService:asService().IsMultiTouchEnabled then
                v4._screenGui.Enabled = false;
                return ;
            else
                v4._screenGui.Enabled = true;
                v4:updateControlCirclePos(v4._pivot, v4._studioDeviceEmulatorService:asService().PivotPosition);
                for v6 = 1, #v4._touches do
                    v4:updateControlCirclePos(v4._touches[v6], v4._studioDeviceEmulatorService:asService():GetTouchPosition(v6 - 1));
                    v4:updateConnectingLine(v4._connectingLines[v6], v4._touches[v6]);
                end;
                return ;
            end;
        end);
        v4._pivotPositionChanged = v4._studioDeviceEmulatorService:asInstance():GetPropertyChangedSignal("PivotPosition"):Connect(function()
            v4:updateControlCirclePos(v4._pivot, v4._studioDeviceEmulatorService:asService().PivotPosition);
            for v7 = 1, #v4._touches do
                v4:updateConnectingLine(v4._connectingLines[v7], v4._touches[v7]);
            end;
        end);
        v4._touchPositionsChanged = v4._studioDeviceEmulatorService:asService().TouchPositionsChanged:Connect(function()
            for v8 = 1, #v4._touches do
                v4:updateControlCirclePos(v4._touches[v8], v4._studioDeviceEmulatorService:asService():GetTouchPosition(v8 - 1));
                v4:updateConnectingLine(v4._connectingLines[v8], v4._touches[v8]);
            end;
        end);
        v4._touchInBoundsChanged = v4._studioDeviceEmulatorService:asService().TouchInBoundsChanged:Connect(function()
            for v9 = 1, #v4._touches do
                v4:updateControlCircleColor(v4._touches[v9], v4._studioDeviceEmulatorService:asService():GetTouchInBounds(v9 - 1));
            end;
        end);
    end;
    return v4;
end;
v2.mock = function()
    return v2.new(true);
end;
v2.destroy = function(v10)
    if not v10._mock then
        v10._isMultiTouchEnabledChanged:Disconnect();
        v10._pivotPositionChanged:Disconnect();
        v10._touchPositionsChanged:Disconnect();
        v10._touchInBoundsChanged:Disconnect();
    end;
    if v10._screenGui then
        v10._screenGui:Destroy();
    end;
    v10._studioDeviceEmulatorService:destroy();
end;
v2.initScreenGui = function(_)
    local l_MultiTouchScreenGui_0 = game.CoreGui:FindFirstChild("MultiTouchScreenGui");
    if not l_MultiTouchScreenGui_0 then
        l_MultiTouchScreenGui_0 = Instance.new("ScreenGui");
        l_MultiTouchScreenGui_0.Name = "MultiTouchScreenGui";
        l_MultiTouchScreenGui_0.IgnoreGuiInset = true;
        l_MultiTouchScreenGui_0.Enabled = false;
        l_MultiTouchScreenGui_0.Parent = game.CoreGui;
        return l_MultiTouchScreenGui_0;
    else
        l_MultiTouchScreenGui_0:ClearAllChildren();
        return l_MultiTouchScreenGui_0;
    end;
end;
v2.makeNewControlCircle = function(v13)
    local l_Frame_0 = Instance.new("Frame");
    l_Frame_0.Size = UDim2.new(0.05, 0, 0.05, 0);
    l_Frame_0.AnchorPoint = Vector2.new(0.5, 0.5);
    l_Frame_0.BackgroundColor3 = Color3.fromRGB(0, 0, 0);
    l_Frame_0.BackgroundTransparency = 0.5;
    l_Frame_0.Parent = v13._screenGui;
    local l_UIAspectRatioConstraint_0 = Instance.new("UIAspectRatioConstraint");
    l_UIAspectRatioConstraint_0.AspectRatio = 1;
    l_UIAspectRatioConstraint_0.Parent = l_Frame_0;
    local l_UICorner_0 = Instance.new("UICorner");
    l_UICorner_0.CornerRadius = UDim.new(1, 0);
    l_UICorner_0.Parent = l_Frame_0;
    local l_UIStroke_0 = Instance.new("UIStroke");
    l_UIStroke_0.Transparency = 0.5;
    l_UIStroke_0.Parent = l_Frame_0;
    return l_Frame_0;
end;
v2.makeNewPivotCircle = function(v18)
    local l_Frame_1 = Instance.new("Frame");
    l_Frame_1.Parent = v18._screenGui;
    l_Frame_1.Size = UDim2.new(0.01, 0, 0.01, 0);
    l_Frame_1.AnchorPoint = Vector2.new(0.5, 0.5);
    l_Frame_1.BackgroundColor3 = Color3.fromRGB(0, 0, 0);
    l_Frame_1.BackgroundTransparency = 0.5;
    local l_UIAspectRatioConstraint_1 = Instance.new("UIAspectRatioConstraint");
    l_UIAspectRatioConstraint_1.AspectRatio = 1;
    l_UIAspectRatioConstraint_1.Parent = l_Frame_1;
    local l_UICorner_1 = Instance.new("UICorner");
    l_UICorner_1.CornerRadius = UDim.new(1, 0);
    l_UICorner_1.Parent = l_Frame_1;
    return l_Frame_1;
end;
v2.makeNewConnectingLine = function(v22)
    local l_Frame_2 = Instance.new("Frame");
    l_Frame_2.Parent = v22._screenGui;
    l_Frame_2.AnchorPoint = Vector2.new(0.5, 0.5);
    l_Frame_2.BackgroundColor3 = Color3.fromRGB(0, 0, 0);
    return l_Frame_2;
end;
v2.updateControlCirclePos = function(_, v25, v26)
    v25.Position = UDim2.new(0, v26.x, 0, v26.y);
end;
v2.updateControlCircleColor = function(_, v28, v29)
    if not v29 then
        v28.BackgroundColor3 = Color3.fromRGB(255, 0, 0);
        return ;
    else
        v28.BackgroundColor3 = Color3.fromRGB(0, 0, 0);
        return ;
    end;
end;
v2.updateConnectingLine = function(v30, v31, v32)
    local l_Offset_0 = v30._pivot.Position.X.Offset;
    local l_Offset_1 = v30._pivot.Position.Y.Offset;
    local l_Offset_2 = v32.Position.X.Offset;
    local l_Offset_3 = v32.Position.Y.Offset;
    v31.Size = UDim2.new(0, math.sqrt((l_Offset_2 - l_Offset_0) ^ 2 + (l_Offset_3 - l_Offset_1) ^ 2), 0, 0.5);
    v31.Position = UDim2.new(0, (l_Offset_0 + l_Offset_2) / 2, 0, (l_Offset_1 + l_Offset_3) / 2);
    v31.Rotation = math.deg((math.atan2(l_Offset_3 - l_Offset_1, l_Offset_2 - l_Offset_0)));
end;
return v2;


local l_StudioFixPluginWidgetLocalizedIds_0 = game:GetFastFlag("StudioFixPluginWidgetLocalizedIds");
local l_Parent_0 = script.Parent.Parent;
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.Framework);
local l_UI_0 = v3.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local l_DockWidget_0 = l_UI_0.DockWidget;
local l_ContextServices_0 = v3.ContextServices;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local l_Mouse_0 = l_ContextServices_0.Mouse;
local v11 = require(l_Parent_0.Src.Resources.MakeTheme);
local l_SourceStrings_0 = l_Parent_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_Parent_0.Src.Resources.Localization.LocalizedStrings;
local v14 = require(l_Parent_0.Src.Components.GraphicsPane);
local v15 = require(l_Parent_0.Src.Components.NetworkPane);
local v16 = require(l_Parent_0.Src.Components.MultiTouchPane);
local v17 = require(l_Parent_0.Src.Controllers.MultiTouchController);
local v18 = v2.PureComponent:extend("MainPlugin");
require(l_Parent_0.Bin.defineLuaFlags);
local function _()
    return game:GetFastFlag("StudioEnableMultiTouchGestureEmulation") and game:GetFastFlag("StudioUnlockMouseWhenEmulating");
end;
v18.init = function(v20, _)
    v20.state = {
        enabled = false
    };
    v20.toggleEnabled = function()
        v20:setState(function(v22)
            return {
                enabled = not v22.enabled
            };
        end);
    end;
    v20.onClose = function()
        v20:setState({
            enabled = false
        });
    end;
    v20.onRestore = function(v23)
        v20:setState({
            enabled = v23
        });
    end;
    v20.onDockWidgetCreated = function()
        v20.props.pluginLoaderContext.mainButtonClickedSignal:Connect(v20.toggleEnabled);
    end;
    v20.onWidgetEnabledChanged = function(v24)
        v20:setState({
            enabled = v24.Enabled
        });
    end;
    v20.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "DeviceEmulator"
    });
    v20.analytics = l_ContextServices_0.Analytics.new(function()
        return {};
    end, {});
    if game:GetFastFlag("StudioEnableMultiTouchGestureEmulation") and game:GetFastFlag("StudioUnlockMouseWhenEmulating") then
        v20.multiTouchController = v17.new();
    end;
end;
v18.willUnmount = function(v25)
    if v25.multiTouchController then
        v25.multiTouchController:destroy();
    end;
end;
v18.didUpdate = function(v26)
    v26.props.pluginLoaderContext.mainButton:SetActive(v26.state.enabled);
end;
v18.render = function(v27)
    local l_props_0 = v27.props;
    local l_state_0 = v27.state;
    local l_Plugin_1 = l_props_0.Plugin;
    local l_enabled_0 = l_state_0.enabled;
    local v32 = v2.createElement(v14, {});
    local v33 = v2.createElement(v15, {});
    local v34 = nil;
    if game:GetFastFlag("StudioEnableMultiTouchGestureEmulation") and game:GetFastFlag("StudioUnlockMouseWhenEmulating") then
        v34 = v2.createElement(v16, {});
    end;
    return l_ContextServices_0.provide({
        l_Plugin_0.new(l_Plugin_1),
        l_Mouse_0.new(l_Plugin_1:getMouse()),
        v11(),
        v27.localization,
        v27.analytics
    }, {
        MainWidget = v2.createElement(l_DockWidget_0, {
            Id = if not l_StudioFixPluginWidgetLocalizedIds_0 then nil else "DeviceEmulator",
            Enabled = l_enabled_0,
            Widget = l_props_0.pluginLoaderContext.mainDockWidget,
            Title = v27.localization:getText("Plugin", "Name"),
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            InitialDockState = Enum.InitialDockState.Bottom,
            Size = Vector2.new(360, 420),
            MinSize = Vector2.new(300, 200),
            OnClose = v27.onClose,
            ShouldRestore = true,
            OnWidgetRestored = v27.onRestore,
            OnWidgetCreated = v27.onDockWidgetCreated,
            [v2.Change.Enabled] = v27.onWidgetEnabledChanged
        }, {
            MainPane = v2.createElement(l_Pane_0, {
                Style = "Box",
                Size = UDim2.fromScale(1, 1),
                Position = UDim2.fromOffset(0, 0)
            }, {
                ScrollingFrame = v2.createElement(l_ScrollingFrame_0, {
                    AutomaticCanvasSize = Enum.AutomaticSize.Y,
                    CanvasSize = UDim2.fromScale(0, 0),
                    Layout = Enum.FillDirection.Vertical,
                    Position = UDim2.fromScale(0, 0),
                    ScrollingDirection = Enum.ScrollingDirection.Y
                }, {
                    ContainerPane = v2.createElement(l_Pane_0, {
                        AutomaticSize = Enum.AutomaticSize.Y,
                        Size = UDim2.fromScale(1, 0),
                        AnchorPoint = Vector2.new(0, 0),
                        Position = UDim2.fromScale(0, 0),
                        Layout = Enum.FillDirection.Vertical,
                        Padding = 5,
                        Spacing = 5
                    }, {
                        GraphicsPane = v32,
                        NetworkPane = v33,
                        MultiTouchPane = v34
                    })
                })
            })
        })
    });
end;
return v18;


local l_Workspace_0 = game:GetService("Workspace");
local v1 = require(script.Parent.hasInternalPermission)();
local v2 = pcall(function()
    return game:GetService("ProcessService");
end);
local function _(v3, v4)
    v4 = v4 or false;
    return function()
        local l_DeviceEmulatorFlags_0 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_0 and l_DeviceEmulatorFlags_0:FindFirstChild(v3) then
            return l_DeviceEmulatorFlags_0[v3].Value;
        else
            return v4;
        end;
    end;
end;
local v7 = {};
local v8 = v2 or false;
local v9 = "RunningUnderCLI";
local l_v9_0 = v9 --[[ copy: 7 -> 8 ]];
local v11;
do
    local l_v8_0 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_1 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_1 and l_DeviceEmulatorFlags_1:FindFirstChild(l_v9_0) then
            return l_DeviceEmulatorFlags_1[l_v9_0].Value;
        else
            return l_v8_0;
        end;
    end;
end;
v7.RunningUnderCLI = v11;
v8 = nil or false;
v9 = "RunTests";
local l_v9_1 = v9 --[[ copy: 7 -> 9 ]];
do
    local l_v8_1 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_2 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_2 and l_DeviceEmulatorFlags_2:FindFirstChild(l_v9_1) then
            return l_DeviceEmulatorFlags_2[l_v9_1].Value;
        else
            return l_v8_1;
        end;
    end;
end;
v7.RunTests = v11;
v8 = nil or false;
v9 = "LogTestsQuiet";
local l_v9_2 = v9 --[[ copy: 7 -> 10 ]];
do
    local l_v8_2 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_3 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_3 and l_DeviceEmulatorFlags_3:FindFirstChild(l_v9_2) then
            return l_DeviceEmulatorFlags_3[l_v9_2].Value;
        else
            return l_v8_2;
        end;
    end;
end;
v7.LogTestsQuiet = v11;
v8 = nil or false;
v9 = "LogAnalytics";
local l_v9_3 = v9 --[[ copy: 7 -> 11 ]];
do
    local l_v8_3 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_4 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_4 and l_DeviceEmulatorFlags_4:FindFirstChild(l_v9_3) then
            return l_DeviceEmulatorFlags_4[l_v9_3].Value;
        else
            return l_v8_3;
        end;
    end;
end;
v7.LogAnalytics = v11;
v8 = nil or false;
v9 = "RunDeveloperFrameworkTests";
local l_v9_4 = v9 --[[ copy: 7 -> 12 ]];
do
    local l_v8_4 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_5 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_5 and l_DeviceEmulatorFlags_5:FindFirstChild(l_v9_4) then
            return l_DeviceEmulatorFlags_5[l_v9_4].Value;
        else
            return l_v8_4;
        end;
    end;
end;
v7.RunDeveloperFrameworkTests = v11;
v8 = (v7.RunTests() or v1) or false;
v9 = "EnableRoactConfigs";
do
    local l_v8_5 = v8;
    v11 = function()
        local l_DeviceEmulatorFlags_6 = l_Workspace_0:FindFirstChild("DeviceEmulatorFlags");
        if l_DeviceEmulatorFlags_6 and l_DeviceEmulatorFlags_6:FindFirstChild(v9) then
            return l_DeviceEmulatorFlags_6[v9].Value;
        else
            return l_v8_5;
        end;
    end;
end;
v7.EnableRoactConfigs = v11;
return v7;


return function()
    if not require(script.Parent.DebugFlags).RunningUnderCLI() then
        if require(script.Parent.hasInternalPermission)() then
            return true;
        else
            return false;
        end;
    else
        return false;
    end;
end;


return require(script.Parent.Action)(script.Name, function(v0)
    local v1 = typeof(v0);
    assert(v1 == "Instance", "Expected draft to be Instance. Got '" .. v1 .. "'");
    assert(v0:IsA("LuaSourceContainer"), "Expected draft to be a LuaSourceContainer. Got '" .. v0.ClassName .. "'");
    return {
        Draft = v0
    };
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(script.Parent.Action);
local v2 = require(l_Parent_0.Src.Symbols.AutosaveState);
local v3 = require(l_Parent_0.Src.Symbols.CommitState);
local v4 = require(l_Parent_0.Src.Symbols.DraftState);
local _ = function(v5, v6)
    for _, v8 in pairs(v5) do
        if v8 == v6 then
            return true;
        end;
    end;
    return false;
end;
return v1(script.Name, function(v10, v11, v12)
    local v13 = tostring(v11);
    local v14 = tostring(v12);
    local v15 = typeof(v10);
    assert(v15 == "Instance", "Expected draft to be Instance. Got '" .. v15 .. "'");
    assert(v10:IsA("LuaSourceContainer"), "Expected draft to be a LuaSourceContainer. Got '" .. v10.ClassName .. "'");
    local v16;
    for _, v18 in pairs(v4) do
        if v18 == v11 then
            v16 = true;
            goto label0 --[[  true, false  ]];
        end;
    end;
    v16 = false;
    ::label0::;
    assert(v16 ~= nil, "Expected valid DraftState. Got '" .. v13 .. "'");
    if not (v11 ~= v4.Outdated) or v11 == v4.Deleted then
        assert(typeof(v12) == "boolean", "Expected type boolean for state type " .. v13 .. ". Got '" .. v14 .. "'");
    elseif v11 == v4.Autosaved then
        local v19;
        for _, v21 in pairs(v2) do
            if v21 == v12 then
                v19 = true;
                goto label1 --[[  true, false  ]];
            end;
        end;
        v19 = false;
        ::label1::;
        assert(v19, "Expected valid " .. v13 .. ". Got '" .. v14 .. "'");
    elseif v11 == v4.Committed then
        local v22;
        for _, v24 in pairs(v3) do
            if v24 == v12 then
                v22 = true;
                goto label2 --[[  true, false  ]];
            end;
        end;
        v22 = false;
        ::label2::;
        assert(v22, "Expected valid " .. v13 .. ". Got '" .. v14 .. "'");
    end;
    return {
        Draft = v10,
        StateType = v11,
        StateValue = v12
    };
end);


return require(script.Parent.Action)(script.Name, function(v0)
    local v1 = typeof(v0);
    assert(v1 == "table", "Expected draft to be table. Got '" .. v1 .. "'");
    for v2, v3 in ipairs(v0) do
        local v4 = typeof(v3);
        local v5 = false;
        if v4 == "Instance" then
            v5 = v3:IsA("LuaSourceContainer");
        end;
        assert(v5, "Expected drafts[" .. v2 .. "] to be a LuaSourceContainer. Got '" .. (v4 == "Instance" and v3.ClassName or v4) .. "'");
    end;
    return {
        Drafts = v0
    };
end);


return require(script.Parent.Action)(script.Name, function(v0, v1)
    assert(type(v0) == "boolean", string.format("Expected isEnabled to be a boolean, received %s", (tostring(v0))));
    assert(type(v1) == (v0 and "table" or "string"));
    return {
        isEnabled = v0,
        errorMessage = not v0 and v1 or nil
    };
end);


return require(script.Parent.Action)(script.Name, function(v0)
    if v0 then
        assert(type(v0) == "string", string.format("Expected aString to be a string, received %s", (tostring(v0))));
    end;
    return {
        message = v0
    };
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Cryo);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_showContextMenu_0 = v3.UI.showContextMenu;
local v7 = v1.PureComponent:extend("AbstractItemView");
v7.init = function(v8)
    v8:setState({
        selection = {},
        selectionAnchorTop = nil,
        selectionAnchorBottom = nil
    });
    v8.lastItemClicked = nil;
    v8.lastClickTime = 0;
    v8.getPressedModifiers = function(v9)
        return {
            Toggle = v9:IsModifierKeyDown(Enum.ModifierKey.Ctrl),
            Expand = v9:IsModifierKeyDown(Enum.ModifierKey.Shift)
        };
    end;
    v8.itemRightClicked = function(v10)
        if v8.props.MakeMenuActions then
            if not v8.state.selection[v10] then
                v8.setSelection(v10);
            end;
            local v11 = v8.props.Plugin:get();
            local v12 = v8.makeMenuActions();
            task.spawn(function()
                l_showContextMenu_0(v11, v12);
            end);
            return ;
        else
            return ;
        end;
    end;
    v8.itemClicked = function(v13, v14)
        local v15 = v8.getPressedModifiers(v14);
        if not v15.Expand then
            if not v15.Toggle then
                v8.setSelection(v13);
            else
                v8.toggleSelected(v13);
            end;
        else
            v8.expandSelection(v13);
        end;
        if v8.lastItemClicked == v13 then
            if tick() - v8.lastClickTime < 0.5 then
                v8.itemDoubleClicked(v13);
                v8.lastItemClicked = nil;
            end;
        else
            v8.lastItemClicked = v13;
        end;
        v8.lastClickTime = tick();
    end;
    v8.itemDoubleClicked = function(v16)
        if v8.props.OnDoubleClicked then
            v8.props.OnDoubleClicked(v16);
        end;
    end;
    v8.selectionChanged = function(v17)
        if v8.props.OnSelectionChanged then
            v8.props.OnSelectionChanged(v17);
        end;
    end;
    v8.setSelection = function(v18)
        v8:setState({
            selection = {
                [v18] = true
            },
            selectionAnchorTop = v18,
            selectionAnchorBottom = v18
        });
        v8.selectionChanged(v8.state.selection);
    end;
    v8.toggleSelected = function(v19)
        local l_Items_0 = v8.props.Items;
        local v21 = v2.Dictionary.join(v8.state.selection, {
            [v19] = (not not not (v8.state.selection[v19] ~= nil) or v2.None) or true
        });
        local v22 = nil;
        local v23 = nil;
        for _, v25 in ipairs(l_Items_0) do
            if v21[v25] then
                v22 = v22 or v25;
                v23 = v25;
            end;
        end;
        v8:setState({
            selection = v21,
            selectionAnchorTop = v22,
            selectionAnchorBottom = v23
        });
        v8.selectionChanged(v8.state.selection);
    end;
    v8.expandSelection = function(v26)
        local l_Items_1 = v8.props.Items;
        local v28 = nil;
        local v29 = nil;
        local v30 = nil;
        for v31, v32 in ipairs(l_Items_1) do
            if v32 == v8.state.selectionAnchorTop then
                v28 = v31;
            end;
            if v32 == v8.state.selectionAnchorBottom then
                v29 = v31;
            end;
            if v32 == v26 then
                v30 = v31;
            end;
        end;
        v28 = v28 or v30;
        v29 = v29 or v30;
        local v33 = {};
        for v34 = math.min(v28, v30), math.max(v29, v30) do
            v33[l_Items_1[v34]] = true;
        end;
        v8:setState({
            selection = v33
        });
        v8.selectionChanged(v8.state.selection);
    end;
    v8.makeMenuActions = function()
        local l_Items_2 = v8.props.Items;
        local l_MakeMenuActions_0 = v8.props.MakeMenuActions;
        local v37 = {};
        for _, v39 in ipairs(l_Items_2) do
            if v8.state.selection[v39] then
                table.insert(v37, v39);
            end;
        end;
        return l_MakeMenuActions_0(v37);
    end;
    v8.getSelectedIds = function()
        local v40 = {};
        for _, v42 in ipairs(v8.props.Items) do
            if v8.state.selection[v42] then
                table.insert(v40, v42);
            end;
        end;
        return v40;
    end;
    if v8.props.GetCurrentSelection then
        v8.props.GetCurrentSelection.OnInvoke = v8.getSelectedIds;
    end;
end;
v7.didUpdate = function(v43, v44, _)
    if v44.GetCurrentSelection ~= v43.props.GetCurrentSelection then
        if v44.GetCurrentSelection then
            v44.GetCurrentSelection.OnInvoke = nil;
        end;
        if v43.props.GetCurrentSelection then
            v43.props.GetCurrentSelection.OnInvoke = v43.getSelectedIds;
        end;
    end;
end;
v7.render = function(v46)
    local l_Items_3 = v46.props.Items;
    local l_RenderItem_0 = v46.props.RenderItem;
    local l_RenderContents_0 = v46.props.RenderContents;
    local v50 = {};
    local v51 = {};
    for v52, v53 in ipairs(l_Items_3) do
        local v54 = v46.state.selection[v53] == true;
        v50[v53] = true;
        v51[v53] = {
            Button = l_RenderItem_0(v53, {
                Selected = v54,
                OnPress = function(_, _, v57)
                    v46.itemClicked(v53, v57);
                end,
                OnSecondaryPress = function()
                    v46.itemRightClicked(v53);
                end
            }),
            Index = v52
        };
    end;
    local v58 = false;
    for v59, _ in pairs(v46.state.selection) do
        if not v50[v59] then
            v46.state.selection[v59] = nil;
            v58 = true;
        end;
    end;
    if v58 then
        v46.selectionChanged(v46.state.selection);
    end;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundTransparency = 1
    }, {
        Contents = l_RenderContents_0(v51)
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin
})(v7));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_UI_0 = v2.UI;
local l_BulletList_0 = l_UI_0.BulletList;
local l_map_0 = v2.Dash.map;
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_StyledDialog_0 = l_UI_0.StyledDialog;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local l_TextLabel_0 = l_UI_0.TextLabel;
local v11 = Vector2.new(430, 200);
local v12 = UDim.new(0, 32);
local v13 = {
    PaddingLeft = UDim.new(0, 16),
    PaddingRight = UDim.new(0, 16),
    PaddingTop = UDim.new(0, 48),
    PaddingBottom = UDim.new(0, 48)
};
local v14 = v1.PureComponent:extend("DraftDiscardDialog");
v14.init = function(v15)
    v15:setState({});
end;
v14.render = function(v16)
    local l_Localization_0 = v16.props.Localization;
    local l_Stylizer_0 = v16.props.Stylizer;
    local l_Drafts_0 = v16.props.Drafts;
    local l_ChoiceSelected_0 = v16.props.ChoiceSelected;
    return v1.createElement(l_StyledDialog_0, {
        Title = l_Localization_0:getText("DiscardDialog", "Title"),
        Modal = true,
        Buttons = {
            {
                Key = true,
                Text = l_Localization_0:getText("Dialog", "Yes"),
                Style = "RoundLargeText"
            },
            {
                Key = false,
                Text = l_Localization_0:getText("Dialog", "No"),
                Style = "RoundLargeTextPrimary"
            }
        },
        ButtonHorizontalAlignment = Enum.HorizontalAlignment.Center,
        OnButtonPressed = l_ChoiceSelected_0,
        OnClose = function()
            l_ChoiceSelected_0(false);
        end,
        MinContentSize = v11
    }, {
        Layout = v1.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            Padding = v12,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        Padding = v1.createElement("UIPadding", v13),
        Header = v1.createElement(l_TextLabel_0, {
            LayoutOrder = 1,
            AutomaticSize = Enum.AutomaticSize.XY,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextWrapped = true,
            Text = l_Localization_0:getText("DiscardDialog", "ConfirmQuestion"),
            TextSize = 22,
            Font = l_Stylizer_0.dialogUILibrary.HeaderFont,
            TextColor = l_Stylizer_0.dialogUILibrary.HeaderTextColor
        }),
        DraftList = v1.createElement(l_ScrollingFrame_0, {
            AutomaticCanvasSize = Enum.AutomaticSize.Y,
            LayoutOrder = 2
        }, {
            Bullets = v1.createElement(l_BulletList_0, {
                TextTruncate = Enum.TextTruncate.AtEnd,
                Items = l_map_0(l_Drafts_0, function(v21)
                    return v21.Name;
                end)
            })
        })
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v14));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v6 = require(l_Parent_0.Src.Components.DraftStatusIndicator);
local l_UI_0 = v3.UI;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_TreeViewRow_0 = l_UI_0.TreeViewRow;
local v10 = require(l_Parent_0.Src.Symbols.DraftState);
local v11 = require(l_Parent_0.Src.Symbols.CommitState);
local v12 = require(l_Parent_0.Src.Symbols.AutosaveState);
local v13 = v1.PureComponent:extend("DraftListItem");
v13.init = function(v14)
    v14:setState({
        draftName = nil
    });
    v14.nameUpdated = function()
        v14:setState({
            draftName = v14.props.Draft.Name
        });
    end;
    v14.getDraftIndicator = function()
        local v15 = v14.props.Drafts[v14.props.Draft];
        local l_Localization_0 = v14.props.Localization;
        local l_Stylizer_0 = v14.props.Stylizer;
        local v18 = nil;
        local v19 = nil;
        if v15[v10.Committed] == v11.Committed then
            v18 = l_Localization_0:getText("Tooltip", "DraftCommitted");
            v19 = l_Stylizer_0.icons.DraftState.Committed;
        elseif not v15[v10.Deleted] then
            if v15[v10.Outdated] then
                v18 = l_Localization_0:getText("Tooltip", "DraftOutdated");
                v19 = l_Stylizer_0.icons.DraftState.Outdated;
            end;
        else
            v18 = l_Localization_0:getText("Tooltip", "ScriptDeleted");
            v19 = l_Stylizer_0.icons.DraftState.Deleted;
        end;
        if not v19 then
            return ;
        else
            return v1.createElement(v6, {
                Tooltip = v18,
                Icon = v19
            });
        end;
    end;
    v14.getStatusText = function()
        local v20 = v14.props.Drafts[v14.props.Draft];
        local l_Localization_1 = v14.props.Localization;
        if v20[v10.Committed] == v11.Committed then
            return "";
        elseif v20[v10.Committed] == v11.Committing then
            return l_Localization_1:getText("StatusText", "Committing");
        elseif v20[v10.Autosaved] == v12.Saved then
            return l_Localization_1:getText("StatusText", "Uncommitted");
        elseif v20[v10.Autosaved] == v12.Saving then
            return l_Localization_1:getText("StatusText", "Saving");
        else
            return "";
        end;
    end;
    v14.getLabelText = function()
        local l_Draft_0 = v14.props.Draft;
        local l_draftName_0 = v14.state.draftName;
        local v24 = v14.props.Drafts[l_Draft_0];
        local l_Localization_2 = v14.props.Localization;
        if v24[v10.Committed] == v11.Committed then
            return l_Localization_2:getText("DraftItem", "CommittedLabel", {
                l_draftName_0
            });
        else
            return ".../" .. l_draftName_0;
        end;
    end;
    v14.nameChangedConnection = v14.props.Draft:GetPropertyChangedSignal("Name"):Connect(v14.nameUpdated);
    v14.nameUpdated();
end;
v13.didUpdate = function(v26, v27)
    assert(v27.Draft == v26.props.Draft, "The Draft property of DraftListItem should never be changed. These should be keyed by the draft");
end;
v13.willUnmount = function(v28)
    v28.nameChangedConnection:Disconnect();
end;
v13.render = function(v29)
    local l_Drafts_0 = v29.props.Drafts;
    local l_Draft_1 = v29.props.Draft;
    if l_Drafts_0[l_Draft_1] then
        local v32 = v29.getLabelText();
        local v33 = v29.getStatusText();
        local l_RowProps_0 = v29.props.RowProps;
        return v1.createElement(l_TreeViewRow_0, {
            TailItem = function()
                return v1.createElement(l_TextLabel_0, {
                    AutomaticSize = Enum.AutomaticSize.XY,
                    Style = "Label",
                    Text = v33
                });
            end,
            BeforeIcon = function()
                return v29.getDraftIndicator();
            end,
            Children = {},
            Depth = 0,
            Index = 1,
            Item = {
                text = v32,
                tooltip = l_Draft_1:getFullName()
            },
            OnToggle = function()
            end,
            OnPress = l_RowProps_0.OnPress,
            OnSecondaryPress = l_RowProps_0.OnSecondaryPress,
            Selected = l_RowProps_0.Selected
        });
    else
        return nil;
    end;
end;
return v2.connect(function(v35, _)
    return {
        Drafts = v35.Drafts
    };
end)((l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v13)));


local l_RunService_0 = game:GetService("RunService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.ContextServices.DraftsService);
local v3 = require(l_Parent_0.Packages.Roact);
local v4 = require(l_Parent_0.Packages.RoactRodux);
local v5 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v5.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_GetTextSize_0 = v5.Util.GetTextSize;
local v9 = require(l_Parent_0.Src.Components.DraftDiscardDialog);
local v10 = require(l_Parent_0.Src.Components.DraftListItem);
local v11 = require(l_Parent_0.Src.Components.ListItemView);
local l_Button_0 = v5.UI.Button;
local l_StyleModifier_0 = v5.Util.StyleModifier;
local v14 = require(l_Parent_0.Src.Actions.DraftStateChangedAction);
local v15 = require(l_Parent_0.Src.Symbols.DraftState);
local v16 = require(l_Parent_0.Src.Symbols.CommitState);
local v17 = v3.Component:extend("DraftListView");
v17.init = function(v18)
    local v19 = nil;
    v18:setState({
        draftsHasActiveSelection = false
    });
    v18.GetCurrentSelection = Instance.new("BindableFunction");
    v18.commitSelectedScripts = function()
        if not (next(v18.props.Drafts) == nil) then
            local v20 = v18.GetCurrentSelection:Invoke();
            if #v20 == 0 then
                return ;
            else
                v18.commitChanges(v20);
                return ;
            end;
        else
            return ;
        end;
    end;
    v18.openScripts = function(v21)
        local v22 = v18.props.Plugin:get();
        for _, v24 in pairs(v21) do
            v22:OpenScript(v24);
        end;
    end;
    v18.diffChanges = function(v25)
        v19 = v18.props.DraftService:get();
        v19:ShowDiffsAgainstServer(v25);
    end;
    v18.commitChanges = function(v26)
        v19 = v18.props.DraftService:get();
        v18.props.DraftsCommitted(v26);
        v19:CommitEdits(v26);
    end;
    v18.updateSource = function(v27)
        v19 = v18.props.DraftService:get();
        v19:UpdateToLatestVersion(v27);
    end;
    v18.restoreScripts = function(v28)
        v19 = v18.props.DraftService:get();
        v19:RestoreScripts(v28);
    end;
    v18.promptDiscardEdits = function(v29)
        v18:setState({
            draftsPendingDiscard = v29
        });
    end;
    v18.discardPromptClosed = function(v30)
        if v30 then
            v19 = v18.props.DraftService:get();
            v19:DiscardEdits(v18.state.draftsPendingDiscard);
        end;
        v18:setState({
            draftsPendingDiscard = v3.None
        });
    end;
    v18.getIndicatorEnabled = function(v31)
        local v32 = v18.props.Drafts[v31];
        local v33 = true;
        if v32[v15.Committed] ~= v16.Committed then
            v33 = v32[v15.Deleted] or v32[v15.Outdated];
        end;
        return v33;
    end;
    v18.getCommitButtonEnabled = function()
        return l_RunService_0:IsEdit() and v18.state.draftsHasActiveSelection;
    end;
    v18.onDoubleClicked = function(v34)
        v18.openScripts({
            v34
        });
    end;
    v18.onSelectionChanged = function(v35)
        if v35 and next(v35) == nil then
            v18:setState({
                draftsHasActiveSelection = false
            });
            return ;
        else
            v18:setState({
                draftsHasActiveSelection = true
            });
            return ;
        end;
    end;
    v18.makeMenuActions = function(v36)
        local l_Localization_0 = v18.props.Localization;
        local v38 = true;
        local v39 = true;
        local v40 = true;
        local v41 = true;
        local v42 = true;
        local v43 = true;
        local v44 = true;
        local v45 = true;
        for _, v47 in ipairs(v36) do
            local v48 = v18.props.Drafts[v47];
            if not v48[v15.Deleted] then
                if not v48[v15.Outdated] then
                    v38 = false;
                else
                    v43 = false;
                end;
            else
                v41 = false;
                v43 = false;
                v38 = false;
            end;
            if not v48[v15.Deleted] then
                v39 = false;
            end;
            if v48[v15.Committed] == v16.Committing then
                v40 = false;
                v44 = false;
                v42 = false;
                v43 = false;
                v41 = false;
                v45 = false;
            end;
        end;
        if not l_RunService_0:IsEdit() then
            v39 = false;
            v38 = false;
            v43 = false;
            v41 = false;
            v45 = false;
        end;
        return {
            {
                Text = l_Localization_0:getText("ContextMenu", "OpenScript"),
                Enabled = v40,
                OnItemClicked = function()
                    v18.openScripts(v36);
                end
            },
            {
                Text = l_Localization_0:getText("ContextMenu", "ShowDiff"),
                Enabled = v41,
                OnItemClicked = function()
                    v18.diffChanges(v36);
                end
            },
            v38 and {
                Text = l_Localization_0:getText("ContextMenu", "Update"),
                Enabled = v42,
                OnItemClicked = function()
                    v18.updateSource(v36);
                end
            },
            not v38 and {
                Text = l_Localization_0:getText("ContextMenu", "Commit"),
                Enabled = v43,
                OnItemClicked = function()
                    v18.commitChanges(v36);
                end
            },
            v39 and {
                Text = l_Localization_0:getText("ContextMenu", "Restore"),
                Enabled = v44,
                OnItemClicked = function()
                    v18.restoreScripts(v36);
                end
            },
            {
                Text = l_Localization_0:getText("ContextMenu", "Revert"),
                Enabled = v45,
                OnItemClicked = function()
                    v18.promptDiscardEdits(v36);
                end
            }
        };
    end;
end;
v17.render = function(v49)
    local l_Localization_1 = v49.props.Localization;
    local l_Stylizer_0 = v49.props.Stylizer;
    local l_Drafts_0 = v49.props.Drafts;
    local l_draftsPendingDiscard_0 = v49.state.draftsPendingDiscard;
    local v54 = l_draftsPendingDiscard_0 ~= nil;
    local v55 = next(l_Drafts_0) == nil;
    local v56 = v49.getCommitButtonEnabled();
    local v57 = false;
    local v58 = {};
    for v59, _ in pairs(l_Drafts_0) do
        table.insert(v58, v59);
        if not v57 then
            v57 = v49.getIndicatorEnabled(v59);
        end;
    end;
    table.sort(v58, function(v61, v62)
        return v61.Name:lower() < v62.Name:lower();
    end);
    local v63 = l_Localization_1:getText("Toolbar", "CommitButton");
    return v3.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0)
    }, {
        UIListLayout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        Toolbar = v3.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 32),
            LayoutOrder = 0
        }, {
            UIPadding = v3.createElement("UIPadding", {
                PaddingTop = UDim.new(0, 4),
                PaddingRight = UDim.new(0, 4),
                PaddingBottom = UDim.new(0, 4),
                PaddingLeft = UDim.new(0, 4)
            }),
            UIListLayout = v3.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Right,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            CommitButton = v3.createElement(l_Button_0, {
                OnClick = v49.commitSelectedScripts,
                Size = UDim2.new(0, l_GetTextSize_0(v63).X + 20, 1, 0),
                StyleModifier = if v56 then nil else l_StyleModifier_0.Disabled,
                Style = "RoundPrimary",
                Text = v63
            })
        }),
        Container = v3.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 1, -32),
            LayoutOrder = 1
        }, {
            ListItemView = v3.createElement(v11, {
                Items = v58,
                ItemHeight = 24,
                GetCurrentSelection = v49.GetCurrentSelection,
                OnDoubleClicked = v49.onDoubleClicked,
                OnSelectionChanged = v49.onSelectionChanged,
                MakeMenuActions = v49.makeMenuActions,
                RenderItem = function(v64, v65)
                    return v3.createElement(v10, {
                        Draft = v64,
                        RowProps = v65,
                        IndicatorMargin = not v57 and 0 or 24
                    });
                end
            }),
            EmptyLabel = v55 and v3.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, -16, 1, -16),
                Position = UDim2.new(0.5, 0, 0.5, 0),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Text = l_Localization_1:getText("Main", "NoDrafts"),
                TextColor3 = l_Stylizer_0.labels.MainText,
                TextSize = 22,
                Font = l_Stylizer_0.labels.MainFont,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top
            })
        }),
        DiscardDialog = v54 and v3.createElement(v9, {
            Drafts = l_draftsPendingDiscard_0,
            ChoiceSelected = v49.discardPromptClosed
        })
    });
end;
return v4.connect(function(v66, _)
    return {
        Drafts = v66.Drafts
    };
end, function(v68)
    return {
        DraftsCommitted = function(v69)
            for _, v71 in ipairs(v69) do
                v68(v14(v71, v15.Committed, v16.Committing));
            end;
        end
    };
end)((l_withContext_0({
    DraftService = v2,
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin,
    Stylizer = l_ContextServices_0.Stylizer
})(v17)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_Tooltip_0 = require(l_Parent_0.Packages.Framework).UI.Tooltip;
local v3 = v1.PureComponent:extend("DraftStatusIndicator");
v3.render = function(v4)
    local l_Tooltip_1 = v4.props.Tooltip;
    return v1.createElement("ImageLabel", {
        BackgroundTransparency = 1,
        Size = UDim2.fromOffset(16, 16),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        Image = v4.props.Icon
    }, {
        Tooltip = l_Tooltip_1 and v1.createElement(l_Tooltip_0, {
            Text = l_Tooltip_1,
            Enabled = true
        })
    });
end;
return v3;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v4 = v1.Component:extend("FeatureDisabledPage");
v4.render = function(v5)
    local l_Stylizer_0 = v5.props.Stylizer;
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0)
    }, {
        UIPadding = v1.createElement("UIPadding", {
            PaddingBottom = UDim.new(0, 16),
            PaddingTop = UDim.new(0, 16),
            PaddingLeft = UDim.new(0, 16),
            PaddingRight = UDim.new(0, 16)
        }),
        Error = v1.createElement("TextLabel", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = 1,
            Text = v5.props.Text,
            Font = l_Stylizer_0.labels.MainFont,
            TextColor3 = l_Stylizer_0.labels.MainText,
            TextSize = 18,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center,
            TextWrapped = true
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v4));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Src.Components.AbstractItemView);
local l_UI_0 = v1.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local v7 = v2.Component:extend("ListItemView");
v7.init = function(v8)
    v8:setState({});
    v8.canvasRef = v2.createRef();
    v8.contentSizeChanged = function(v9)
        local l_current_0 = v8.canvasRef.current;
        if l_current_0 then
            l_current_0.CanvasSize = UDim2.new(1, 0, 0, v9.Y);
        end;
    end;
end;
v7.render = function(v11)
    local l_ItemHeight_0 = v11.props.ItemHeight;
    local l_Items_0 = v11.props.Items;
    local l_RenderItem_0 = v11.props.RenderItem;
    local l_MakeMenuActions_0 = v11.props.MakeMenuActions;
    local l_OnDoubleClicked_0 = v11.props.OnDoubleClicked;
    local l_OnSelectionChanged_0 = v11.props.OnSelectionChanged;
    local l_ButtonStyle_0 = v11.props.ButtonStyle;
    local l_GetCurrentSelection_0 = v11.props.GetCurrentSelection;
    local l_VerticalAlignment_0 = v11.props.VerticalAlignment;
    local l_Padding_0 = v11.props.Padding;
    return v2.createElement(v3, {
        Size = UDim2.new(1, 0, 1, 0),
        GetCurrentSelection = l_GetCurrentSelection_0,
        OnDoubleClicked = l_OnDoubleClicked_0,
        OnSelectionChanged = l_OnSelectionChanged_0,
        MakeMenuActions = l_MakeMenuActions_0,
        ButtonStyle = l_ButtonStyle_0,
        Items = l_Items_0,
        RenderItem = l_RenderItem_0,
        RenderContents = function(v22)
            local v23 = {};
            for v24, v25 in pairs(v22) do
                v23[v24] = v2.createElement("Frame", {
                    LayoutOrder = v25.Index,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 0, l_ItemHeight_0)
                }, {
                    Button = v25.Button
                });
            end;
            return v2.createElement(l_ScrollingFrame_0, {
                AutomaticCanvasSize = Enum.AutomaticSize.Y,
                [v2.Ref] = v11.canvasRef
            }, {
                UIListLayout = v2.createElement("UIListLayout", {
                    VerticalAlignment = l_VerticalAlignment_0,
                    Padding = l_Padding_0,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Horizontal,
                    [v2.Change.AbsoluteContentSize] = function(v26)
                        v11.contentSizeChanged(v26.AbsoluteContentSize);
                    end
                }),
                FitContent = v2.createElement(l_Pane_0, {
                    AutomaticSize = Enum.AutomaticSize.Y,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    Layout = Enum.FillDirection.Vertical
                }, v23)
            });
        end
    });
end;
return v7;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v6 = require(l_Parent_0.Src.Components.DraftListView);
local v7 = require(l_Parent_0.Src.Components.FeatureDisabledPage);
local l_LoadingIndicator_0 = v3.UI.LoadingIndicator;
local v9 = v1.Component:extend("MainView");
v9.render = function(v10)
    local l_Stylizer_0 = v10.props.Stylizer;
    local l_DraftsServiceEnabled_0 = v10.props.DraftsServiceEnabled;
    local l_DraftsServiceError_0 = v10.props.DraftsServiceError;
    local v14 = l_DraftsServiceEnabled_0 == nil;
    local _ = nil;
    return v1.createElement("Frame", {
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        Size = UDim2.new(1, 0, 1, 0)
    }, if not v14 then if l_DraftsServiceEnabled_0 then {
        ScriptList = v1.createElement(v6)
    } else {
        FeatureDisabledPage = v1.createElement(v7, {
            Text = l_DraftsServiceError_0
        })
    } else {
        LoadingIndicator = v1.createElement(l_LoadingIndicator_0, {
            Position = UDim2.new(0.5, 0, 0.5, 0),
            AnchorPoint = Vector2.new(0.5, 0.5)
        })
    });
end;
return v2.connect(function(v16, _)
    local l_DraftsServiceStatus_0 = v16.DraftsServiceStatus;
    return {
        DraftsServiceEnabled = l_DraftsServiceStatus_0.Enabled,
        DraftsServiceError = l_DraftsServiceStatus_0.Error
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v9)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v3 = require(l_Parent_0.Src.ContextServices.DraftsService);
local v4 = v1.PureComponent:extend("ServiceWrapper");
v4.init = function(v5)
    assert(v5.props[v1.Children] ~= nil, "Expected child elements to wrap");
    assert(v5.props.draftsService ~= nil, "Expected a DraftsService object");
    assert(v5.props.localization ~= nil, "Expected a Localization object");
    assert(v5.props.plugin ~= nil, "Expected a plugin object");
    assert(v5.props.store ~= nil, "Expected a Rodux Store object");
    assert(v5.props.theme ~= nil, "Expected a PluginTheme object");
end;
v4.render = function(v6)
    return l_ContextServices_0.provide({
        l_ContextServices_0.Store.new(v6.props.store),
        l_ContextServices_0.Focus.new(v6.props.focusGui),
        v6.props.theme,
        v6.props.localization,
        l_ContextServices_0.Plugin.new(v6.props.plugin),
        v3.new(v6.props.draftsService)
    }, v6.props[v1.Children]);
end;
return v4;


game:DefineFastFlag("DraftsWidgetChangedAfterRemoved", false);
return function()
    return game:GetFastFlag("DraftsWidgetChangedAfterRemoved");
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local v3 = require(l_Parent_0.Src.Symbols.DraftState);
local v4 = require(l_Parent_0.Src.Symbols.CommitState);
local v5 = require(l_Parent_0.Src.Symbols.AutosaveState);
local v6 = require(l_Parent_0.Src.Flags.getFFlagDraftsWidgetChangedAfterRemoved);
local function _(v7)
    return {
        [v3.Outdated] = false,
        [v3.Deleted] = v7.Parent == nil,
        [v3.Committed] = v4.Uncommitted,
        [v3.Autosaved] = v5.Saved
    };
end;
return (v1.createReducer({}, {
    DraftAddedAction = function(v9, v10)
        local l_Draft_0 = v10.Draft;
        return v2.Dictionary.join(v9, {
            [l_Draft_0] = {
                [v3.Outdated] = false,
                [v3.Deleted] = l_Draft_0.Parent == nil,
                [v3.Committed] = v4.Uncommitted,
                [v3.Autosaved] = v5.Saved
            }
        });
    end,
    DraftRemovedAction = function(v12, v13)
        return v2.Dictionary.join(v12, {
            [v13.Draft] = v2.None
        });
    end,
    DraftsLoadedAction = function(v14, v15)
        local l_Drafts_0 = v15.Drafts;
        local v17 = {};
        for _, v19 in ipairs(l_Drafts_0) do
            v17[v19] = {
                [v3.Outdated] = false,
                [v3.Deleted] = v19.Parent == nil,
                [v3.Committed] = v4.Uncommitted,
                [v3.Autosaved] = v5.Saved
            };
        end;
        return v2.Dictionary.join(v14, v17);
    end,
    DraftStateChangedAction = function(v20, v21)
        local l_Draft_1 = v21.Draft;
        local l_StateType_0 = v21.StateType;
        local l_StateValue_0 = v21.StateValue;
        if not v6() then
            assert(v20[l_Draft_1] ~= nil, "Attempt to modify uninitialized state for draft '" .. l_Draft_1.Name .. "'");
        elseif v20[l_Draft_1] == nil then
            return v20;
        end;
        return v2.Dictionary.join(v20, {
            [l_Draft_1] = v2.Dictionary.join(v20[l_Draft_1], {
                [l_StateType_0] = l_StateValue_0
            })
        });
    end
}));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return (v1.createReducer({
    Enabled = nil,
    Error = nil
}, {
    DraftsServiceLoaded = function(v3, v4)
        return v2.Dictionary.join(v3, {
            Enabled = v4.isEnabled,
            Error = v4.errorMessage
        });
    end
}));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return (v1.createReducer({
    message = nil
}, {
    ExampleAction = function(v3, v4)
        return v2.Dictionary.join(v3, {
            message = v4.message
        });
    end
}));


local l_Parent_0 = script.Parent.Parent.Parent;
return (require(l_Parent_0.Packages.Rodux).combineReducers({
    Example = require(l_Parent_0.Src.Reducers.Example),
    DraftsServiceStatus = require(l_Parent_0.Src.Reducers.DraftsServiceStatus),
    Drafts = require(l_Parent_0.Src.Reducers.DraftsReducer)
}));


local l_Style_0 = require(script.Parent.Parent.Parent.Packages.Framework).Style;
local l_StudioTheme_0 = l_Style_0.Themes.StudioTheme;
local l_StyleKey_0 = l_Style_0.StyleKey;
local v3 = {
    backgroundColor = l_StyleKey_0.MainBackground,
    icons = {
        DraftState = {
            Committed = "rbxasset://textures/StudioSharedUI/statusSuccess.png",
            Outdated = "rbxasset://textures/DraftsWidget/newSource.png",
            Deleted = "rbxasset://textures/DraftsWidget/deletedSource.png"
        }
    },
    labels = {
        MainFont = Enum.Font.SourceSans,
        MainText = l_StyleKey_0.TextPrimary
    },
    dialogUILibrary = {
        HeaderFont = Enum.Font.SourceSans,
        HeaderTextColor = l_StyleKey_0.TextPrimary
    }
};
return function(v4)
    local _ = nil;
    return ((if not v4 then l_StudioTheme_0.new() else l_StudioTheme_0.mock()):extend(v3));
end;


local v0 = require(script.Parent.Parent.Parent.Src.Util.Symbol);
return {
    Saved = v0.named("AutosaveStateSaved"),
    Saving = v0.named("AutosaveStateSaving"),
    SaveFailed = v0.named("AutosaveStateSaveFailed")
};


local v0 = require(script.Parent.Parent.Parent.Src.Util.Symbol);
return {
    Uncommitted = v0.named("CommitStatusUncommitted"),
    Committing = v0.named("CommitStatusCommitting"),
    Committed = v0.named("CommitStatusCommitted")
};


local v0 = require(script.Parent.Parent.Parent.Src.Util.Symbol);
return {
    Outdated = v0.named("DraftStateOudated"),
    Deleted = v0.named("DraftStateDeleted"),
    Committed = v0.named("DraftStateCommitted"),
    Autosaved = v0.named("DraftStateAutosaved")
};


game:DefineFastInt("DebugStudioDraftsWidgetWaitTime", 0);
local v0 = require(script.Parent.Parent.Parent.Src.Util.Signal);
local v1 = {
    DEFAULT = 1,
    EMPTY_TEST = 2,
    SERVICE_DISABLED = 3
};
local function _(v2)
    assert(typeof(v2) == "Instance");
    assert(v2:IsA("LuaSourceContainer"));
end;
local _ = function(v4)
    assert(type(v4) == "table");
    for _, v6 in pairs(v4) do
        assert(typeof(v6) == "Instance");
        assert(v6:IsA("LuaSourceContainer"));
    end;
end;
local _ = function(v8)
    assert((typeof(v8 == "number")));
    for _, v10 in pairs(v1) do
        if v10 == v8 then
            return ;
        end;
    end;
    assert(false, "Test case " .. v8 .. " is not valid");
end;
local function _(v12)
    local l_Script_0 = Instance.new("Script");
    l_Script_0.Name = "Script" .. v12;
    return l_Script_0;
end;
local function v19(v15)
    assert(typeof(v15) == "number");
    local v16 = {};
    for v17 = 1, v15 do
        local l_Script_1 = Instance.new("Script");
        l_Script_1.Name = "Script" .. v17;
        v16[v17] = l_Script_1;
    end;
    return v16;
end;
local function v20()
    return game:GetFastInt("DebugStudioDraftsWidgetWaitTime");
end;
local v21 = {};
v21.__index = v21;
v21.TestCases = v1;
v21.new = function(v22)
    local v23 = {
        DraftAdded = v0.new(),
        DraftRemoved = v0.new(),
        DraftStatusChanged = v0.new(),
        EditorsListChanged = v0.new(),
        UpdateStatusChanged = v0.new(),
        CommitStatusChanged = v0.new(),
        __testCase = v22 or v1.DEFAULT,
        __drafts = {}
    };
    local l___testCase_0 = v23.__testCase;
    assert((typeof(l___testCase_0 == "number")));
    for _, v26 in pairs(v1) do
        if v26 == l___testCase_0 then
            goto label0;
        end;
    end;
    assert(false, "Test case " .. l___testCase_0 .. " is not valid");
    ::label0::;
    if v23.__testCase ~= v1.EMPTY_TEST then
        v23.__drafts = v19(10);
    end;
    return (setmetatable(v23, v21));
end;
v21.GetDrafts = function(v27)
    wait(v20());
    if v27.__testCase == v1.SERVICE_DISABLED then
        error("DraftsService is not available");
    end;
    return v27.__drafts;
end;
v21.GetDraftStatus = function(_, v29)
    assert(typeof(v29) == "Instance");
    assert(v29:IsA("LuaSourceContainer"));
    return Enum.DraftStatusCode.OK;
end;
v21.GetEditors = function(_, v31)
    assert(typeof(v31) == "Instance");
    assert(v31:IsA("LuaSourceContainer"));
    return {};
end;
v21.ShowDiffsAgainstBase = function(_, v33)
    assert(type(v33) == "table");
    for _, v35 in pairs(v33) do
        assert(typeof(v35) == "Instance");
        assert(v35:IsA("LuaSourceContainer"));
    end;
end;
v21.ShowDiffsAgainstServer = function(_, v37)
    assert(type(v37) == "table");
    for _, v39 in pairs(v37) do
        assert(typeof(v39) == "Instance");
        assert(v39:IsA("LuaSourceContainer"));
    end;
end;
v21.DiscardEdits = function(v40, v41)
    assert(type(v41) == "table");
    for _, v43 in pairs(v41) do
        assert(typeof(v43) == "Instance");
        assert(v43:IsA("LuaSourceContainer"));
    end;
    for _, v45 in ipairs(v41) do
        v40.DraftRemoved:fire(v45);
    end;
end;
v21.UpdateToLatestVersion = function(v46, v47)
    assert(type(v47) == "table");
    for _, v49 in pairs(v47) do
        assert(typeof(v49) == "Instance");
        assert(v49:IsA("LuaSourceContainer"));
    end;
    wait(v20());
    for _, v51 in ipairs(v47) do
        v46.UpdateStatusChanged:fire(v51, Enum.DraftStatusCode.OK);
    end;
end;
v21.CommitEdits = function(v52, v53)
    assert(type(v53) == "table");
    for _, v55 in pairs(v53) do
        assert(typeof(v55) == "Instance");
        assert(v55:IsA("LuaSourceContainer"));
    end;
    wait(v20());
    for _, v57 in ipairs(v53) do
        v57.Parent = game.ServerScriptService;
        v52.CommitStatusChanged:fire(v57, Enum.DraftStatusCode.OK);
        delay(game:GetFastInt("DebugStudioDraftsWidgetWaitTime"), function()
            v52.DraftRemoved:fire(v57);
        end);
    end;
end;
return v21;


local v0 = require(script.Parent.Parent.Parent.Src.Util.Signal);
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {
        Name = "",
        Tooltip = "",
        Icon = "",
        Enabled = false,
        Click = v0.new()
    };
    setmetatable(v2, v1);
    return v2;
end;
v1.SetActive = function(v3, v4)
    v3.Enabled = v4;
end;
local v5 = {};
v5.__index = v5;
v5.new = function(v6)
    local v7 = {
        Title = v6,
        Buttons = {}
    };
    setmetatable(v7, v5);
    return v7;
end;
v5.CreateButton = function(_, _, _, _)
    return v1.new();
end;
local v12 = {};
v12.__index = v12;
v12.__newindex = function(v13, v14, v15)
    if v14 == "_signals" then
        return ;
    else
        v13[v14] = v15;
        v13._signals[v14]:fire(v15);
        return ;
    end;
end;
v12.new = function(v16, v17)
    assert(type(v16) == "string", "DockWidgetPluginGui's title must be a string");
    assert(type(v17) == "table", "DockWidgetPluginGui's widgetInfo must be an array");
    assert(#v17 == 7, "Unexpected table provided for widgetInfo, expected an array");
    local v18 = {
        Name = "",
        Title = v16,
        ZIndexBehavior = Enum.ZIndexBehavior.Global,
        Enabled = true
    };
    local v19 = {};
    for v20, _ in pairs(v18) do
        v19[v20] = v0.new();
    end;
    v18._signals = v19;
    setmetatable(v18, v12);
    return v18;
end;
v12.GetPropertyChangedSignal = function(v22, v23)
    assert(v23 ~= nil, "Need a property to observe changes");
    assert(v22[v23] ~= nil, "Could not find the key," .. tostring(v23) .. " please add it to the constructor");
    return v22._signals[v23];
end;
local v24 = {};
v24.__index = v24;
v24.new = function()
    local v25 = {
        Name = ""
    };
    setmetatable(v25, v24);
    return v25;
end;
v24.CreateToolbar = function(_, v27)
    return v5.new(v27);
end;
v24.CreateDockWidgetPluginGui = function(_, v29, v30)
    return v12.new(v29, v30);
end;
return v24;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Rodux);
local l_Localization_0 = require(l_Parent_0.Packages.Framework).ContextServices.Localization;
local v4 = require(l_Parent_0.Src.Reducers.MainReducer);
local v5 = require(l_Parent_0.Src.TestHelpers.MockDraftsService);
local v6 = require(l_Parent_0.Src.TestHelpers.MockPlugin);
local v7 = require(l_Parent_0.Src.Resources.MakeTheme);
local v8 = require(l_Parent_0.Src.Components.ServiceWrapper);
local v9 = v1.Component:extend("MockServiceWrapper");
v9.render = function(v10)
    return v1.createElement(v8, {
        draftsService = v10.props.draftsService or v5.new(v5.TestCases.DEFAULT),
        localization = v10.props.localization or l_Localization_0.mock(),
        plugin = v10.props.plugin or v6.new(),
        store = v2.Store.new(v4, v10.props.storeState, {
            v2.thunkMiddleware
        }),
        theme = v10.props.theme or v7(true)
    }, v10.props[v1.Children]);
end;
return v9;


local l_deepJoin_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.deepJoin;
local function v1(v2, v3)
    if not (type(v2) == "table") or type(v3) ~= "table" then
        if not v2 then
            v2 = "nil";
        end;
        if not v3 then
            v3 = "nil";
        end;
        error(string.format("Expected to compare two tables, got %s and %s", tostring(v2), (tostring(v3))));
    end;
    local v4 = 0;
    for _, _ in pairs(v3) do
        v4 = v4 + 1;
    end;
    local v7 = 0;
    for v8, v9 in pairs(v2) do
        v7 = v7 + 1;
        local v10 = v3[v8];
        if type(v9) == "table" then
            v1(v9, v10);
        elseif v9 ~= v10 then
            error(string.format("the field \"%s\" no longer matches", v8));
        end;
    end;
    if v7 ~= v4 then
        return error(string.format("Number of keys mismatch : %d vs %d", v7, v4));
    else
        return true;
    end;
end;
return function(v11, v12, v13)
    assert(type(v11) == "function", "Expected a reducer to test");
    assert(type(v12) == "table", "Expected an action to test");
    local v14 = v11(v13, {
        type = "__nil__"
    });
    local v15 = l_deepJoin_0(v14, {});
    assert(v1(v14, v15), "deepJoin mutates fields");
    v11(v14, v12);
    return v1(v14, v15);
end;


local v0 = require(script.Parent.Immutable);
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {
        _listeners = {}
    };
    setmetatable(v2, v1);
    return v2;
end;
v1.connect = function(v3, v4)
    local v5 = {
        callback = v4,
        isConnected = true
    };
    v3._listeners = v0.Append(v3._listeners, v5);
    return {
        Disconnect = function()
            warn(string.format("Connection:Disconnect() has been deprecated, use Connection:disconnect()\n%s]", debug.traceback()));
            v5.isConnected = false;
            v3._listeners = v0.RemoveValueFromList(v3._listeners, v5);
        end,
        disconnect = function()
            v5.isConnected = false;
            v3._listeners = v0.RemoveValueFromList(v3._listeners, v5);
        end
    };
end;
v1.fire = function(v6, ...)
    for _, v8 in ipairs(v6._listeners) do
        if v8.isConnected then
            v8.callback(...);
        end;
    end;
end;
v1.Connect = function(v9, ...)
    warn(string.format("Signal:Connect() has been deprecated, use Signal:connect()\n%s]", debug.traceback()));
    return v9:connect(...);
end;
v1.Fire = function(v10, ...)
    warn(string.format("Signal:Fire() has been deprecated, use Signal:fire()\n%s]", debug.traceback()));
    v10:fire(...);
end;
return v1;