local l_Parent_0 = script.Parent.Parent.Parent;
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_StudioService_0 = game:GetService("StudioService");
local l_MarketplaceService_0 = game:GetService("MarketplaceService");
local l_PermissionsService_0 = game:GetService("PermissionsService");
local v5 = require(l_Parent_0.Packages.Roact);
local v6 = require(l_Parent_0.Packages.RoactRodux);
local v7 = require(l_Parent_0.Src.Components.PluginHolder);
local v8 = require(l_Parent_0.Src.Thunks.GetAllPluginPermissions);
local v9 = require(l_Parent_0.Src.Util.Constants);
local _ = require(l_Parent_0.Src.Components.MovedDialog);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = require(l_Parent_0.Packages.Framework).UI;
local l_Util_0 = require(l_Parent_0.Packages.Framework).Util;
local v15 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local v16 = require(l_Parent_0.Src.Thunks.UpdateAllPlugins);
local v17 = require(l_Parent_0.Src.Thunks.RefreshPlugins);
local l_Button_0 = l_UI_0.Button;
local l_StyleModifier_0 = l_Util_0.StyleModifier;
local l_LoadingIndicator_0 = l_UI_0.LoadingIndicator;
local v21 = require(l_Parent_0.SharedPluginConstants);
local v22 = v5.Component:extend("ManagementMainView");
v22.init = function(v23)
    v23.tokens = {};
    v23.state = {
        updating = false,
        showingMovedDialog = false
    };
    v23.anyUpdateNeeded = function()
        if v23.props.pluginList then
            for _, v25 in pairs(v23.props.pluginList) do
                if not l_StudioService_0:IsPluginUpToDate(v25.assetId, v25.latestVersion) then
                    return true;
                end;
            end;
        end;
        return false;
    end;
    v23.refreshPlugins = function()
        v23.props.dispatchRefreshPlugins((v23.props.API:get()));
        v23.getAllPluginPermissions();
    end;
    v23.getAllPluginPermissions = function()
        v23.props.getAllPluginPermissions((v23.props.API:get()));
    end;
    v23.updateAllPlugins = function()
        v23:setState({
            updating = true
        });
        local l_props_0 = v23.props;
        l_props_0.Analytics:report("TryUpdateAllPlugins");
        l_props_0.UpdateAllPlugins(l_props_0.Analytics);
        spawn(function()
            if v23.mounted then
                v23.refreshPlugins();
                v23:setState({
                    updating = false
                });
            end;
        end);
    end;
    v23.findPlugins = function()
        if not v23:isPlaceOpen() then
            warn("findPlugins not supported when no place is open");
            return ;
        else
            l_MemStorageService_0:Fire(v21.SHOW_TOOLBOX_PLUGINS_EVENT);
            return ;
        end;
    end;
    v23.onCloseMoveDialog = function()
        v23:setState({
            showingMovedDialog = false
        });
    end;
    table.insert(v23.tokens, (l_StudioService_0.OnPluginInstalledFromToolbox:connect(v23.refreshPlugins)));
end;
v22.isPlaceOpen = function(v27)
    return v27.props.Plugin:get().MultipleDocumentInterfaceInstance.FocusedDataModelSession;
end;
v22.didMount = function(v28)
    v28.mounted = true;
    v28.refreshPlugins();
end;
v22.willUnmount = function(v29)
    v29.mounted = false;
    for _, v31 in ipairs(v29.tokens) do
        v31:Disconnect();
    end;
    v29.tokens = {};
end;
v22.render = function(v32)
    local l_props_1 = v32.props;
    local l_state_0 = v32.state;
    local v35 = l_props_1.Plugin:get();
    local l_pluginList_0 = l_props_1.pluginList;
    local l_updating_0 = l_state_0.updating;
    local l_Localization_0 = l_props_1.Localization;
    local l_Stylizer_0 = v32.props.Stylizer;
    local v40 = v32.anyUpdateNeeded();
    local v41 = not v40 or l_updating_0;
    local v42 = l_pluginList_0 == nil;
    local v43 = not v42 and next(l_pluginList_0) ~= nil;
    local v44 = not v43 and not v42;
    local _ = nil;
    local v46 = v32:isPlaceOpen();
    return v5.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.BackgroundColor
    }, {
        PluginLabel = v5.createElement("TextLabel", {
            Size = UDim2.new(0, v9.HEADER_TITLE_WIDTH, 0, v9.HEADER_BUTTON_SIZE),
            Position = UDim2.new(0, v9.HEADER_LEFT_PADDING, 0, v9.HEADER_TOP_PADDING),
            Text = l_Localization_0:getText("Main", "Title"),
            TextSize = 24,
            TextColor3 = l_Stylizer_0.TextColor,
            Font = Enum.Font.SourceSansSemibold,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left.Value
        }),
        UpdateAllButton = v40 and v5.createElement(l_Button_0, {
            Size = UDim2.new(0, v9.HEADER_UPDATE_WIDTH, 0, v9.HEADER_BUTTON_SIZE),
            Position = UDim2.new(1, (v9.HEADER_RIGHT_PADDING * 2 - v9.HEADER_UPDATE_WIDTH) - v9.HEADER_BUTTON_SIZE, 0, v9.HEADER_TOP_PADDING),
            Style = "Round",
            StyleModifier = not not v41 and l_StyleModifier_0.Disabled or nil,
            OnClick = not v41 and v32.updateAllPlugins or function()
            end
        }, {
            Label = v5.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 1, 0),
                Text = l_Localization_0:getText("Main", "UpdateAllButton"),
                TextColor3 = not not v41 and l_Stylizer_0.DisabledColor or l_Stylizer_0.TextColor,
                Font = Enum.Font.SourceSans,
                TextSize = 18,
                BackgroundTransparency = 1
            })
        }),
        FindPluginsButton = not not v46 and v5.createElement(l_Button_0, {
            Size = UDim2.new(0, v9.HEADER_BUTTON_SIZE, 0, v9.HEADER_BUTTON_SIZE),
            Position = UDim2.new(1, v9.HEADER_RIGHT_PADDING, 0, v9.HEADER_TOP_PADDING),
            AnchorPoint = Vector2.new(1, 0),
            Style = "RoundPrimary",
            BackgroundTransparency = 1,
            OnClick = v32.findPlugins
        }, {
            Dots = v5.createElement("TextLabel", {
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.new(1, 0, 1, 0),
                Text = "+",
                TextColor3 = l_Stylizer_0.White,
                Font = Enum.Font.SourceSansBold,
                TextSize = 24,
                BackgroundTransparency = 1
            })
        }) or nil,
        NoPluginsMessage = v44 and v5.createElement("TextLabel", {
            Position = UDim2.new(0, v9.HEADER_LEFT_PADDING, 0, v9.HEADER_HEIGHT),
            Size = UDim2.new(1, -v9.HEADER_LEFT_PADDING, 0, v9.HEADER_MESSAGE_LINE_HEIGHT),
            Text = l_Localization_0:getText("Main", "NoPluginsMessage"),
            TextSize = 17,
            TextColor3 = l_Stylizer_0.TextColor,
            Font = Enum.Font.SourceSans,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left.Value,
            TextYAlignment = Enum.TextYAlignment.Top.Value
        }),
        FindPluginsMessage = v44 and v5.createElement("TextLabel", {
            Position = UDim2.new(0, v9.HEADER_LEFT_PADDING, 0, v9.HEADER_HEIGHT + v9.HEADER_MESSAGE_LINE_HEIGHT),
            Size = UDim2.new(1, -v9.HEADER_LEFT_PADDING, 0, v9.HEADER_MESSAGE_LINE_HEIGHT),
            Text = if not v46 then l_Localization_0:getText("Main", "FindPluginsMessage") else l_Localization_0:getText("Main", "FindPluginsWithButtonMessage"),
            TextSize = 17,
            TextColor3 = l_Stylizer_0.TextColor,
            Font = Enum.Font.SourceSans,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left.Value,
            TextYAlignment = Enum.TextYAlignment.Top.Value
        }),
        ScrollablePluginList = v43 and v5.createElement(v7, {
            position = UDim2.new(0, 0, 1, 0),
            size = UDim2.new(1, 0, 1, -1 * v9.HEADER_HEIGHT),
            anchorPoint = Vector2.new(0, 1),
            plugin = v35,
            pluginList = l_pluginList_0,
            onPluginUninstalled = v32.refreshPlugins
        }),
        Indicator = v42 and v5.createElement(l_LoadingIndicator_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.5, 0.5),
            Size = UDim2.new(0, 92, 0, 24)
        })
    });
end;
return v6.connect(function(v47, _)
    return {
        pluginList = v47.Management.plugins
    };
end, function(v49)
    return {
        UpdateAllPlugins = function(v50)
            v49(v16(v50));
        end,
        dispatchRefreshPlugins = function(v51)
            v49(v17(v51, l_MarketplaceService_0));
        end,
        getAllPluginPermissions = function(v52)
            v49(v8(l_PermissionsService_0, v52));
        end
    };
end)((l_withContext_0({
    Plugin = l_ContextServices_0.Plugin,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer,
    API = v15,
    Analytics = l_ContextServices_0.Analytics
})(v22)));


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 v3 = require(l_Parent_0.Packages.Http);
local v4 = require(l_Parent_0.Src.Reducers.MainReducer);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v6 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local v7 = require(l_Parent_0.Src.ContextServices.Navigation);
local v8 = require(l_Parent_0.Src.Resources.makeTheme);
local v9 = v1.PureComponent:extend("MockManagement");
local function _()
    return Instance.new("ScreenGui");
end;
local function v20(v11)
    local v13 = {
        GetMouse = function(_)
            return {};
        end
    };
    local function _()
        local l_ScreenGui_0 = Instance.new("ScreenGui");
        l_ScreenGui_0.Name = "MockPluginGui";
        if v11 then
            l_ScreenGui_0.Parent = v11;
        end;
        return l_ScreenGui_0;
    end;
    v13.CreateQWidgetPluginGui = function(_)
        local l_ScreenGui_1 = Instance.new("ScreenGui");
        l_ScreenGui_1.Name = "MockPluginGui";
        if v11 then
            l_ScreenGui_1.Parent = v11;
        end;
        return l_ScreenGui_1;
    end;
    v13.CreateDockWidgetPluginGui = function(_)
        local l_ScreenGui_2 = Instance.new("ScreenGui");
        l_ScreenGui_2.Name = "MockPluginGui";
        if v11 then
            l_ScreenGui_2.Parent = v11;
        end;
        return l_ScreenGui_2;
    end;
    return v13;
end;
v9.init = function(v21, v22)
    v21.store = v2.Store.new(v4, v21.props.initialStoreState, {
        v2.thunkMiddleware
    });
    v21.api = v3.API.mock({});
    v21.plugin = v20(v22.Container);
    v21.target = v22.FocusTarget or Instance.new("ScreenGui");
end;
v9.render = function(v23)
    local v24 = {
        l_ContextServices_0.Plugin.new(v23.plugin),
        v6.new(v23.api),
        l_ContextServices_0.Localization.mock(),
        l_ContextServices_0.Mouse.new(v23.plugin:GetMouse()),
        v8,
        l_ContextServices_0.Focus.new(v23.target),
        l_ContextServices_0.Store.new(v23.store)
    };
    table.insert(v24, v7.new());
    return l_ContextServices_0.provide(v24, v23.props[v1.Children]);
end;
return v9;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Src.Util.Constants);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v3.UI;
local l_Button_0 = l_UI_0.Button;
local l_Dialog_0 = l_UI_0.Dialog;
local v9 = v1.PureComponent:extend("MovedDialog");
v9.render = function(v10)
    local l_props_0 = v10.props;
    local l_Localization_0 = l_props_0.Localization;
    local l_Stylizer_0 = v10.props.Stylizer;
    return v1.createElement(l_Dialog_0, {
        Title = l_Localization_0:getText("Moved", "Title"),
        Enabled = true,
        Modal = true,
        Size = Vector2.new(v2.MOVED_DIALOG_WIDTH, v2.MOVED_DIALOG_HEIGHT),
        Resizable = false,
        OnClose = l_props_0.OnClose
    }, {
        Background = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundColor3 = l_Stylizer_0.BackgroundColor
        }, {
            Label = v1.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, v2.MOVED_DIALOG_LABEL_HEIGHT),
                Position = UDim2.new(0, v2.MOVED_DIALOG_SIDE_PADDING, 0, v2.MOVED_DIALOG_TOP_PADDING),
                AnchorPoint = Vector2.new(0, 0),
                Text = l_Localization_0:getText("Moved", "MovedMessage"),
                TextSize = 22,
                TextColor3 = l_Stylizer_0.TextColor,
                TextXAlignment = Enum.TextXAlignment.Left,
                Font = Enum.Font.SourceSans,
                BackgroundTransparency = 1
            }),
            Label2 = v1.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, v2.MOVED_DIALOG_LABEL_HEIGHT),
                Position = UDim2.new(0, v2.MOVED_DIALOG_SIDE_PADDING, 0, (v2.MOVED_DIALOG_TOP_PADDING + v2.MOVED_DIALOG_LABEL_HEIGHT) + v2.MOVED_DIALOG_INTRA_PADDING),
                AnchorPoint = Vector2.new(0, 0),
                Text = l_Localization_0:getText("Moved", "NewLocationMessage"),
                TextSize = 17,
                TextColor3 = l_Stylizer_0.TextColor,
                TextXAlignment = Enum.TextXAlignment.Left,
                Font = Enum.Font.SourceSansLight,
                BackgroundTransparency = 1
            }),
            CloseButton = v1.createElement(l_Button_0, {
                AnchorPoint = Vector2.new(0.5, 1),
                Position = UDim2.new(0.5, 0, 1, -v2.MOVED_DIALOG_BOTTOM_PADDING),
                Size = UDim2.new(0, v2.MOVED_DIALOG_BUTTON_WIDTH, 0, v2.MOVED_DIALOG_BUTTON_HEIGHT),
                OnClick = l_props_0.OnClose,
                Style = "RoundPrimary"
            }, {
                Label = v1.createElement("TextLabel", {
                    Size = UDim2.new(1, 0, 1, 0),
                    Text = l_Localization_0:getText("Moved", "GotIt"),
                    TextColor3 = l_Stylizer_0.White,
                    Font = Enum.Font.SourceSans,
                    TextSize = 19,
                    BackgroundTransparency = 1
                })
            })
        })
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v9));


local l_Parent_0 = script.Parent.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.Navigation);
local v4 = v1.Component:extend("NavigatableView");
v4.init = function(v5)
    v5.navigation = v3.new({
        navigation = v5.props.navigation
    });
end;
v4.render = function(v6)
    return l_ContextServices_0.provide({
        v6.navigation
    }, {
        v6.props[v1.Children]
    });
end;
return v4;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactNavigation);
local v3 = require(l_Parent_0.Src.Components.Navigation.NavigatableView);
local v4 = require(l_Parent_0.Src.Components.ManagementMainView);
local v5 = require(l_Parent_0.Src.Components.PluginDetails.PluginDetailsView);
local v6 = require(l_Parent_0.Src.Util.Constants);
local _ = function(v7)
    return function(_)
        return v2.withNavigation(function(v9, v10)
            return v1.createElement(v3, {
                navigation = v9
            }, v7(v9, v10));
        end);
    end;
end;
local v12 = {};
local l_Main_0 = v6.APP_PAGE.Main;
local function v16(v14, _)
    return v1.createElement(v4, {
        navigation = v14
    });
end;
local l_v16_0 = v16 --[[ copy: 11 -> 12 ]];
v12[l_Main_0] = function(_)
    return v2.withNavigation(function(v19, v20)
        return v1.createElement(v3, {
            navigation = v19
        }, l_v16_0(v19, v20));
    end);
end;
l_Main_0 = v6.APP_PAGE.Detail;
v16 = function(v21, _)
    return v1.createElement(v5, {
        assetId = v21.getParam("assetId"),
        navigation = v21,
        Size = UDim2.new(1, 0, 1, 0)
    });
end;
v12[l_Main_0] = function(_)
    return v2.withNavigation(function(v24, v25)
        return v1.createElement(v3, {
            navigation = v24
        }, v16(v24, v25));
    end);
end;
return v2.createAppContainer((v2.createStackNavigator({
    routes = v12,
    initialRouteName = v6.APP_PAGE.Main
})));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.FitFrame);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_Parent_0.Src.Util.Constants);
local v6 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local v7 = require(l_Parent_0.Src.ContextServices.Navigation);
local l_FitFrameVertical_0 = v2.FitFrameVertical;
local v9 = v1.Component:extend("DetailsTopBar");
v9.defaultProps = {
    name = ""
};
v9.init = function(v10)
    v10.onBackButtonActivated = function()
        v10.props.Navigation:get().navigation.goBack();
    end;
end;
v9.render = function(v11)
    local l_assetId_0 = v11.props.assetId;
    local l_LayoutOrder_0 = v11.props.LayoutOrder;
    local l_name_0 = v11.props.name;
    local l_Stylizer_0 = v11.props.Stylizer;
    return v1.createElement(l_FitFrameVertical_0, {
        BackgroundColor3 = l_Stylizer_0.BackgroundColor,
        BorderSizePixel = 0,
        contentPadding = UDim.new(0, 18),
        FillDirection = Enum.FillDirection.Horizontal,
        LayoutOrder = l_LayoutOrder_0,
        VerticalAlignment = Enum.VerticalAlignment.Center,
        width = UDim.new(1, 0),
        margin = {
            top = 18,
            bottom = 18,
            left = 0,
            right = 0
        }
    }, {
        BackButton = v1.createElement("ImageButton", {
            BackgroundTransparency = 1,
            LayoutOrder = 0,
            Image = "rbxasset://textures/PluginManagement/back.png",
            ImageColor3 = l_Stylizer_0.TextColor,
            Size = UDim2.new(0, 32, 0, 32),
            [v1.Event.Activated] = v11.onBackButtonActivated
        }),
        Border = v1.createElement("Frame", {
            BorderSizePixel = 0,
            BackgroundColor3 = l_Stylizer_0.BorderColor,
            LayoutOrder = 1,
            Size = UDim2.new(0, 1, 0, v5.DETAILS_THUMBNAIL_SIZE)
        }),
        Thumbnail = v1.createElement("ImageLabel", {
            BackgroundTransparency = 1,
            Image = v11.props.API:get().Images.AssetThumbnailUrl(l_assetId_0),
            LayoutOrder = 2,
            Size = UDim2.new(0, v5.DETAILS_THUMBNAIL_SIZE, 0, v5.DETAILS_THUMBNAIL_SIZE)
        }),
        Name = v1.createElement("TextLabel", {
            BackgroundTransparency = 1,
            Font = l_Stylizer_0.FontBold,
            LayoutOrder = 3,
            Size = UDim2.new(0.5, -(v5.THUMBNAIL_SIZE + v5.PLUGIN_HORIZONTAL_PADDING), 0, 20),
            Text = l_name_0,
            TextColor3 = l_Stylizer_0.TextColor,
            TextSize = 18,
            TextWrapped = true,
            TextXAlignment = Enum.TextXAlignment.Left
        })
    });
end;
return (l_withContext_0({
    Navigation = v7,
    Stylizer = l_ContextServices_0.Stylizer,
    API = v6
})(v9));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_TextService_0 = game:GetService("TextService");
local l_PermissionsService_0 = game:GetService("PermissionsService");
local v3 = require(l_Parent_0.Packages.Roact);
local v4 = require(l_Parent_0.Packages.RoactRodux);
local v5 = require(l_Parent_0.Packages.FitFrame);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = require(l_Parent_0.Packages.Framework).UI;
local v9 = require(l_Parent_0.Src.Thunks.SetPluginPermission);
local v10 = require(l_Parent_0.Src.Components.FluidFitTextLabel);
local v11 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local l_FitFrameVertical_0 = v5.FitFrameVertical;
local v13 = require(l_Parent_0.Src.Util.Constants);
local l_Checkbox_0 = l_UI_0.Checkbox;
local v15 = require(l_Parent_0.Src.Util.truncateMiddleText);
local v16 = v3.Component:extend("HttpRequestHolder");
v16.defaultProps = {
    httpPermissions = {}
};
v16.init = function(v17)
    v17.frameRef = v3.createRef();
    v17.state = {
        frameWidth = 0
    };
    v17.onCheckboxActivated = function(v18)
        return v17.props.setPluginPermission(v17.props.API:get(), v17.props.assetId, v18);
    end;
    v17.resizeFrame = function()
        local l_current_0 = v17.frameRef.current;
        if l_current_0 then
            if v17.state.frameWidth ~= l_current_0.AbsoluteSize.X then
                v17:setState({
                    frameWidth = l_current_0.AbsoluteSize.X
                });
            end;
            return ;
        else
            return ;
        end;
    end;
    v17.getTruncatedText = function(v20, v21)
        local _ = "";
        local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize(v20, 16, v21.Font, Vector2.new());
        local v24 = (v17.state.frameWidth - 16) - v13.SCROLLBAR_WIDTH_ADJUSTMENT;
        if v24 > 0 and v24 < l_l_TextService_0_TextSize_0.X then
            return (v15(v20, 16, v21.Font, v24));
        else
            return v20;
        end;
    end;
end;
v16.didMount = function(v25)
    v25.resizeFrame();
end;
v16.renderCheckbox = function(v26, v27, v28, v29)
    return v3.createElement(l_Checkbox_0, {
        Checked = v29.allowed,
        LayoutOrder = v28,
        OnClick = function()
            v26.onCheckboxActivated(v29);
        end,
        Text = v26.getTruncatedText(not not v29.data and v29.data.domain or "", v27)
    });
end;
v16.render = function(v30)
    local l_Localization_0 = v30.props.Localization;
    local l_httpPermissions_0 = v30.props.httpPermissions;
    local l_LayoutOrder_0 = v30.props.LayoutOrder;
    local l_Stylizer_0 = v30.props.Stylizer;
    local v35 = {};
    for v36, v37 in pairs(l_httpPermissions_0) do
        table.insert(v35, v30:renderCheckbox(l_Stylizer_0, v36, v37));
    end;
    return v3.createElement(l_FitFrameVertical_0, {
        BackgroundTransparency = 1,
        contentPadding = UDim.new(0, 20),
        LayoutOrder = l_LayoutOrder_0,
        width = UDim.new(1, 0),
        [v3.Ref] = v30.frameRef,
        [v3.Change.AbsoluteSize] = v30.resizeFrame
    }, {
        Checkboxes = v3.createElement(l_FitFrameVertical_0, {
            BackgroundTransparency = 1,
            contentPadding = UDim.new(0, 8),
            LayoutOrder = 0,
            width = UDim.new(1, 0)
        }, v35),
        InfoText = v3.createElement(v10, {
            BackgroundTransparency = 1,
            Font = l_Stylizer_0.Font,
            LayoutOrder = 1,
            TextSize = 16,
            Text = l_Localization_0:getText("Details", "HttpRequestInfo"),
            TextXAlignment = Enum.TextXAlignment.Left,
            TextColor3 = l_Stylizer_0.InfoTextColor
        })
    });
end;
return v4.connect(nil, function(v38)
    return {
        setPluginPermission = function(v39, v40, v41)
            v38(v9(l_PermissionsService_0, v39, v40, v41));
        end
    };
end)((l_withContext_0({
    API = v11,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v16)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.FitFrame);
local v3 = require(l_Parent_0.Src.Util.Constants);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_FitFrameVertical_0 = v2.FitFrameVertical;
local l_FitTextLabel_0 = v2.FitTextLabel;
local v8 = v1.Component:extend("ListItem");
v8.defaultProps = {
    renderContent = function()
    end,
    title = "",
    titleWidth = v3.LIST_ITEM_TITLE_WIDTH
};
v8.render = function(v9)
    local l_LayoutOrder_0 = v9.props.LayoutOrder;
    local l_renderContent_0 = v9.props.renderContent;
    local l_title_0 = v9.props.title;
    local l_titleWidth_0 = v9.props.titleWidth;
    local l_Stylizer_0 = v9.props.Stylizer;
    return v1.createElement(l_FitFrameVertical_0, {
        BackgroundTransparency = 1,
        contentPadding = UDim.new(0, 20),
        FillDirection = Enum.FillDirection.Horizontal,
        LayoutOrder = l_LayoutOrder_0,
        width = UDim.new(1, 0)
    }, {
        Title = v1.createElement(l_FitTextLabel_0, {
            BackgroundTransparency = 1,
            Font = l_Stylizer_0.Font,
            LayoutOrder = 1,
            Text = l_title_0,
            TextColor3 = l_Stylizer_0.SubTextColor,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextSize = 18,
            width = UDim.new(0, l_titleWidth_0)
        }),
        Container = v1.createElement(l_FitFrameVertical_0, {
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            width = UDim.new(1, -l_titleWidth_0 - 20)
        }, {
            Content = l_renderContent_0()
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Src.Util.Constants);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_Parent_0.Src.Components.PluginDetails.ListItem);
local v6 = require(l_Parent_0.Src.Components.FluidFitTextLabel);
local v7 = v1.Component:extend("ListTextItem");
v7.defaultProps = {
    description = "",
    title = "",
    titleWidth = v2.LIST_ITEM_TITLE_WIDTH
};
v7.render = function(v8)
    local l_description_0 = v8.props.description;
    local l_LayoutOrder_0 = v8.props.LayoutOrder;
    local l_title_0 = v8.props.title;
    local l_titleWidth_0 = v8.props.titleWidth;
    local l_Stylizer_0 = v8.props.Stylizer;
    return v1.createElement(v5, {
        LayoutOrder = l_LayoutOrder_0,
        renderContent = function()
            return v1.createElement(v6, {
                BackgroundTransparency = 1,
                Font = l_Stylizer_0.Font,
                LayoutOrder = 1,
                TextSize = 16,
                Text = l_description_0,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextColor3 = l_Stylizer_0.TextColor
            });
        end,
        title = l_title_0,
        titleWidth = l_titleWidth_0
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v7));


local l_Parent_0 = script.Parent.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.FitFrame);
local v4 = require(l_Parent_0.Src.Util.Constants);
local v5 = require(l_Parent_0.Src.Components.PluginDetails.DetailsTopBar);
local v6 = require(l_Parent_0.Src.Components.PluginDetails.HttpRequestHolder);
local v7 = require(l_Parent_0.Src.Components.PluginDetails.ScriptInjectionHolder);
local v8 = require(l_Parent_0.Src.Components.PluginDetails.ListItem);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_FitFrameVertical_0 = v3.FitFrameVertical;
local v12 = v1.Component:extend("PluginDetailsView");
v12.defaultProps = {
    Size = UDim2.new(1, 0, 1, 0)
};
v12.init = function(v13)
    v13.scrollLayoutRef = v1.createRef();
    v13.scrollRef = v1.createRef();
    v13.resizeScrollingFrameCanvas = function(_)
        local l_current_0 = v13.scrollLayoutRef.current;
        local l_current_1 = v13.scrollRef.current;
        if l_current_1 and l_current_0 then
            l_current_1.CanvasSize = UDim2.new(l_current_1.CanvasSize.X, (UDim.new(0, l_current_0.AbsoluteContentSize.Y)));
            return ;
        else
            return ;
        end;
    end;
end;
v12.didMount = function(v17)
    v17.resizeScrollingFrameCanvas();
end;
v12.render = function(v18)
    local l_assetId_0 = v18.props.assetId;
    local l_Size_0 = v18.props.Size;
    local l_Localization_0 = v18.props.Localization;
    local l_httpPermissions_0 = v18.props.httpPermissions;
    local l_scriptInjectionPermissions_0 = v18.props.scriptInjectionPermissions;
    local l_pluginData_0 = v18.props.pluginData;
    local l_Stylizer_0 = v18.props.Stylizer;
    return v1.createElement("Frame", {
        BackgroundColor3 = l_Stylizer_0.BackgroundColor,
        BorderSizePixel = 0,
        Size = l_Size_0
    }, {
        Padding = v1.createElement("UIPadding", {
            PaddingBottom = UDim.new(0, 40),
            PaddingLeft = UDim.new(0, 40),
            PaddingRight = UDim.new(0, 40)
        }),
        Layout = v1.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Padding = UDim.new(0, 20),
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Top
        }),
        PlugnEntryContainer = v1.createElement(l_FitFrameVertical_0, {
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            width = UDim.new(1, 0)
        }, {
            DetailsTopBar = v1.createElement(v5, {
                assetId = l_assetId_0,
                name = l_pluginData_0.name,
                LayoutOrder = 1
            }),
            Border = v1.createElement("Frame", {
                LayoutOrder = 2,
                BorderSizePixel = 0,
                BackgroundColor3 = l_Stylizer_0.BorderColor,
                Size = UDim2.new(1, 0, 0, 1)
            })
        }),
        ScrollingFrame = v1.createElement("ScrollingFrame", {
            BackgroundTransparency = 1,
            LayoutOrder = 3,
            CanvasSize = UDim2.new(1, 0, 0, 0),
            Position = UDim2.new(0, 200, 0, 0),
            TopImage = "rbxasset://textures/StudioToolbox/ScrollBarTop.png",
            MidImage = "rbxasset://textures/StudioToolbox/ScrollBarMiddle.png",
            BottomImage = "rbxasset://textures/StudioToolbox/ScrollBarBottom.png",
            ScrollBarImageColor3 = l_Stylizer_0.ScrollbarColor,
            ScrollBarThickness = l_Stylizer_0.ScrollbarSize,
            ScrollBarImageTransparency = l_Stylizer_0.ScrollbarTransparency,
            Size = UDim2.new(1, 0, 1, -(40 + v4.DETAILS_THUMBNAIL_SIZE)),
            [v1.Ref] = v18.scrollRef
        }, {
            Layout = v1.createElement("UIListLayout", {
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                VerticalAlignment = Enum.VerticalAlignment.Top,
                [v1.Change.AbsoluteContentSize] = v18.resizeScrollingFrameCanvas,
                [v1.Ref] = v18.scrollLayoutRef
            }),
            Content = v1.createElement(l_FitFrameVertical_0, {
                BackgroundTransparency = 1,
                contentPadding = UDim.new(0, 20),
                width = UDim.new(1, 0)
            }, {
                HttpRequestPermissionContainer = next(l_httpPermissions_0) and v1.createElement(v8, {
                    LayoutOrder = 3,
                    renderContent = function()
                        return v1.createElement(v6, {
                            assetId = l_assetId_0,
                            httpPermissions = l_httpPermissions_0
                        });
                    end,
                    theme = l_Stylizer_0,
                    title = l_Localization_0:getText("Details", "HttpRequests")
                }),
                ScriptInjectionPermissionContainer = next(l_scriptInjectionPermissions_0) and v1.createElement(v8, {
                    LayoutOrder = 4,
                    renderContent = function()
                        return v1.createElement(v7, {
                            assetId = l_assetId_0,
                            scriptInjectionPermissions = l_scriptInjectionPermissions_0
                        });
                    end,
                    theme = l_Stylizer_0,
                    title = l_Localization_0:getText("Details", "ScriptInjection")
                })
            })
        })
    });
end;
return v2.connect(function(v26, v27)
    local l_plugins_0 = v26.Management.plugins;
    local v29 = v26.PluginPermissions[v27.assetId];
    return {
        pluginData = not not l_plugins_0 and l_plugins_0[v27.assetId] or nil,
        httpPermissions = not not v29 and v29.httpPermissions or {},
        scriptInjectionPermissions = not not v29 and v29.scriptInjectionPermissions or {}
    };
end, nil)((l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v12)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_PermissionsService_0 = game:GetService("PermissionsService");
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.RoactRodux);
local v4 = require(l_Parent_0.Packages.FitFrame);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = require(l_Parent_0.Packages.Framework).UI;
local v8 = require(l_Parent_0.Src.Thunks.SetPluginPermission);
local v9 = require(l_Parent_0.Src.Components.FluidFitTextLabel);
local v10 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local l_FitFrameVertical_0 = v4.FitFrameVertical;
local v12 = require(l_Parent_0.Src.Util.Constants);
local v13 = v2.Component:extend("ScriptInjectionHolder");
local l_ToggleButton_0 = l_UI_0.ToggleButton;
v13.defaultProps = {
    scriptInjectionPermissions = {}
};
v13.init = function(v15)
    v15.frameRef = v2.createRef();
    v15.state = {
        frameWidth = 0
    };
    v15.onCheckboxActivated = function(v16)
        return v15.props.setPluginPermission(v15.props.API:get(), v15.props.assetId, v16);
    end;
    v15.resizeFrame = function()
        local l_current_0 = v15.frameRef.current;
        if l_current_0 then
            if v15.state.frameWidth ~= l_current_0.AbsoluteSize.X then
                v15:setState({
                    frameWidth = l_current_0.AbsoluteSize.X
                });
            end;
            return ;
        else
            return ;
        end;
    end;
end;
v13.didMount = function(v18)
    v18.resizeFrame();
end;
v13.renderCheckbox = function(v19, _, v21, v22)
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, 16),
        LayoutOrder = v21
    }, {
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            Padding = UDim.new(0, 8)
        }),
        ToggleButton = v2.createElement(l_ToggleButton_0, {
            Disabled = false,
            LayoutOrder = 1,
            OnClick = function()
                v19.onCheckboxActivated(v22);
            end,
            Selected = v22.allowed,
            Size = UDim2.new(0, v12.TOGGLE_BUTTON_WIDTH, 0, v12.TOGGLE_BUTTON_HEIGHT)
        })
    });
end;
v13.render = function(v23)
    local l_Localization_0 = v23.props.Localization;
    local l_scriptInjectionPermissions_0 = v23.props.scriptInjectionPermissions;
    local l_LayoutOrder_0 = v23.props.LayoutOrder;
    local l_Stylizer_0 = v23.props.Stylizer;
    local v28 = {};
    for v29, v30 in pairs(l_scriptInjectionPermissions_0) do
        table.insert(v28, v23:renderCheckbox(l_Stylizer_0, v29, v30));
    end;
    return v2.createElement(l_FitFrameVertical_0, {
        BackgroundTransparency = 1,
        contentPadding = UDim.new(0, 20),
        LayoutOrder = l_LayoutOrder_0,
        width = UDim.new(1, 0),
        [v2.Ref] = v23.frameRef,
        [v2.Change.AbsoluteSize] = v23.resizeFrame
    }, {
        Checkboxes = v2.createElement(l_FitFrameVertical_0, {
            BackgroundTransparency = 1,
            contentPadding = UDim.new(0, 8),
            LayoutOrder = 0,
            width = UDim.new(1, 0)
        }, v28),
        InfoText = v2.createElement(v9, {
            BackgroundTransparency = 1,
            Font = l_Stylizer_0.Font,
            LayoutOrder = 1,
            TextSize = 16,
            Text = l_Localization_0:getText("Details", "ScriptInjectionInfo"),
            TextXAlignment = Enum.TextXAlignment.Left,
            TextColor3 = l_Stylizer_0.InfoTextColor
        })
    });
end;
return v3.connect(nil, function(v31)
    return {
        setPluginPermission = function(v32, v33, v34)
            v31(v8(l_PermissionsService_0, v32, v33, v34));
        end
    };
end)((l_withContext_0({
    API = v10,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v13)));


local l_EnableStudioServiceOpenBrowser_0 = game:GetFastFlag("EnableStudioServiceOpenBrowser");
local v1 = game:getService("StudioService");
local v2 = game:getService("ContentProvider");
local l_PluginPolicyService_0 = game:GetService("PluginPolicyService");
local v4 = game:getService("GuiService");
local v5 = game:getService("HttpService");
local l_TextService_0 = game:GetService("TextService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v8 = require(l_Parent_0.Packages.Roact);
local v9 = require(l_Parent_0.Packages.RoactRodux);
local v10 = require(l_Parent_0.Src.Util.Constants);
local v11 = require(l_Parent_0.Src.Util.UpdateStatus);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v14 = require(l_Parent_0.Src.ContextServices.PluginAPI2);
local v15 = require(l_Parent_0.Src.ContextServices.Navigation);
local v16 = require(l_Parent_0.Src.Thunks.SetPluginEnabledState);
local v17 = require(l_Parent_0.Src.Thunks.UpdatePlugin);
local l_UI_0 = require(l_Parent_0.Packages.Framework).UI;
local l_Button_0 = l_UI_0.Button;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_DropdownMenu_0 = l_UI_0.DropdownMenu;
local l_ToggleButton_0 = l_UI_0.ToggleButton;
local l_FakeLoadingBar_0 = l_UI_0.FakeLoadingBar;
local v24 = require(l_Parent_0.Src.Actions.RemovePluginData);
local v25 = require(l_Parent_0.Src.Components.HttpRequestOverview);
local v26 = require(l_Parent_0.Src.Components.UpdateOverview);
local v27 = UDim2.new(0, 120, 0, 8);
local function _(v28, v29, v30, v31)
    return l_TextService_0:GetTextSize(v28, v29, v30, Vector2.new(v31, 10000)).Y;
end;
local l_Y_0 = l_TextService_0:GetTextSize("a", 16, Enum.Font.SourceSans, Vector2.new(9999, 10000)).Y;
local v34 = v8.Component:extend("PluginEntry");
v34.init = function(v35)
    v35.state = {
        showSuccessMessage = false,
        showMore = false
    };
    v35.getMoreItems = function()
        local l_Localization_0 = v35.props.Localization;
        return {
            {
                Key = "Details",
                Text = l_Localization_0:getText("EntrySeeMore", "DetailsButton")
            },
            {
                Key = "Remove",
                Text = l_Localization_0:getText("EntrySeeMore", "RemoveButton")
            }
        };
    end;
    v35.onPluginEnabled = function()
        local l_props_0 = v35.props;
        l_props_0.onPluginSetEnabledState(l_props_0.data, true);
    end;
    v35.onPluginDisabled = function()
        v35.props.onPluginSetEnabledState(v35.props.data, false);
    end;
    v35.showDetails = function()
        local l_assetId_0 = v35.props.data.assetId;
        local l_BaseUrl_0 = v2.BaseUrl;
        local l_CreatorMarketplaceWebUrl_0 = l_PluginPolicyService_0:getPluginPolicy("Toolbox").CreatorMarketplaceWebUrl;
        local v41 = if not l_CreatorMarketplaceWebUrl_0 then string.format("%s/library/%s/asset", l_BaseUrl_0, v5:urlEncode(l_assetId_0)) else string.format("%sasset/%s", l_CreatorMarketplaceWebUrl_0, v5:urlEncode(l_assetId_0));
        if not l_EnableStudioServiceOpenBrowser_0 then
            v4:OpenBrowserWindow(v41);
            return ;
        else
            v1:OpenInBrowser_DONOTUSE(v41);
            return ;
        end;
    end;
    v35.uninstallPlugin = function()
        v35.props.removePluginData(v35.props.data.assetId);
        v1:UninstallPlugin(v35.props.data.assetId);
        wait();
        v35.props.onPluginUninstalled();
    end;
    v35.onShowMoreActivated = function()
        v35:setState({
            showMore = true
        });
    end;
    v35.hideShowMore = function()
        v35:setState({
            showMore = false
        });
    end;
    v35.moreItemClicked = function(v42)
        v35.hideShowMore();
        if v42.Key == "Details" then
            v35.showDetails();
            return ;
        else
            if v42.Key == "Remove" then
                v35.uninstallPlugin();
            end;
            return ;
        end;
    end;
    v35.updatePlugin = function()
        local l_props_1 = v35.props;
        l_props_1.Analytics:report("TryUpdatePlugin", l_props_1.data.assetId);
        l_props_1.UpdatePlugin(l_props_1.data, l_props_1.Analytics);
    end;
    v35.openCreatorProfile = function()
        local l_data_0 = v35.props.data;
        local v45 = string.format("%susers/%d/profile", v2.BaseUrl, v5:urlEncode(l_data_0.creator and l_data_0.creator.Id));
        if not l_EnableStudioServiceOpenBrowser_0 then
            v4:OpenBrowserWindow(v45);
            return ;
        else
            v1:OpenInBrowser_DONOTUSE(v45);
            return ;
        end;
    end;
    v35.openPluginDetails = function()
        v35.props.Navigation:get().navigation.navigate({
            routeName = v10.APP_PAGE.Detail,
            params = {
                assetId = v35.props.data.assetId
            }
        });
    end;
    v35.onToggleClick = function()
        local l_data_1 = v35.props.data;
        local l_isModerated_0 = l_data_1.isModerated;
        if not (not l_isModerated_0 and l_data_1.enabled) then
            if not l_isModerated_0 then
                v35.onPluginEnabled();
            end;
            return ;
        else
            v35.onPluginDisabled();
            return ;
        end;
    end;
end;
v34.getDerivedStateFromProps = function(v48, _)
    if v48.data.status == v11.Success then
        return {
            showSuccessMessage = true
        };
    elseif v48.isUpdated then
        return nil;
    else
        return {
            showSuccessMessage = false
        };
    end;
end;
v34.render = function(v50)
    local l_props_2 = v50.props;
    local l_state_0 = v50.state;
    local l_data_2 = l_props_2.data;
    local l_allowedHttpCount_0 = l_props_2.allowedHttpCount;
    local l_deniedHttpCount_0 = l_props_2.deniedHttpCount;
    local l_allowedScriptInjection_0 = l_props_2.allowedScriptInjection;
    local l_showMore_0 = l_state_0.showMore;
    local l_plugin_0 = l_props_2.plugin;
    local l_Localization_1 = l_props_2.Localization;
    local l_Stylizer_0 = l_props_2.Stylizer;
    local v61 = l_props_2.API:get();
    local l_LayoutOrder_0 = l_props_2.LayoutOrder;
    local l_isUpdated_0 = l_props_2.isUpdated;
    local l_isModerated_1 = l_data_2.isModerated;
    local l_status_0 = l_data_2.status;
    local l_assetId_1 = l_data_2.assetId;
    local v67 = not l_isModerated_1 and l_data_2.enabled;
    local v68 = l_data_2.name or "";
    local v69 = l_data_2.description or "";
    local v70 = not not l_data_2.creator and l_data_2.creator.Name or "";
    local v71 = v61.Images.AssetThumbnailUrl(l_assetId_1);
    local v72 = (not l_isModerated_1 and not l_isUpdated_0) and l_status_0 ~= v11.Updating;
    local v73 = UDim2.new(1, (v10.PLUGIN_HORIZONTAL_PADDING * -3 - v10.PLUGIN_ENABLE_WIDTH) - v10.PLUGIN_CONTEXT_WIDTH, 0.5, 0);
    local v74 = true;
    if l_allowedHttpCount_0 <= 0 then
        v74 = l_deniedHttpCount_0 > 0;
    end;
    local _ = v74 or l_allowedScriptInjection_0 ~= nil;
    local l_createElement_0 = v8.createElement;
    local v77 = "Frame";
    local v78 = {
        BackgroundColor3 = l_Stylizer_0.BackgroundColor,
        BorderSizePixel = 0,
        LayoutOrder = l_LayoutOrder_0,
        Size = UDim2.new(1, v10.SCROLLBAR_WIDTH_ADJUSTMENT, 0, v10.PLUGIN_ENTRY_HEIGHT)
    };
    local v79 = {
        Padding = v8.createElement("UIPadding", {
            PaddingTop = UDim.new(0, v10.PLUGIN_ENTRY_PADDING),
            PaddingBottom = UDim.new(0, v10.PLUGIN_ENTRY_PADDING)
        }),
        Thumbnail = v8.createElement("ImageLabel", {
            Size = UDim2.new(0, v10.THUMBNAIL_SIZE, 0, v10.THUMBNAIL_SIZE),
            Position = UDim2.new(0, v10.PLUGIN_HORIZONTAL_PADDING, 0, v10.PLUGIN_VERTICAL_PADDING),
            Image = v71,
            BackgroundTransparency = 1
        }),
        Contents = v8.createElement("Frame", {
            BackgroundTransparency = 1,
            Position = UDim2.new(0, v10.THUMBNAIL_SIZE + v10.PLUGIN_HORIZONTAL_PADDING * 2, 0, 0),
            Size = UDim2.new(0.5, -v10.THUMBNAIL_SIZE - v10.PLUGIN_HORIZONTAL_PADDING, 1, 0)
        }, {
            Layout = v8.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                Padding = UDim.new(0, 2)
            }),
            Name = v8.createElement("TextLabel", {
                LayoutOrder = 0,
                TextWrapped = true,
                TextSize = 22,
                Size = UDim2.new(1, 0, 0, 20),
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Left,
                Text = v68,
                TextColor3 = l_Stylizer_0.EmphasisTextColor,
                Font = Enum.Font.SourceSans
            }),
            Creator = v8.createElement("TextButton", {
                LayoutOrder = 1,
                TextWrapped = true,
                Size = UDim2.new(1, 0, 0, 16),
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Left,
                Text = v70,
                Font = Enum.Font.SourceSansLight,
                TextColor3 = l_Stylizer_0.LinkColor,
                TextSize = 16,
                BorderSizePixel = 1,
                [v8.Event.Activated] = v50.openCreatorProfile
            }),
            Description = v8.createElement("TextLabel", {
                ClipsDescendants = true,
                LayoutOrder = 2,
                TextWrapped = true,
                Size = UDim2.new(1, 0, 0, l_Y_0 * 2),
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top,
                Text = v69,
                TextColor3 = l_Stylizer_0.TextColor,
                TextTruncate = Enum.TextTruncate.AtEnd,
                Font = Enum.Font.SourceSans,
                TextSize = 16
            }),
            HttpRequestOverview = v8.createElement(v25, {
                assetId = l_data_2.assetId,
                LayoutOrder = 3
            }),
            UpdateOverview = v8.createElement(v26, {
                data = l_data_2,
                LayoutOrder = 4,
                plugin = l_plugin_0,
                updateAvailable = v72
            })
        }),
        ModeratedWarning = l_isModerated_1 and v8.createElement("TextLabel", {
            AnchorPoint = Vector2.new(1, 0.5),
            Size = UDim2.new(0, v10.MODERATED_WARNING_WIDTH, 0, v10.HEADER_BUTTON_SIZE),
            Position = v73,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Right,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextSize = 14,
            TextWrapped = true,
            Font = Enum.Font.SourceSans,
            TextColor3 = l_Stylizer_0.TextColor,
            Text = l_Localization_1:getText("Entry", "ModeratedWarning")
        })
    };
    local l_v72_0 = v72;
    if l_v72_0 then
        l_v72_0 = v8.createElement;
        local l_l_Button_0_0 = l_Button_0;
        local v82 = {
            AnchorPoint = Vector2.new(1, 0.5),
            Size = UDim2.new(0, v10.HEADER_UPDATE_WIDTH, 0, v10.HEADER_BUTTON_SIZE),
            Position = v73,
            Style = "Round",
            OnClick = v50.updatePlugin
        };
        local v83 = {
            Label = v8.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 1, 0),
                Text = l_Localization_1:getText("Entry", "UpdateButton"),
                TextColor3 = l_Stylizer_0.TextColor,
                Font = Enum.Font.SourceSans,
                TextSize = 18,
                BackgroundTransparency = 1
            })
        };
        local v84 = false;
        if l_status_0 ~= v11.Error then
            v84 = v8.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 14),
                Position = UDim2.new(0, 0, 1, 3),
                TextSize = 14,
                Font = Enum.Font.SourceSans,
                TextColor3 = l_Stylizer_0.TextColor,
                TextTransparency = 0,
                Text = l_Localization_1:getText("Entry", "LastUpdatedDate", {
                    date = l_data_2.updated
                })
            });
        end;
        v83.DateLabel = v84;
        v84 = false;
        if l_status_0 == v11.Error then
            v84 = v8.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 14),
                Position = UDim2.new(0, 0, 1, 3),
                TextSize = 14,
                Font = Enum.Font.SourceSans,
                TextColor3 = l_Stylizer_0.ErrorColor,
                Text = l_Localization_1:getText("Entry", "UpdateError")
            });
        end;
        v83.ErrorLabel = v84;
        l_v72_0 = l_v72_0(l_l_Button_0_0, v82, v83);
    end;
    v79.UpdateButton = l_v72_0;
    l_v72_0 = not l_isUpdated_0;
    if l_v72_0 then
        l_v72_0 = false;
        if l_status_0 == v11.Updating then
            l_v72_0 = v8.createElement(l_FakeLoadingBar_0, {
                AnchorPoint = Vector2.new(1, 0.5),
                Position = v73,
                Size = v27,
                LoadingTime = 0.5
            });
        end;
    end;
    v79.ProgressIndicator = l_v72_0;
    v79.SuccessLabel = (l_isUpdated_0 and l_state_0.showSuccessMessage) and v8.createElement("TextLabel", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, 14),
        AnchorPoint = Vector2.new(1, 0.5),
        Position = v73,
        TextSize = 14,
        Font = Enum.Font.SourceSans,
        TextColor3 = l_Stylizer_0.Green,
        TextXAlignment = Enum.TextXAlignment.Right,
        Text = l_Localization_1:getText("Entry", "UpdateSuccess")
    });
    v79.ToggleButton = v8.createElement(l_ToggleButton_0, {
        Disabled = false,
        Selected = v67,
        OnClick = v50.onToggleClick,
        Size = UDim2.new(0, v10.PLUGIN_ENABLE_WIDTH, 0, 24),
        Position = UDim2.new(1, (v10.PLUGIN_HORIZONTAL_PADDING * -2 - v10.PLUGIN_ENABLE_WIDTH) - v10.PLUGIN_CONTEXT_WIDTH, 0.5, 0)
    });
    v79.ShowMoreButton = v8.createElement(l_Button_0, {
        AnchorPoint = Vector2.new(0, 0.5),
        Size = UDim2.new(0, v10.HEADER_BUTTON_SIZE, 0, v10.HEADER_BUTTON_SIZE),
        Position = UDim2.new(1, -1 * (v10.PLUGIN_HORIZONTAL_PADDING + v10.PLUGIN_CONTEXT_WIDTH), 0.5, 0),
        Style = "Round",
        OnClick = v50.onShowMoreActivated
    }, {
        Dots = v8.createElement("TextLabel", {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, -4),
            Size = UDim2.new(0, 16, 0, 16),
            Text = "...",
            TextColor3 = l_Stylizer_0.TextColor,
            Font = Enum.Font.SourceSansBold,
            TextSize = 18,
            BackgroundTransparency = 1
        }),
        Dropdown = v8.createElement(l_DropdownMenu_0, {
            Hide = not l_showMore_0,
            Size = UDim2.fromOffset(90, 40 * #v50.getMoreItems()),
            Items = v50.getMoreItems(),
            OnRenderItem = function(v85, v86, v87)
                return v8.createElement(l_Button_0, {
                    Size = UDim2.new(1, 0, 0, 40),
                    LayoutOrder = v86,
                    OnClick = v87
                }, {
                    Label = v8.createElement(l_TextLabel_0, {
                        Size = UDim2.new(1, 0, 1, 0),
                        TextSize = 18,
                        Text = v85.Text,
                        TextXAlignment = Enum.TextXAlignment.Left
                    }, {
                        Padding = v8.createElement("UIPadding", {
                            PaddingLeft = UDim.new(0, 10)
                        })
                    })
                });
            end,
            OnItemActivated = v50.moreItemClicked,
            OnFocusLost = v50.hideShowMore
        })
    });
    return l_createElement_0(v77, v78, v79);
end;
return v9.connect(function(v88, v89)
    local v90 = v88.PluginPermissions[v89.data.assetId];
    return {
        allowedHttpCount = not not v90 and v90.allowedHttpCount or 0,
        deniedHttpCount = not not v90 and v90.deniedHttpCount or 0,
        allowedScriptInjection = not not v90 and v90.allowedScriptInjection or nil
    };
end, function(v91)
    return {
        removePluginData = function(v92)
            v91(v24(v92));
        end,
        onPluginSetEnabledState = function(v93, v94)
            v91(v16(v93, v94));
        end,
        UpdatePlugin = function(v95, v96)
            v91(v17(v95, v96));
        end
    };
end)((l_withContext_0({
    Navigation = v15,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer,
    API = v14,
    Analytics = l_ContextServices_0.Analytics
})(v34)));


local l_StudioService_0 = game:GetService("StudioService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Packages.Roact);
local l_Util_0 = require(l_Parent_0.Packages.Framework).Util;
local v4 = require(l_Parent_0.Src.Components.PluginEntry);
local v5 = require(l_Parent_0.Src.Util.Constants);
local l_LayoutOrderIterator_0 = l_Util_0.LayoutOrderIterator;
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v9 = v2.Component:extend("PluginHolder");
local function _(v10)
    table.sort(v10, function(v11, v12)
        return string.lower(v11.name) < string.lower(v12.name);
    end);
end;
v9.init = function(v14)
    v14.state = {
        contentHeight = 0
    };
    v14.resizeContainer = function(v15)
        v14:setState({
            contentHeight = v15.AbsoluteContentSize.Y
        });
    end;
end;
v9.createLabel = function(v16, v17, v18)
    return v2.createElement("TextLabel", {
        Font = Enum.Font.SourceSans,
        TextColor3 = v17.SubTitleTextColor,
        TextTransparency = 0,
        Size = UDim2.new(1, 0, 0, (v5.SUBTITLE_PADDING + 16) + (v5.SUBTITLE_PADDING - v5.PLUGIN_ENTRY_PADDING)),
        TextSize = 20,
        TextXAlignment = Enum.TextXAlignment.Left,
        Text = v18,
        LayoutOrder = v16.order:getNextOrder(),
        BackgroundTransparency = 1
    }, {
        Padding = v2.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v5.HEADER_LEFT_PADDING),
            PaddingTop = UDim.new(0, v5.SUBTITLE_PADDING)
        })
    });
end;
v9.render = function(v19)
    v19.order = l_LayoutOrderIterator_0.new();
    local l_props_0 = v19.props;
    local l_state_0 = v19.state;
    local l_Localization_0 = l_props_0.Localization;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_contentHeight_0 = l_state_0.contentHeight;
    local l_plugin_0 = l_props_0.plugin;
    local l_pluginList_0 = l_props_0.pluginList;
    local l_position_0 = l_props_0.position;
    local l_size_0 = l_props_0.size;
    local l_anchorPoint_0 = l_props_0.anchorPoint;
    local l_onPluginUninstalled_0 = l_props_0.onPluginUninstalled;
    local v31 = l_Localization_0:getText("Header", "PendingUpdates");
    local v32 = l_Localization_0:getText("Header", "UpToDate");
    local v33 = {
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            [v2.Change.AbsoluteContentSize] = v19.resizeContainer
        })
    };
    local v34 = {};
    local v35 = {};
    for v36, v37 in pairs(l_pluginList_0) do
        if not l_StudioService_0:IsPluginUpToDate(v36, v37.latestVersion) then
            table.insert(v34, v37);
        else
            table.insert(v35, v37);
        end;
    end;
    table.sort(v35, function(v38, v39)
        return string.lower(v38.name) < string.lower(v39.name);
    end);
    table.sort(v34, function(v40, v41)
        return string.lower(v40.name) < string.lower(v41.name);
    end);
    local v42 = false;
    if #v35 > 0 then
        v42 = #v34 > 0;
    end;
    if v42 then
        v33.PendingUpdates = v19:createLabel(l_Stylizer_0, v31);
    end;
    local v43 = (-v5.THUMBNAIL_SIZE - v5.PLUGIN_HORIZONTAL_PADDING) + v5.HEADER_RIGHT_PADDING * 2;
    for _, v45 in ipairs(v34) do
        v33[v45.assetId .. "_Entry"] = v2.createElement(v4, {
            LayoutOrder = v19.order:getNextOrder(),
            data = v45,
            isUpdated = false,
            plugin = l_plugin_0,
            onPluginUninstalled = l_onPluginUninstalled_0
        });
        v33[v45.assetId .. "_Border"] = v2.createElement("Frame", {
            LayoutOrder = v19.order:getNextOrder(),
            Size = UDim2.new(1, 0, 0, 1),
            BackgroundTransparency = 1
        }, {
            Border = v2.createElement("Frame", {
                AnchorPoint = Vector2.new(1, 0.5),
                BackgroundColor3 = l_Stylizer_0.BorderColor,
                BorderSizePixel = 0,
                Position = UDim2.new(1, v5.HEADER_RIGHT_PADDING, 0, 0),
                Size = UDim2.new(1, v43, 0, 1)
            })
        });
    end;
    if v42 then
        v33.UpToDate = v19:createLabel(l_Stylizer_0, v32);
    end;
    for _, v47 in ipairs(v35) do
        v33[v47.assetId .. "_Entry"] = v2.createElement(v4, {
            LayoutOrder = v19.order:getNextOrder(),
            data = v47,
            isUpdated = true,
            plugin = l_plugin_0,
            onPluginUninstalled = l_onPluginUninstalled_0
        });
        v33[v47.assetId .. "_Border"] = v2.createElement("Frame", {
            LayoutOrder = v19.order:getNextOrder(),
            Size = UDim2.new(1, 0, 0, 1),
            BackgroundTransparency = 1
        }, {
            Border = v2.createElement("Frame", {
                AnchorPoint = Vector2.new(1, 0.5),
                BackgroundColor3 = l_Stylizer_0.BorderColor,
                BorderSizePixel = 0,
                Position = UDim2.new(1, v5.HEADER_RIGHT_PADDING, 0, 0),
                Size = UDim2.new(1, v43, 0, 1)
            })
        });
    end;
    return v2.createElement("ScrollingFrame", {
        Size = l_size_0,
        CanvasSize = UDim2.new(0, 0, 0, l_contentHeight_0),
        Position = l_position_0,
        AnchorPoint = l_anchorPoint_0,
        BackgroundColor3 = l_Stylizer_0.BackgroundColor,
        TopImage = "rbxasset://textures/StudioToolbox/ScrollBarTop.png",
        MidImage = "rbxasset://textures/StudioToolbox/ScrollBarMiddle.png",
        BottomImage = "rbxasset://textures/StudioToolbox/ScrollBarBottom.png",
        BorderSizePixel = 0,
        ScrollBarImageColor3 = l_Stylizer_0.ScrollbarColor,
        ScrollBarThickness = l_Stylizer_0.ScrollbarSize,
        ScrollBarImageTransparency = l_Stylizer_0.ScrollbarTransparency
    }, v33);
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v9));


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 _ = require(l_Parent_0.Packages.FitFrame);
local v5 = require(l_Parent_0.Src.Util.Constants);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local _ = v3.Util.deepCopy;
local l_UI_0 = v3.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_Checkbox_0 = l_UI_0.Checkbox;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Separator_0 = l_UI_0.Separator;
local v14 = require(l_Parent_0.Src.Thunks.UpdatePlugin);
local v15 = v1.PureComponent:extend("UpdateOverview");
v15.defaultProps = {
    LayoutOrder = 1,
    data = nil
};
v15.init = function(v16)
    local l_props_0 = v16.props;
    local _ = l_props_0.plugin;
    local l_updateAvailable_0 = l_props_0.updateAvailable;
    local v20 = tostring(l_props_0.data.assetId);
    v16.state = {
        checked = l_props_0.data.autoUpdateEnabled,
        lastModified = l_props_0.data.updated
    };
    v16.onClick = function()
        local l_PluginManagementService_0 = game:GetService("PluginManagementService");
        local v22 = tonumber(v20);
        local v23 = not v16.state.checked;
        l_PluginManagementService_0:SetAutoUpdate(v22, v23);
        v16:setState({
            checked = v23,
            lastModified = l_props_0.data.updated
        });
        if not (not v23 or not l_updateAvailable_0) then
            l_props_0.Analytics:report("TryUpdatePlugin", l_props_0.data.assetId);
            l_props_0.UpdatePlugin(l_props_0.data, l_props_0.Analytics);
        end;
    end;
end;
v15.render = function(v24)
    local l_props_1 = v24.props;
    local l_LayoutOrder_0 = l_props_1.LayoutOrder;
    local l_Localization_0 = l_props_1.Localization;
    local l_Stylizer_0 = l_props_1.Stylizer;
    return v1.createElement(l_Pane_0, {
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        LayoutOrder = l_LayoutOrder_0,
        Layout = Enum.FillDirection.Horizontal,
        Position = UDim2.fromOffset(0, 0),
        Size = UDim2.new(1, 0, 0, v5.PLUGIN_UPDATE_HEIGHT),
        Spacing = 10,
        Style = "Box"
    }, {
        UpdatePane = v1.createElement(l_Pane_0, {
            AutomaticSize = Enum.AutomaticSize.XY,
            Layout = Enum.FillDirection.Horizontal,
            LayoutOrder = 1,
            Spacing = 10,
            Style = "Box"
        }, {
            UpdateCheckbox = v1.createElement(l_Checkbox_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                Checked = v24.state.checked,
                Disabled = false,
                Font = l_Stylizer_0.Font,
                LayoutOrder = 1,
                OnClick = v24.onClick
            }),
            UpdateText = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                Font = l_Stylizer_0.Font,
                LayoutOrder = 2,
                Text = l_Localization_0:getText("PluginEntry", "AutoUpdateText"),
                TextSize = 16,
                TextXAlignment = Enum.TextXAlignment.Left
            })
        }),
        Separator = v1.createElement(l_Separator_0, {
            DominantAxis = Enum.DominantAxis.Height,
            LayoutOrder = 2,
            Style = l_Stylizer_0.Separator
        }),
        LastUpdatedText = v1.createElement(l_TextLabel_0, {
            Font = l_Stylizer_0.Font,
            LayoutOrder = 3,
            Size = UDim2.fromScale(0.5, 1),
            Text = l_Localization_0:getText("PluginEntry", "AutoUpdateEntry", {
                date = v24.state.lastModified
            }),
            TextSize = 16,
            TextXAlignment = Enum.TextXAlignment.Left
        })
    });
end;
return v2.connect(nil, function(v29)
    return {
        UpdatePlugin = function(v30, v31)
            v29(v14(v30, v31));
        end
    };
end)((l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin,
    Stylizer = l_ContextServices_0.Stylizer
})(v15)));


return {
    UNKNOWN = -1,
    PLUGIN_INSTALLED_SUCCESSFULLY = 0,
    HTTP_ERROR = 1,
    PLUGIN_NOT_OWNED = 2,
    PLUGIN_DETAILS_UNAVAILABLE = 3,
    PLUGIN_NOT_INSTALLED = 4,
    PLUGIN_AlREADY_INSTALLED = 5
};


local v0 = require(script.Parent.Parent.Parent.Packages.Framework).ContextServices.ContextItem:extend("Navigation");
v0.new = function(v1)
    local v2 = {
        navigation = v1
    };
    setmetatable(v2, v0);
    return v2;
end;
v0.get = function(v3)
    return v3.navigation;
end;
return v0;


local v0 = require(script.Parent.Parent.Parent.Packages.Framework).ContextServices.ContextItem:extend("RobloxAPI");
v0.new = function(v1)
    local v2 = {
        api = v1
    };
    setmetatable(v2, v0);
    return v2;
end;
v0.get = function(v3)
    return v3.api;
end;
return v0;


local v0 = {
    new = function()
        return {
            data = {},
            allowed = false,
            type = nil
        };
    end
};
v0.mock = function()
    local v1 = v0.new();
    v1.allowed = true;
    v1.data = {
        domain = "a"
    };
    return v1;
end;
v0.fromUserData = function(v2, v3)
    local v4 = v0.new();
    v4.type = v2.Type;
    v4.index = v3;
    if v2.Data then
        v4.allowed = v2.Data.Allowed;
        v4.data = {
            domain = v2.Data.Domain
        };
    end;
    return v4;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
return (require(l_Parent_0.Packages.Rodux).combineReducers({
    PluginInfo = require(l_Parent_0.Src.Reducers.PluginInfo),
    PluginPermissions = require(l_Parent_0.Src.Reducers.PluginPermissions),
    Management = require(l_Parent_0.Src.Reducers.Management)
}));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
local v2 = require(l_Parent_0.Packages.Rodux);
local function v9(v3, v4, v5)
    local v6 = {};
    for v7, v8 in pairs(v3.plugins) do
        if v7 == v4 then
            v6[v7] = v1.Dictionary.join(v8, v5);
        end;
    end;
    return v1.Dictionary.join(v3, {
        plugins = v1.Dictionary.join(v3.plugins, v6)
    });
end;
return v2.createReducer({
    plugins = nil
}, {
    ClearAllPluginData = function(v10, _)
        return v1.Dictionary.join(v10, {
            plugins = v1.None
        });
    end or nil,
    RemovePluginData = function(v12, v13)
        return v1.Dictionary.join(v12, {
            plugins = v1.Dictionary.join(v12.plugins or {}, {
                [v13.pluginId] = v1.None
            })
        });
    end or nil,
    SetLoadedPluginData = function(v14, v15)
        return v1.Dictionary.join(v14, {
            plugins = v1.Dictionary.join(v14.plugins or {}, v15.pluginData)
        });
    end,
    SetPluginEnabledState = function(v16, v17)
        return v9(v16, v17.assetId, {
            enabled = v17.enabled
        });
    end,
    SetPluginUpdateStatus = function(v18, v19)
        return v9(v18, v19.assetId, {
            status = v19.status or v1.None
        });
    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.Constants.PluginInstalledStatus);
return v1.createReducer({
    plugins = {}
}, {
    SetPluginId = function(v4, v5)
        return v2.Dictionary.join(v4, {
            plugins = v2.Dictionary.join(v4.plugins, {
                [v5.pluginId] = {
                    installStatus = v3.UNKNOWN,
                    installationMsg = "",
                    installProgress = 0,
                    name = "",
                    description = "",
                    versionId = "",
                    created = "",
                    updated = ""
                }
            })
        });
    end,
    ClearPluginData = function(v6, v7)
        if v6.plugins[v7.pluginId] then
            return v2.Dictionary.join(v6, {
                plugins = v2.Dictionary.join(v6.plugins, {
                    [v7.pluginId] = v2.None
                })
            });
        else
            return v6;
        end;
    end,
    SetPluginMetadata = function(v8, v9)
        assert(v8.plugins[v9.pluginId], string.format("No plugin entry found for %s", v9.pluginId));
        return v2.Dictionary.join(v8, {
            plugins = v2.Dictionary.join(v8.plugins, {
                [v9.pluginId] = v2.Dictionary.join(v8.plugins[v9.pluginId], {
                    name = v9.name,
                    description = v9.description,
                    versionId = v9.versionId,
                    created = v9.created,
                    updated = v9.updated
                })
            })
        });
    end,
    SetPluginInstallStatus = function(v10, v11)
        assert(v10.plugins[v11.pluginId], string.format("No plugin entry found for %s", v11.pluginId));
        return v2.Dictionary.join(v10, {
            plugins = v2.Dictionary.join(v10.plugins, {
                [v11.pluginId] = v2.Dictionary.join(v10.plugins[v11.pluginId], {
                    installStatus = v11.statusCode,
                    installationMsg = v11.message
                })
            })
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = require(l_Parent_0.Src.Models.PermissionInfo);
local v4 = require(l_Parent_0.Src.Util.Constants);
local function v9(v5, v6)
    local v7 = {};
    if #v5 > 1 then
        for v8 = #v5, 1, -1 do
            if not v6 or v6 and v8 ~= #v5 then
                v7[#v7 + 1] = v5[v8];
            end;
        end;
        return v7;
    else
        return v5;
    end;
end;
return v2.createReducer({}, {
    SetAllPluginPermissions = function(v10, v11)
        local v12 = {};
        for v13, v14 in pairs(v11.permissions) do
            local v15 = tonumber(v13);
            local v16 = {};
            local v17 = {};
            local v18 = 0;
            local v19 = 0;
            local v20 = nil;
            for v21, v22 in ipairs(v14) do
                if v22.Type == v4.PERMISSION_TYPES.HttpService then
                    local v23 = v3.fromUserData(v22, v21);
                    if not v23.allowed then
                        v19 = v19 + 1;
                    else
                        v18 = v18 + 1;
                    end;
                    table.insert(v16, v23);
                elseif v22.Type == v4.PERMISSION_TYPES.ScriptInjection then
                    local v24 = v3.fromUserData(v22, v21);
                    if v20 == nil then
                        v20 = v24.allowed;
                        table.insert(v17, v24);
                    else
                        assert(false, "Only one script injection permission is allowed. " .. "Uninstall and reinstall plugin " .. tostring(v15) .. " to reset permissions.");
                    end;
                end;
            end;
            table.sort(v16, function(v25, v26)
                if v25.data.domain and v26.data.domain then
                    return table.concat(v9(string.split(v25.data.domain, "."), true), ".") < table.concat(v9(string.split(v26.data.domain, "."), true), ".");
                else
                    return false;
                end;
            end);
            v12[v15] = {
                allowedHttpCount = v18,
                deniedHttpCount = v19,
                allowedScriptInjection = v20,
                httpPermissions = v16,
                scriptInjectionPermissions = v17
            };
        end;
        return v1.Dictionary.join(v10, v12);
    end
});


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 = l_StudioTheme_0.new({
    [l_StyleKey_0.HttpOverviewTextColor] = Color3.fromRGB(136, 136, 136),
    [l_StyleKey_0.EmphasisTextColor] = Color3.fromRGB(255, 255, 255),
    [l_StyleKey_0.ScrollbarColor] = Color3.fromRGB(204, 204, 204),
    [l_StyleKey_0.SubTitleTextColor] = Color3.fromRGB(170, 170, 170),
    Separator = {
        Weight = 1,
        StretchMargin = 7,
        Color = Color3.fromRGB(170, 170, 170)
    }
}, {
    [l_StyleKey_0.HttpOverviewTextColor] = Color3.fromRGB(46, 46, 46),
    [l_StyleKey_0.EmphasisTextColor] = Color3.fromRGB(0, 0, 0),
    [l_StyleKey_0.ScrollbarColor] = Color3.fromRGB(25, 25, 25),
    [l_StyleKey_0.SubTitleTextColor] = Color3.fromRGB(0, 0, 0),
    Separator = {
        Weight = 1,
        StretchMargin = 7,
        Color = Color3.fromRGB(0, 0, 0)
    }
});
v3:extend({
    BackgroundColor = l_StyleKey_0.MainBackground,
    ButtonColor = l_StyleKey_0.Button,
    HttpOverviewTextColor = l_StyleKey_0.HttpOverviewTextColor,
    ProgressBarColor = l_StyleKey_0.DialogMainButtonSelected,
    HoverColor = l_StyleKey_0.ButtonHover,
    BorderColor = l_StyleKey_0.Border,
    SubTextColor = l_StyleKey_0.SubText,
    InfoTextColor = l_StyleKey_0.DimmedText,
    SubTitleTextColor = l_StyleKey_0.SubTitleTextColor,
    EmphasisTextColor = l_StyleKey_0.EmphasisTextColor,
    TextColor = l_StyleKey_0.MainText,
    ErrorColor = l_StyleKey_0.ErrorText,
    LinkColor = l_StyleKey_0.LinkText,
    Green = Color3.fromRGB(64, 166, 81),
    White = Color3.fromRGB(255, 255, 255),
    DisabledColor = l_StyleKey_0.MainTextDisabled,
    ScrollbarColor = l_StyleKey_0.ScrollbarColor,
    ScrollbarTransparency = 0.7,
    ScrollbarSize = 8,
    Font = Enum.Font.SourceSans,
    FontBold = Enum.Font.SourceSansSemibold
});
return v3;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Promise);
local v2 = require(l_Parent_0.Src.Actions.SetLoadedPluginData);
local function v3(v4, v5, v6)
    return function(v7)
        if v6 then
            v6 = v6 + 1;
            if v6 > 4 then
                return ;
            end;
        else
            v6 = 1;
        end;
        local v8 = 0;
        local v9 = 0;
        local v10 = {};
        local v11 = {};
        local v12 = {};
        for v13, v14 in pairs(v5) do
            table.insert(v12, (v1.new(function(v15, v16)
                spawn(function()
                    local l_status_0, l_result_0 = pcall(v4.GetProductInfo, v4, v14.assetId);
                    if not l_status_0 then
                        v16();
                        return ;
                    else
                        v15(l_result_0);
                        return ;
                    end;
                end);
            end):andThen(function(v19)
                if v19 then
                    v14.creator = v19.Creator;
                end;
                v10[v13] = v14;
                v8 = v8 + 1;
            end, function()
                v11[v13] = v14;
                v9 = v9 + 1;
            end)));
        end;
        v1.all(v12):await();
        if v8 > 0 then
            v7:dispatch(v2(v10));
        end;
        if v9 > 0 then
            spawn(function()
                wait((v6 - 1) * 8);
                v7:dispatch(v3(v4, v11, v6));
            end);
        end;
    end;
end;
return v3;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Actions.SetAllPluginPermissions);
local v3 = require(l_Parent_0.Src.Util.extractPluginsFromJsonString);
return function(v4, _)
    return function(v6)
        local v7 = v3(l_StudioService_0.InstalledPluginData);
        local v8 = {};
        for _, v10 in pairs(v7) do
            local v11 = tonumber(v10.assetId);
            if v11 == nil then
                warn("assetId is nil or non-numeric for installedPlugin", v10.assetId);
            else
                v8[v11] = v4:GetPermissions(v10.assetId);
            end;
        end;
        v6:dispatch(v2(v8));
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Thunks.MultiGetPluginInfoRequest);
local v3 = require(l_Parent_0.Src.Actions.SetLoadedPluginData);
local v4 = require(l_Parent_0.Src.Util.extractPluginsFromJsonString);
return function(v5, v6)
    return function(v7)
        local v8 = v4(l_StudioService_0.InstalledPluginData);
        local v9 = {};
        for v10, v11 in pairs(v8) do
            local v12 = tonumber(v11.assetId);
            if v12 == nil then
                warn("assetId is nil or non-numeric for installedPlugin on refresh", v11.assetId);
                v8[v10] = nil;
            else
                v8[v10].assetId = v12;
                v9[#v9 + 1] = v11.assetId;
            end;
        end;
        if #v9 > 0 then
            v7:dispatch(v2(v5, v6, v9, v8));
            return ;
        else
            v7:dispatch(v3({}));
            return ;
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Actions.SetPluginEnabledState);
return function(v3, v4)
    return function(v5)
        local l_assetId_0 = v3.assetId;
        l_StudioService_0:SetPluginEnabled(l_assetId_0, v4);
        v5:dispatch(v2(l_assetId_0, v4));
    end;
end;


local v0 = require(script.Parent.Parent.Parent.Src.Thunks.GetAllPluginPermissions);
return function(v1, v2, v3, v4)
    return function(v5)
        local v6 = tostring(v3);
        local l_v1_Permissions_0 = v1:GetPermissions(v6);
        l_v1_Permissions_0[v4.index] = {
            Type = v4.type,
            Data = {
                Allowed = not v4.allowed,
                Domain = v4.data.domain
            }
        };
        v1:SetPermissions(v6, l_v1_Permissions_0);
        v5:dispatch(v0(v1, v2));
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Thunks.UpdatePlugin);
return function(v3)
    return function(v4)
        for _, v6 in pairs(v4:getState().Management.plugins) do
            if not l_StudioService_0:IsPluginUpToDate(v6.assetId, v6.latestVersion) then
                v4:dispatch(v2(v6, v3));
            end;
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Util.UpdateStatus);
local v3 = require(l_Parent_0.Src.Actions.SetPluginUpdateStatus);
return function(v4, v5)
    return function(v6)
        local l_assetId_0 = v4.assetId;
        local l_latestVersion_0 = v4.latestVersion;
        v6:dispatch(v3(l_assetId_0, v2.Updating));
        if not pcall(function()
            l_StudioService_0:TryInstallPlugin(l_assetId_0, l_latestVersion_0);
        end) then
            v5:report("UpdatePluginFailure", l_assetId_0);
            v6:dispatch(v3(l_assetId_0, v2.Error));
            return ;
        else
            v5:report("UpdatePluginSuccess", l_assetId_0);
            v6:dispatch(v3(l_assetId_0, v2.Success));
            return ;
        end;
    end;
end;


local v0 = {
    HEADER_TITLE_WIDTH = 250,
    HEADER_UPDATE_WIDTH = 100,
    HEADER_LEFT_PADDING = 20,
    HEADER_RIGHT_PADDING = -22,
    HEADER_TOP_PADDING = 20,
    HEADER_BUTTON_SIZE = 30,
    HEADER_MESSAGE_LINE_HEIGHT = 18
};
v0.HEADER_HEIGHT = v0.HEADER_BUTTON_SIZE + v0.HEADER_TOP_PADDING;
v0.MOVED_DIALOG_WIDTH = 369;
v0.MOVED_DIALOG_HEIGHT = 168;
v0.MOVED_DIALOG_TOP_PADDING = 30;
v0.MOVED_DIALOG_INTRA_PADDING = 10;
v0.MOVED_DIALOG_BOTTOM_PADDING = 20;
v0.MOVED_DIALOG_SIDE_PADDING = 20;
v0.MOVED_DIALOG_LABEL_HEIGHT = 18;
v0.MOVED_DIALOG_BUTTON_WIDTH = 120;
v0.MOVED_DIALOG_BUTTON_HEIGHT = 32;
v0.PLUGIN_VERTICAL_PADDING = 5;
v0.PLUGIN_HORIZONTAL_PADDING = 30;
v0.THUMBNAIL_SIZE = 60;
v0.PLUGIN_ENTRY_HEIGHT = 150;
v0.PLUGIN_NAME_HEIGHT = 30;
v0.PLUGIN_CREATOR_HEIGHT = 20;
v0.PLUGIN_DESCRIPTION_HEIGHT = 60;
v0.PLUGIN_UPDATE_HEIGHT = 30;
v0.PLUGIN_ENABLE_WIDTH = 40;
v0.PLUGIN_CONTEXT_WIDTH = 28;
v0.MODERATED_WARNING_WIDTH = 194;
v0.TOGGLE_BUTTON_WIDTH = 40;
v0.TOGGLE_BUTTON_HEIGHT = 24;
v0.HTTP_OVERVIEW_HEIGHT = 18;
v0.HTTP_OVERVIEW_ICON_SIZE = 18;
v0.DETAILS_THUMBNAIL_SIZE = 32;
v0.LIST_ITEM_TITLE_WIDTH = 170;
v0.PERMISSION_TYPES = {
    HttpService = "HttpService",
    ScriptInjection = "ScriptInjection"
};
v0.SCROLLBAR_WIDTH_ADJUSTMENT = 12;
v0.APP_PAGE = {
    Main = "Main",
    Detail = "Detail"
};
v0.SUBTITLE_PADDING = 30;
v0.PLUGIN_ENTRY_PADDING = 20;
return v0;


local v0 = require(script.Parent.Parent.Parent.Packages.Symbol);
return {
    Updating = v0.named("Updating"),
    Success = v0.named("Success"),
    Error = v0.named("Error")
};


return function(v0)
    local v1 = v0:find("%.");
    if not v1 then
        return v0;
    else
        return v0:sub(1, v1 - 1) .. "Z";
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
return function(v1)
    if not (v1 ~= nil) or v1 == "" then
        return {};
    else
        local v2 = l_HttpService_0:JSONDecode(v1);
        local v3 = {};
        for v4, v5 in pairs(v2) do
            table.insert(v3, {
                assetId = v4,
                enabled = v5.Enabled,
                installedVersion = v5.AssetVersion,
                isModerated = v5.Moderated,
                autoUpdateEnabled = v5.AutoUpdate
            });
        end;
        return v3;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
return function()
    return l_ContextServices_0.Analytics.new(function(v3)
        local function v6(v4, v5)
            v3:SendEventDeferred("studio", "PluginManagement", v4, (v1.Dictionary.join({
                studioSid = v3:GetSessionId(),
                clientId = v3:GetClientId()
            }, v5 or {})));
        end;
        local function _(v7, v8)
            v3:ReportCounter(v7, v8 or 1);
        end;
        local function _(v10, v11)
            v6(v10, v11);
            v3:ReportCounter("PluginManagement" .. v10, 1);
        end;
        return {
            TryInstallPluginFromWeb = function(v13, v14)
                v6(v13, {
                    pluginId = v14
                });
                v3:ReportCounter("PluginManagement" .. v13, 1);
            end,
            InstallPluginFromWebSuccess = function(v15, v16)
                v6(v15, {
                    pluginId = v16
                });
                v3:ReportCounter("PluginManagement" .. v15, 1);
            end,
            InstallPluginFromWebFailure = function(v17, v18, v19)
                v6(v17, {
                    pluginId = v18,
                    pluginInstallStatusCode = v19
                });
                v3:ReportCounter("PluginManagement" .. v17, 1);
            end,
            TryUpdatePlugin = function(v20, v21)
                v6(v20, {
                    pluginId = v21
                });
                v3:ReportCounter("PluginManagement" .. v20, 1);
            end,
            TryUpdateAllPlugins = function(v22)
                v6(v22, nil);
                v3:ReportCounter("PluginManagement" .. v22, 1);
            end,
            UpdatePluginSuccess = function(v23, v24)
                v6(v23, {
                    pluginId = v24
                });
                v3:ReportCounter("PluginManagement" .. v23, 1);
            end,
            UpdatePluginFailure = function(v25, v26)
                v6(v25, {
                    pluginId = v26
                });
                v3:ReportCounter("PluginManagement" .. v25, 1);
            end
        };
    end);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = v2.Store.new(require(l_Parent_0.Src.Reducers.MainReducer), nil, {
    v2.thunkMiddleware
});
local v4 = require(l_Parent_0.Src.Resources.makeTheme);
local v5 = l_ContextServices_0.Localization.new({
    stringResourceTable = l_Parent_0.Src.Resources.SourceStrings,
    translationResourceTable = l_Parent_0.Src.Resources.LocalizedStrings,
    pluginName = "PluginInstallation"
});
local v6 = require(l_Parent_0.Packages.Http);
local v7 = v6.API.new({
    networking = v6.Networking.new({
        isInternal = true,
        loggingLevel = 0
    })
});
local v8 = require(l_Parent_0.Src.Util.getAnalyticsContextItem)();
local v9 = nil;
return function(v10)
    if v9 ~= nil then
        return v9;
    else
        assert(v10 ~= nil, "getPluginGlobals hasn't been initialized yet");
        v9 = {
            plugin = v10,
            localization = v5,
            theme = v4,
            store = v3,
            api = v7,
            mouse = v10:GetMouse(),
            focusGui = {},
            analytics = v8
        };
        return v9;
    end;
end;


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.Components.InstallationDialog);
local v4 = require(l_Parent_0.Src.Components.MainView);
local v5 = require(l_Parent_0.Src.Util.getPluginGlobals);
return function(v6)
    local v7 = nil;
    local function v8()
        if v7 then
            v1.unmount(v7);
        end;
    end;
    local v9 = {
        Dialog = v1.createElement(v3, {
            pluginId = v6,
            OnButtonClicked = v8,
            OnClose = v8
        }, {
            Main = v1.createElement(v4, {
                pluginId = v6
            })
        })
    };
    local v10 = v5();
    v7 = v1.mount((l_ContextServices_0.provide({
        l_ContextServices_0.Plugin.new(v10.plugin),
        l_ContextServices_0.Store.new(v10.store),
        v10.localization,
        v10.theme
    }, v9)));
end;


local l_TextService_0 = game:GetService("TextService");
return function(v1, v2, v3, v4)
    local v5 = "";
    local v6 = string.len(v1);
    if l_TextService_0:GetTextSize(v1, v2, v3, Vector2.new()).X < v4 then
        return v1;
    else
        for v7 = 1, math.ceil(v6 / 2) do
            local v8 = v1:sub(1, v7) .. "..." .. v1:sub(v6 - (v7 - 1), v6);
            if l_TextService_0:GetTextSize(v8, v2, v3, Vector2.new()).X + 2 < v4 then
                v5 = v8;
            else
                break;
            end;
        end;
        return v5;
    end;
end;


local l_StudioService_0 = game:GetService("StudioService");
local l_MarketplaceService_0 = game:GetService("MarketplaceService");
local l_Parent_0 = script.Parent.Parent;
require(l_Parent_0.Bin.defineLuaFlags);
local v3 = require(l_Parent_0.Packages.Roact);
local v4 = require(l_Parent_0.Src.Util.getPluginGlobals);
local v5 = require(l_Parent_0.Src.Util.showDialog);
local v6 = require(l_Parent_0.Src.Thunks.InstallPluginFromWeb);
local v7 = require(l_Parent_0.Src.Thunks.RefreshPlugins);
local v8 = require(l_Parent_0.Src.Components.ManagementApp);
local v9 = v4(plugin);
local v10 = {};
local function v12(v11)
    v9.store:dispatch(v6(l_StudioService_0, v9.api, v9.analytics, v11));
    v5(v11);
end;
(function()
    plugin.Name = "PluginInstallation";
    table.insert(v10, l_StudioService_0.OnPluginInstalledFromWeb:Connect(v12));
    local v13 = nil;
    plugin.Unloading:connect(function()
        for _, v15 in ipairs(v10) do
            v15:Disconnect();
        end;
        if v13 then
            v3.unmount(v13);
        end;
    end);
    table.insert(v10, l_StudioService_0:GetPropertyChangedSignal("InstalledPluginData"):Connect(function()
        v9.store:dispatch(v7(v9.api, l_MarketplaceService_0));
    end));
    v13 = v3.mount((v3.createElement(v8, {
        plugin = plugin,
        store = v9.store,
        api = v9.api,
        analytics = v9.analytics
    })));
end)();


local l_Parent_0 = script.Parent.Parent;
require(l_Parent_0.Bin.defineLuaFlags);
local _ = l_Parent_0.Src;
local _ = l_Parent_0.Packages;


if plugin then
    local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
    require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
    local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
    v1.launch("Ribbon", l_script_FirstAncestor_0.Src);
    if not v1.isCli() then
        if game:GetFastFlag("EnableRibbonPlugin") then
            local v2 = v1.getDebugFlags("Ribbon");
            local l_MultipleDocumentInterfaceInstance_0 = plugin.MultipleDocumentInterfaceInstance;
            local v4 = nil;
            local v5 = nil;
            local function v10()
                if plugin.HostDataModelTypeIsCurrent then
                    if v2.MountAssetReactTree then
                        local v6 = require(l_script_FirstAncestor_0.Packages.React);
                        local v7 = require(l_script_FirstAncestor_0.Packages.ReactRoblox);
                        local v8 = v6.createElement(require(l_script_FirstAncestor_0.Src.MainPlugin), {
                            Plugin = plugin
                        });
                        local l_ScreenGui_0 = Instance.new("ScreenGui");
                        v5 = v7.createRoot(l_ScreenGui_0);
                        v5:render(v8);
                        l_ScreenGui_0.Parent = game:GetService("StarterGui");
                    end;
                    return ;
                else
                    return ;
                end;
            end;
            local function v11()
                if v4 then
                    v4:destroy();
                    v4 = nil;
                end;
                if v5 then
                    v5:render(nil);
                    v5 = nil;
                end;
            end;
            plugin.Unloading:Connect(v11);
            local l_FocusedDataModelSession_0 = l_MultipleDocumentInterfaceInstance_0.FocusedDataModelSession;
            l_FocusedDataModelSession_0.CurrentDataModelTypeAboutToChange:Connect(v11);
            l_FocusedDataModelSession_0.CurrentDataModelTypeChanged:Connect(v10);
            v10();
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
v1.launch("Ribbon", l_script_FirstAncestor_0.Src);
if not v1.isCli() then
    if game:GetFastFlag("EnableRibbonPlugin") then
        plugin.Name = l_script_FirstAncestor_0.Name;
        local v14 = require(l_script_FirstAncestor_0.Packages.PluginLoader.PluginLoaderBuilder).build({
            plugin = plugin,
            pluginName = "Ribbon",
            getToolbarName = function(v2, v3, v4)
                return v2(v3, v4, "Plugin", "Toolbar");
            end,
            translationResourceTable = l_script_FirstAncestor_0.Src.Resources.Localization.LocalizedStrings,
            fallbackResourceTable = l_script_FirstAncestor_0.Src.Resources.Localization.SourceStrings,
            buttonInfo = {
                getName = function(v5, v6, v7)
                    return v5(v6, v7, "Plugin", "Button");
                end,
                getDescription = function(v8, v9, v10)
                    return v8(v9, v10, "Plugin", "Description");
                end,
                icon = "rbxlocaltheme://GameSettings",
                enabled = true
            },
            dockWidgetInfo = {
                id = "Ribbon",
                dockWidgetPluginGuiInfo = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Bottom, false, false, 640, 480, 250, 200),
                getDockTitle = function(v11, v12, v13)
                    return v11(v12, v13, "Plugin", "Name");
                end,
                zIndexBehavior = Enum.ZIndexBehavior.Sibling
            }
        });
        if v14.pluginLoader:waitForUserInteraction() then
            require(script.Parent.main)(plugin, v14);
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
return function(v1, v2)
    local v3 = require(l_script_FirstAncestor_0.Packages.React);
    local v4 = require(l_script_FirstAncestor_0.Packages.ReactRoblox);
    local v5 = v3.createElement(require(l_script_FirstAncestor_0.Src.MainPlugin), {
        Plugin = v1,
        PluginLoaderContext = v2
    });
    local v6 = v4.createRoot((Instance.new("Frame")));
    v6:render(v5);
    v1.Unloading:Connect(function()
        if v6 then
            v6:render(nil);
            v6 = nil;
        end;
    end);
end;


return require(script:FindFirstAncestor("Ribbon").Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        something = v0
    };
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v2.ContextServices.Localization;
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
return function(_)
    return v1.createElement(l_Pane_0, {
        [v1.Tag] = "X-Fit X-PadL"
    }, {
        Text = v1.createElement(l_TextLabel_0, {
            Text = l_Localization_0.use():getText("Plugin", "Text"),
            [v1.Tag] = "Title X-Fit"
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_counter_0 = v3.Util.counter;
local l_UI_0 = v3.UI;
local l_IconButton_0 = l_UI_0.IconButton;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local _ = require(l_script_FirstAncestor_0.Src.Reducers.MainReducer);
local v10 = require(l_script_FirstAncestor_0.Src.Actions.ExampleIncrementCount);
return v2.connect(function(v11, _)
    return {
        ExampleCount = v11.ExampleReducer.ExampleCount,
        ExampleString = v11.ExampleReducer.ExampleString
    };
end, function(v13)
    return {
        dispatchExampleIncrementCount = function(v14)
            v13(v10(v14));
        end
    };
end)(function(v15)
    local v16 = l_counter_0();
    return v1.createElement(l_Pane_0, {
        LayoutOrder = 2,
        [v1.Tag] = "X-Fit X-PadL X-RowM X-Middle"
    }, {
        Button = v1.createElement(l_IconButton_0, {
            LayoutOrder = v16(),
            Text = "Increment",
            OnClick = function()
                v15.dispatchExampleIncrementCount("Pressed");
            end,
            [v1.Tag] = "Primary X-Fit"
        }),
        Text = v1.createElement(l_TextLabel_0, {
            LayoutOrder = v16(),
            Text = ("Count: %* %*"):format(v15.ExampleCount, v15.ExampleString),
            [v1.Tag] = "X-Fit"
        })
    });
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Ribbon");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_UI_0 = v3.UI;
local l_DockWidget_0 = l_UI_0.DockWidget;
local l_Pane_0 = l_UI_0.Pane;
local l_ContextServices_0 = v3.ContextServices;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local l_Mouse_0 = l_ContextServices_0.Mouse;
local l_Store_0 = l_ContextServices_0.Store;
local v11 = require(l_script_FirstAncestor_0.Src.Reducers.MainReducer);
local l_StudioTheme_0 = v3.Style.Themes.StudioTheme;
local l_registerPluginStyles_0 = v3.Styling.registerPluginStyles;
local l_SourceStrings_0 = l_script_FirstAncestor_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_script_FirstAncestor_0.Src.Resources.Localization.LocalizedStrings;
local l_Components_0 = l_script_FirstAncestor_0.Src.Components;
local v17 = require(l_Components_0.ExampleComponent);
local v18 = require(l_Components_0.ExampleRoduxComponent);
local v19 = v1.PureComponent:extend("MainPlugin");
v19.init = function(v20, v21)
    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.onWidgetEnabledChanged = function(v24)
        v20:setState({
            enabled = v24.Enabled
        });
    end;
    v20.onDockWidgetCreated = function()
        v20.props.PluginLoaderContext.mainButtonClickedSignal:Connect(v20.toggleEnabled);
    end;
    v20.store = v2.Store.new(v11, nil, {
        v2.thunkMiddleware
    }, nil);
    v20.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "Ribbon"
    });
    v20.analytics = l_ContextServices_0.Analytics.new(function()
        return {};
    end, {});
    v20.DEPRECATED_stylizer = l_StudioTheme_0.new();
    v20.design = l_registerPluginStyles_0(v21.Plugin);
end;
v19.didUpdate = function(v25)
    v25.props.PluginLoaderContext.mainButton:SetActive(v25.state.enabled);
end;
v19.render = function(v26)
    local l_props_0 = v26.props;
    local l_state_0 = v26.state;
    local l_Plugin_1 = l_props_0.Plugin;
    return l_ContextServices_0.provide({
        l_Plugin_0.new(l_Plugin_1),
        l_Store_0.new(v26.store),
        l_Mouse_0.new(l_Plugin_1:getMouse()),
        v26.DEPRECATED_stylizer,
        v26.localization,
        v26.analytics
    }, {
        MainWidget = v1.createElement(l_DockWidget_0, {
            Id = "Ribbon",
            Enabled = l_state_0.enabled,
            Title = v26.localization:getText("Plugin", "Name"),
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            InitialDockState = Enum.InitialDockState.Bottom,
            Size = Vector2.new(640, 480),
            MinSize = Vector2.new(250, 200),
            OnClose = v26.onClose,
            Widget = l_props_0.PluginLoaderContext.mainDockWidget,
            OnWidgetCreated = v26.onDockWidgetCreated,
            [v1.Change.Enabled] = v26.onWidgetEnabledChanged
        }, {
            Wrapper = v1.createElement(l_Pane_0, {
                [v1.Tag] = "X-Fill X-Column"
            }, {
                ExampleComponent = v1.createElement(v17),
                ExampleRoduxComponent = v1.createElement(v18)
            }),
            StyleLink = v1.createElement("StyleLink", {
                StyleSheet = v26.design
            })
        })
    });
end;
return v19;