local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetAccess");
local v1 = require(l_script_FirstAncestor_0.Packages.Dev.JestGlobals);
local v2 = require(l_script_FirstAncestor_0.Src.Util.createMockAssetAccessController);
local l_jest_0 = v1.jest;
return function()
    local v4 = {};
    local v5 = {};
    local v6 = {};
    v4.SetItem = l_jest_0.fn(function(_, v8, v9)
        v5[v8] = if typeof(v9) == "table" then table.clone(v9) else v9;
        local v10 = v6[v8];
        if v10 then
            v10(if typeof(v9) == "table" then table.clone(v9) else v9);
        end;
    end);
    v4.GetItem = l_jest_0.fn(function(_, v12)
        local v13 = v5[v12];
        if typeof(v13) == "table" then
            return (table.clone(v13));
        else
            return v13;
        end;
    end);
    v4.MockOnSetItemDisconnect = l_jest_0.fn();
    v4.OnSetItem = l_jest_0.fn(function(_, v15, v16)
        v6[v15] = v16;
        return {
            Disconnect = function()
                v6[v15] = nil;
                v4.MockOnSetItemDisconnect(v15);
            end
        };
    end);
    local v17 = {};
    v4.Invoke = l_jest_0.fn(function(_, v19, ...)
        local v20 = v17[v19];
        if v20 then
            local v21 = table.pack(...);
            for v22, v23 in v21, nil, nil do
                if typeof(v23) == "table" then
                    v21[v22] = table.clone(v23);
                end;
            end;
            v20(table.unpack(v21));
        end;
    end);
    v4.MockOnInvokeDisconnect = l_jest_0.fn();
    v4.OnInvoke = l_jest_0.fn(function(_, v25, v26)
        v17[v25] = v26;
        return {
            Disconnect = function()
                v17[v25] = nil;
                v4.MockOnInvokeDisconnect(v25);
            end
        };
    end);
    v4.MockAssetAccessController = v2();
    v4.GetPluginComponent = l_jest_0.fn(function(_, v28)
        if v28 == "AssetAccessController" then
            return v4.MockAssetAccessController;
        else
            error("Invalid plugin component name");
            return ;
        end;
    end);
    return v4;
end;


local v0 = require(script:FindFirstAncestor("AssetAccess").Packages.Framework);
local l_TestHelpers_0 = v0.TestHelpers;
local l_ContextServices_0 = v0.ContextServices;
local v3 = {
    l_ContextServices_0.Analytics.mock(),
    l_ContextServices_0.Localization.mock(),
    v0.Style.Themes.StudioTheme.mock()
};
return function(v4)
    assert(type(v4) == "table", "Expected story to be a table");
    return l_TestHelpers_0.provideMockContext(v3, v4);
end;


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


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
if game:GetFastFlag("DebugAssetMgInAssetDm") then
    if game:GetFastFlag("EnableAssetManager") then
        local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
        v1.launch("AssetManager", l_script_FirstAncestor_0.Src);
        if not v1.isCli() then
            plugin.Name = l_script_FirstAncestor_0.Name;
            local v14 = require(l_script_FirstAncestor_0.Packages.PluginLoader.PluginLoaderBuilder).build({
                plugin = plugin,
                pluginName = "AssetManager",
                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 = "AssetManager",
                    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(l_script_FirstAncestor_0.Bin.Common.main)(plugin, v14);
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


game:DefineFastFlag("EnableAssetManager", false);
game:DefineFastFlag("DebugAssetMgInAssetDm", false);
return nil;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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")));
    assert(v6);
    v6:render(v5);
    v1.Unloading:Connect(function()
        if v6 then
            v6:render(nil);
            v6 = nil;
        end;
    end);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
if not game:GetFastFlag("DebugAssetMgInAssetDm") then
    if game:GetFastFlag("EnableAssetManager") then
        local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
        v1.launch("AssetManager", l_script_FirstAncestor_0.Src);
        if not v1.isCli() then
            plugin.Name = l_script_FirstAncestor_0.Name;
            local v14 = require(l_script_FirstAncestor_0.Packages.PluginLoader.PluginLoaderBuilder).build({
                plugin = plugin,
                pluginName = "AssetManager",
                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 = "AssetManager",
                    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(l_script_FirstAncestor_0.Bin.Common.main)(plugin, v14);
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


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


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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_Image_0 = l_UI_0.Image;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v9 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v10 = require(l_script_FirstAncestor_0.Src.Networking);
local v11 = require(l_script_FirstAncestor_0.Src.Hooks.useItems);
local v12 = require(l_script_FirstAncestor_0.Src.Hooks.useItemSelection);
local l_useState_0 = v1.useState;
local v14 = require(l_script_FirstAncestor_0.Src.Util.renderContextMenu);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local l_DoubleClickDetector_0 = v2.Util.DoubleClickDetector;
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v18)
    local v19 = l_useState_0(l_DoubleClickDetector_0.new());
    local v20 = l_LayoutOrderIterator_0.new();
    local v21 = l_Localization_0.use();
    local v22 = v9.use();
    local v23 = v8.use();
    local v24 = v10.use();
    local l_Cell_0 = v18.Cell;
    local v26 = v12(v23);
    local v27 = v11(v23);
    local v28 = "";
    if v26[l_Cell_0.AssetId] then
        v28 = "SelectedCell";
    end;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v18.Key,
        Size = v18.Size,
        Position = v18.Position,
        OnClick = function()
            v23:handleClick(l_Cell_0.AssetId, v27, v18.Key, v19:isDoubleClick());
        end,
        OnRightClick = function()
            v14(l_Cell_0.AssetId, v21, v22:getPlugin());
        end,
        [v1.Tag] = "ItemCell X-Top X-Center X-ColumnS"
    }, {
        ThumbnailContainer = v1.createElement(l_Pane_0, {
            [v1.Tag] = ("ThumbnailContainer Secondary X-Corner X-Pad X-Center X-Middle %*"):format(v28)
        }, {
            Thumbnail = v1.createElement(l_Image_0, {
                LayoutOrder = v20:getNextOrder(),
                Image = v24:getThumbnailForItem(l_Cell_0)
            })
        }),
        TagContainer = v1.createElement(l_Pane_0, {
            LayoutOrder = v20:getNextOrder(),
            [v1.Tag] = "TagContainer X-Column X-PadS X-Left X-Middle"
        }, {
            NameTag = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v20:getNextOrder(),
                Text = v18.Cell.DisplayName,
                TextTruncate = Enum.TextTruncate.AtEnd
            }),
            TypeTag = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v20:getNextOrder(),
                Text = v21:getText("AssetType", l_Cell_0.AssetType),
                TextTruncate = Enum.TextTruncate.AtEnd,
                [v1.Tag] = "Body"
            })
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".ItemCell", {}, {
    l_createStyleRule_0("> .ThumbnailContainer", {
        BackgroundColor3 = "$ForegroundContrast",
        BackgroundTransparency = 0
    }, {
        l_createStyleRule_0(":hover", {
            BackgroundColor3 = "$ActionHover"
        }),
        l_createStyleRule_0(".SelectedCell", {
            BackgroundColor3 = "$ActionSelected"
        }),
        l_createStyleRule_0(".FocusedCell ::UIStroke", {
            ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
            Color = "$ActionFocusBorder",
            Thickness = 1
        })
    }, {})
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local l_UI_0 = require(l_script_FirstAncestor_0.Packages.Framework).UI;
local l_Grid_0 = l_UI_0.Grid;
local l_Pane_0 = l_UI_0.Pane;
local v5 = require(script.ItemCell);
local v6 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v7 = require(l_script_FirstAncestor_0.Src.Hooks.useItems);
local v8 = require(l_script_FirstAncestor_0.Src.Hooks.useLayoutInfo);
local v9 = require(script.styles);
return function(v10)
    local v11 = v6.use();
    local v12 = v7(v11);
    local l_GridSize_0 = v8(v11).GridSize;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v10.LayoutOrder,
        [v1.Tag] = "MainContents ContentGrid X-FitY X-Top X-Column X-Center"
    }, {
        View = v1.createElement(l_Grid_0, {
            Cells = v12,
            CellSize = UDim2.fromOffset(l_GridSize_0, l_GridSize_0 + v9:GetAttribute("CellHeightDiff")),
            CellPadding = v9:GetAttribute("CellPadding"),
            CellComponent = v5
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".ContentGrid", {}, {
    l_createStyleRule_0(">> .ItemCell", {}, {
        l_createStyleRule_0("> .ThumbnailContainer", {
            Size = UDim2.new(1, 0, 1, -30)
        }),
        l_createStyleRule_0("> .TagContainer", {
            Size = UDim2.new(1, 0, 0, 30)
        })
    })
}, {
    CellHeightDiff = 30,
    CellPadding = UDim2.fromOffset(10, 10)
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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;
local l_SplitPane_0 = l_UI_0.SplitPane;
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v9 = require(l_script_FirstAncestor_0.Src.Hooks.useColumns);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v11 = require(script.Parent.styles);
local function v18(v12, v13, v14)
    local v15 = {};
    for v16, v17 in v12, nil, nil do
        v15[v16] = v1.createElement(l_Pane_0, {
            LayoutOrder = v16,
            OnClick = function()
                v13:addSort(v17);
            end,
            [v1.Tag] = "X-Row X-Left X-Middle X-PadS"
        }, {
            Text = v1.createElement(l_TextLabel_0, {
                Text = v14:getText("AssetProperty", v17),
                TextTruncate = Enum.TextTruncate.AtEnd,
                [v1.Tag] = "X-Fit"
            })
        });
    end;
    return v15;
end;
return function(v19)
    local v20 = l_Localization_0.use();
    local v21 = v8.use();
    local v22, v23 = v9(v21);
    local v24 = v18(v22, v21, v20);
    local v25 = {};
    for v26, _ in v24, nil, nil do
        v25[v26] = v11:GetAttribute("ColumnMinSize");
    end;
    return v1.createElement(l_SplitPane_0, {
        LayoutOrder = v19.LayoutOrder,
        UseScale = false,
        ClampSize = false,
        HideBars = true,
        MinSizes = v25,
        Sizes = v23,
        OnSizesChange = function(v28)
            v21:setColumnWidths(v28);
        end,
        [v1.Tag] = "HeaderRow Contrast X-Stroke"
    }, v24);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local l_UI_0 = require(l_script_FirstAncestor_0.Packages.Framework).UI;
local l_Pane_0 = l_UI_0.Pane;
local l_Image_0 = l_UI_0.Image;
local v5 = require(l_script_FirstAncestor_0.Src.Networking);
local _ = require(l_script_FirstAncestor_0.Src.Types);
return function(v7)
    local v8 = v5:use();
    local v9, v10 = v1.useState("");
    if v9 == "" then
        v8:getThumbnailForItemAsync(v7.AssetInfo, v10);
    end;
    return v1.createElement(l_Pane_0, {
        [v1.Tag] = "ThumbnailContainer X-Center X-Middle"
    }, {
        Thumbnail = v1.createElement(l_Image_0, {
            Image = v9,
            [v1.Tag] = "Thumbnail"
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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;
local v7 = require(script.AssetThumbnail);
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v9 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v10 = require(l_script_FirstAncestor_0.Src.Networking);
local v11 = require(l_script_FirstAncestor_0.Src.Hooks.useColumns);
local v12 = require(l_script_FirstAncestor_0.Src.Hooks.useItems);
local v13 = require(l_script_FirstAncestor_0.Src.Hooks.useItemSelection);
local l_useState_0 = v1.useState;
local v15 = require(l_script_FirstAncestor_0.Src.Util.renderContextMenu);
local v16 = require(l_script_FirstAncestor_0.Src.Types);
local l_DoubleClickDetector_0 = v2.Util.DoubleClickDetector;
local v18 = require(script.styles);
local function v23(v19, v20, v21)
    local v22 = v19[v20];
    if v20 == v16.AssetInfoField.Owner then
        if v22.Name ~= "" then
            return v22.Name;
        else
            return v22.Id;
        end;
    elseif not (v20 ~= v16.AssetInfoField.Modified) or v20 == v16.AssetInfoField.Created then
        return v19.Modified:FormatLocalTime("lll", "en-us");
    elseif v20 == v16.AssetInfoField.AssetType then
        return v21:getText("AssetType", v22);
    else
        return (tostring(v22));
    end;
end;
local function v36(v24, v25, _, v27)
    local v28 = {};
    table.insert(v28, (v1.createElement(v7, {
        LayoutOrder = 1,
        AssetInfo = v24
    })));
    local v29, v30 = v11(v25);
    for v31, v32 in v29, nil, nil do
        local l_Offset_0 = v30[v31].Offset;
        if v31 == 1 then
            l_Offset_0 = l_Offset_0 - v18:GetAttribute("ThumbnailSize");
        end;
        local v34 = v23(v24, v32, v27);
        local v35 = v31 + 1;
        v28[v35] = v1.createElement(l_TextLabel_0, {
            LayoutOrder = v35,
            Text = v34,
            TextTruncate = Enum.TextTruncate.AtEnd,
            Size = UDim2.new(0, l_Offset_0, 1, 0),
            [v1.Tag] = "Left X-Pad"
        });
    end;
    return v28;
end;
return function(v37)
    local v38 = l_useState_0(l_DoubleClickDetector_0.new());
    local v39 = l_Localization_0.use();
    local v40 = v9.use();
    local v41 = v8.use();
    local v42 = v10:use();
    local l_AssetInfo_0 = v37.AssetInfo;
    local v44 = v13(v41);
    local v45 = v12(v41);
    local v46 = v37.Key % 2 == 0 and "ContrastRow" or "";
    if v44[l_AssetInfo_0.AssetId] then
        v46 = "SelectedRow";
    end;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v37.Key,
        Position = v37.Position,
        OnClick = function()
            v41:handleClick(l_AssetInfo_0.AssetId, v45, v37.Key, v38:isDoubleClick());
        end,
        OnRightClick = function()
            v15(l_AssetInfo_0.AssetId, v39, v40:getPlugin());
        end,
        [v1.Tag] = ("ItemRow X-FitX X-Row X-Left X-Middle %*"):format(v46)
    }, {
        (v36(l_AssetInfo_0, v41, v42, v39))
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".ItemRow", {
    Size = UDim2.new(1, 0, 0, 50),
    BackgroundColor3 = "$ForegroundMain",
    BackgroundTransparency = 0
}, {
    l_createStyleRule_0(":hover", {
        BackgroundColor3 = "$ActionHover"
    }),
    l_createStyleRule_0(".ContrastRow", {
        BackgroundColor3 = "$ForegroundContrast"
    }, {
        l_createStyleRule_0(":hover", {
            BackgroundColor3 = "$ActionHover"
        })
    }),
    l_createStyleRule_0(".SelectedRow", {
        BackgroundColor3 = "$ActionSelected"
    }),
    l_createStyleRule_0(".FocusedRow ::UIStroke", {
        ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
        Color = "$ActionFocusBorder",
        Thickness = 1
    }),
    l_createStyleRule_0("> .ThumbnailContainer", {
        Size = UDim2.fromOffset(50, 50)
    }, {
        l_createStyleRule_0("> .Thumbnail", {
            Size = UDim2.fromOffset(30, 30)
        })
    })
}, {
    ThumbnailSize = 50
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_List_0 = l_UI_0.List;
local v6 = require(script.HeaderRow);
local v7 = require(script.ItemRow);
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v9 = require(l_script_FirstAncestor_0.Src.Hooks.useItems);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v11 = require(script.styles);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v13)
    local v14 = l_LayoutOrderIterator_0.new();
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v13.LayoutOrder,
        [v1.Tag] = "MainContents ContentList X-FitY X-Top X-Column X-Center"
    }, {
        HeaderRow = v1.createElement(v6, {
            LayoutOrder = v14:getNextOrder()
        }),
        View = v1.createElement(l_List_0, {
            LayoutOrder = v14:getNextOrder(),
            GetRowProps = function(v15, v16, v17, v18)
                return {
                    Key = v16,
                    Position = v17,
                    AssetInfo = v15,
                    Size = v18
                };
            end,
            Rows = v9((v8.use())),
            RowComponent = v7,
            RowHeight = v11:GetAttribute("RowHeight"),
            ScrollingDirection = Enum.ScrollingDirection.XY,
            [v1.Tag] = "ItemList"
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".ContentList", {}, {
    l_createStyleRule_0("> .HeaderRow", {
        Size = UDim2.new(1, 0, 0, 25)
    }),
    l_createStyleRule_0("> .ItemList", {
        Size = UDim2.new(1, 0, 1, -25)
    })
}, {
    ColumnMinSize = UDim.new(0, 60),
    RowHeight = 50
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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;
local v7 = require(l_script_FirstAncestor_0.Src.Types);
local v8 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrOutput);
return function(v9)
    local v10 = l_Localization_0.use();
    local v11 = "";
    if v9.FilterType == v7.AssetInfoField.Owner then
        v11 = v9.Item;
    elseif v9.FilterType == v7.AssetInfoField.AssetType then
        v11 = v10:getText("AssetType", v9.Item);
    elseif v8() then
        warn("Creating item for unsupported filter type");
    end;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v9.LayoutOrder,
        OnClick = v9.Activated,
        [v1.Tag] = "FilterItem Secondary"
    }, {
        Label = v1.createElement(l_TextLabel_0, {
            Text = v11,
            TextTruncate = Enum.TextTruncate.AtEnd,
            [v1.Tag] = "X-Fill Left X-Pad"
        })
    });
end;


return require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule(".FilterItem", {
    Size = UDim2.new(0, 80, 0, 40)
}, {}, {});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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_SelectInput_0 = l_UI_0.SelectInput;
local l_Image_0 = l_UI_0.Image;
local l_ViewTypeSelector_0 = l_UI_0.ViewTypeSelector;
local v9 = require(script.FilterItem);
local v10 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local l_useState_0 = v1.useState;
local v12 = require(l_script_FirstAncestor_0.Src.Hooks.useLayoutInfo);
local v13 = require(l_script_FirstAncestor_0.Src.Types);
local l_AssetInfoField_0 = v13.AssetInfoField;
local v15 = require(script.styles);
local v16 = require(l_script_FirstAncestor_0.Src.Util.Images);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v18)
    local v19 = l_LayoutOrderIterator_0.new();
    local v20 = l_Localization_0.use();
    local v21 = v10.use();
    local v22, v23 = l_useState_0(nil);
    local v24, v25 = l_useState_0(nil);
    local function v30(v26, v27, v28, v29)
        return v1.createElement(v9, {
            FilterType = v26,
            Item = v27,
            LayoutOrder = v28,
            Activated = v29
        });
    end;
    local v31 = v12(v21);
    local function _(v32, v33)
        if not v32 then
            v32 = v31.GridSize;
        end;
        if not v33 then
            v33 = v31.ViewType;
        end;
        v21:setLayout({
            GridSize = v32,
            ViewType = v33
        });
    end;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v18.LayoutOrder,
        [v1.Tag] = "HeaderOptions X-Right X-RowM X-Middle X-PadS"
    }, {
        CreatorFilter = v1.createElement(l_SelectInput_0, {
            LayoutOrder = v19:getNextOrder(),
            PlaceholderText = v20:getText("Filters", "Owner"),
            SelectedIndex = v24,
            Items = v21:getOwners(),
            OnItemActivated = function(v35, v36)
                v25(v36);
                v21:addFilter(l_AssetInfoField_0.Owner, {
                    [v35] = true
                });
            end,
            OnRenderItem = function(v37, v38, v39)
                return v30(l_AssetInfoField_0.Owner, v37, v38, v39);
            end,
            UseAutoWidth = true,
            TextTruncate = Enum.TextTruncate.AtEnd,
            Size = v15:GetAttribute("FilterSize"),
            [v1.Tag] = ""
        }),
        AssetTypeFilter = v1.createElement(l_SelectInput_0, {
            LayoutOrder = v19:getNextOrder(),
            PlaceholderText = v20:getText("Filters", "AssetTypes"),
            SelectedIndex = v22,
            Items = v13.getEnumAsList(v13.AssetType),
            OnItemActivated = function(v40, v41)
                v23(v41);
                v21:addFilter(l_AssetInfoField_0.AssetType, {
                    [v40] = true
                });
            end,
            OnRenderItem = function(v42, v43, v44)
                return v30(l_AssetInfoField_0.AssetType, v42, v43, v44);
            end,
            UseAutoWidth = true,
            TextTruncate = Enum.TextTruncate.AtEnd,
            Size = v15:GetAttribute("FilterSize"),
            [v1.Tag] = ""
        }),
        ClearFiltersButton = v1.createElement(l_Pane_0, {
            LayoutOrder = v19:getNextOrder(),
            OnClick = function()
                v21:clearFilters();
                v25(nil);
                v23(nil);
            end,
            [v1.Tag] = "ClearFilter"
        }, {
            ClearFiltersIcon = v1.createElement(l_Image_0, {
                Image = v16.CLEAR_ICON,
                [v1.Tag] = "FilterImage"
            })
        }),
        ViewTypeSelector = v1.createElement(l_ViewTypeSelector_0, {
            LayoutOrder = v19:getNextOrder(),
            OnGridTileSizeChanged = function(v45)
                local l_v45_0 = v45;
                local v47 = nil;
                if not l_v45_0 then
                    l_v45_0 = v31.GridSize;
                end;
                if not v47 then
                    v47 = v31.ViewType;
                end;
                v21:setLayout({
                    GridSize = l_v45_0,
                    ViewType = v47
                });
            end,
            OnViewTypeSelected = function(v48)
                local v49 = nil;
                local v50 = v13.ViewType.fromRawValue(v48.rawValue());
                if not v49 then
                    v49 = v31.GridSize;
                end;
                if not v50 then
                    v50 = v31.ViewType;
                end;
                v21:setLayout({
                    GridSize = v49,
                    ViewType = v50
                });
            end,
            Default = v31.ViewType.rawValue(),
            DefaultGridTileSize = v31.GridSize,
            [v1.Tag] = "IconOnly"
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local l_createStyleRule_0 = require(l_script_FirstAncestor_0.Packages.Framework).Styling.createStyleRule;
local _ = require(l_script_FirstAncestor_0.Src.Util.Images);
return l_createStyleRule_0(".HeaderOptions", {}, {
    l_createStyleRule_0("> .ClearFilter", {
        Size = UDim2.fromOffset(20, 20)
    })
}, {
    FilterSize = UDim2.fromOffset(80, 32)
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
local l_UI_0 = v2.UI;
local l_Image_0 = l_UI_0.Image;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local v8 = require(script.HeaderOptions);
local v9 = require(l_script_FirstAncestor_0.Src.Controllers.ExplorerController);
local v10 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v11 = require(l_script_FirstAncestor_0.Src.Networking);
local l_useState_0 = v1.useState;
local v13 = require(l_script_FirstAncestor_0.Src.Hooks.useExplorerState);
local _ = require(l_script_FirstAncestor_0.Src.Util.Images);
return function(v15)
    local v16 = l_LayoutOrderIterator_0.new();
    local v17 = v11.use();
    local v18 = v10.use();
    local v19 = v9.use();
    local v20, v21 = l_useState_0("");
    local l_Selection_0 = v13(v18, v19).Selection;
    local function v24(v23)
        if v20 ~= v23 then
            v21(v23);
        end;
    end;
    if not (v20 ~= "") or v20 ~= v17:getThumbnailUriForScope(l_Selection_0) then
        v17:getThumbnailForScopeAsync(l_Selection_0, v24);
    end;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v15.LayoutOrder,
        [v1.Tag] = "TopBar HeaderBar X-Left X-Row X-Stroke"
    }, {
        ScopeTitleContainer = v1.createElement(l_Pane_0, {
            LayoutOrder = v16:getNextOrder(),
            [v1.Tag] = "HeaderTitle X-Row X-Pad X-Left X-Middle"
        }, {
            ScopeThumbnail = v1.createElement(l_Image_0, {
                LayoutOrder = v16:getNextOrder(),
                Image = v20,
                [v1.Tag] = "ScopeThumbnail X-PadM"
            }),
            ScopeTitle = v1.createElement(l_TextLabel_0, {
                LayoutOrder = v16:getNextOrder(),
                Text = l_Selection_0.Name,
                [v1.Tag] = "Title X-Fit X-PadS"
            })
        }),
        Options = v1.createElement(v8, {
            LayoutOrder = v16:getNextOrder()
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".HeaderBar", {}, {
    l_createStyleRule_0("> .HeaderTitle", {
        Size = UDim2.new(0, 300, 1, 0)
    }, {
        l_createStyleRule_0("> .ScopeThumbnail", {
            Size = UDim2.fromOffset(32, 32)
        }, {
            l_createStyleRule_0("::UICorner", {
                CornerRadius = UDim.new(1, 0)
            })
        })
    }),
    l_createStyleRule_0("> .HeaderOptions", {
        Size = UDim2.new(1, -300, 1, 0)
    })
}, {});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
local l_Pane_0 = v2.UI.Pane;
local v5 = require(script.ContentGrid);
local v6 = require(script.ContentList);
local v7 = require(script.HeaderBar);
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v9 = require(l_script_FirstAncestor_0.Src.Hooks.useLayoutInfo);
local v10 = require(l_script_FirstAncestor_0.Src.Types);
return function(v11)
    local v12 = l_LayoutOrderIterator_0.new();
    local v13 = v9((v8.use()));
    local v14 = v1.createElement(v7, {
        LayoutOrder = v12:getNextOrder()
    });
    local _ = nil;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v11.LayoutOrder,
        [v1.Tag] = "Main X-Border X-Top X-Column"
    }, {
        HeaderBar = v14,
        Contents = if v13.ViewType == v10.ViewType.Grid then v1.createElement(v5, {
            LayoutOrder = v12:getNextOrder()
        }) else v1.createElement(v6, {
            LayoutOrder = v12:getNextOrder()
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Image_0 = l_UI_0.Image;
local v7 = require(l_script_FirstAncestor_0.Src.Controllers.ExplorerController);
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v9 = require(l_script_FirstAncestor_0.Src.Hooks.useExplorerState);
local v10 = require(l_script_FirstAncestor_0.Src.Util.Images);
local v11 = require(l_script_FirstAncestor_0.Src.Types);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v13)
    local v14 = l_LayoutOrderIterator_0.new();
    local v15 = v8.use();
    local v16 = v7.use();
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v13.Index,
        Position = v13.Position,
        OnPress = function()
            v16:setSelection(v13.Item);
        end,
        [v1.Tag] = ("Element X-Corner X-PadS X-Row X-Left X-Middle %*"):format(v9(v15, v16).Selection.Id == v13.Item.Id and "Paper" or "")
    }, {
        Thumbnail = v1.createElement(l_Image_0, {
            LayoutOrder = v14:getNextOrder(),
            Image = if v13.Item.Scope == v11.Scope.Group then v10.ICON_GROUP_DEFAULT else v10.ICON_USER_DEFAULT,
            [v1.Tag] = "ScopeIcon Icon16 X-PadM"
        }),
        Name = v1.createElement(l_TextLabel_0, {
            LayoutOrder = v14:getNextOrder(),
            Text = v13.Item.Name,
            TextTruncate = Enum.TextTruncate.AtEnd,
            [v1.Tag] = "Left X-PadS"
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TreeView_0 = l_UI_0.TreeView;
local v6 = require(script.ExplorerRow);
local v7 = require(l_script_FirstAncestor_0.Src.Controllers.ExplorerController);
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v9 = require(l_script_FirstAncestor_0.Src.Hooks.useExplorerState);
local v10 = require(script.styles);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v12)
    local v13 = l_LayoutOrderIterator_0.new();
    local v14 = v9(v8.use(), (v7.use()));
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v12.LayoutOrder,
        [v1.Tag] = "Explorer X-Column"
    }, {
        TreeView = v1.createElement(l_TreeView_0, {
            LayoutOrder = v13:getNextOrder(),
            RootItems = v14.Items,
            Expansion = v14.Expansion,
            OnExpansionChange = function(_)
            end,
            RowComponent = v6,
            RowHeight = v10:GetAttribute("RowHeight"),
            [v1.Tag] = ""
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".Explorer", {}, {
    l_createStyleRule_0(">> .Element", {
        Size = UDim2.new(1, -4, 0, 24)
    }, {
        l_createStyleRule_0("> .ScopeIcon", {}, {
            l_createStyleRule_0("::UICorner", {
                CornerRadius = UDim.new(1, 0)
            })
        })
    })
}, {
    RowHeight = 24
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
local l_Localization_0 = v2.ContextServices.Localization;
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_SearchBar_0 = l_UI_0.SearchBar;
return function(v8)
    local v9 = l_Localization_0.use();
    local _ = l_LayoutOrderIterator_0.new();
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v8.LayoutOrder,
        [v1.Tag] = "TopBar X-Center X-Stroke X-Middle X-ColumnM"
    }, {
        SearchBar = v1.createElement(l_SearchBar_0, {
            PlaceholderText = v9:getText("Search", "Placeholder"),
            OnTextChanged = function()
            end,
            [v1.Tag] = "X-PadS"
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Pane_0 = v2.UI.Pane;
local v4 = require(script.ScopeExplorer);
local v5 = require(script.SearchPanel);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
return function(v7)
    local v8 = l_LayoutOrderIterator_0.new();
    return v1.createElement(l_Pane_0, {
        LayoutOrder = v7.LayoutOrder,
        [v1.Tag] = "Contrast X-Border X-Top X-Column"
    }, {
        SearchPanel = v1.createElement(v5, {
            LayoutOrder = v8:getNextOrder()
        }),
        ScopeExplorer = v1.createElement(v4, {
            LayoutOrder = v8:getNextOrder()
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
local l_SplitPane_0 = v2.UI.SplitPane;
local v5 = require(script.MainView);
local v6 = require(script.Sidebar);
local l_useState_0 = v1.useState;
local v8 = require(script.styles);
return function(_)
    local v10 = l_LayoutOrderIterator_0.new();
    local v11 = {
        v8:GetAttribute("DefaultSizeSidebar"),
        v8:GetAttribute("DefaultSizeMainView")
    };
    local v12 = {
        v8:GetAttribute("MinimumSizeSidebar"),
        v8:GetAttribute("MinimumSizeMainView")
    };
    local v13, v14 = l_useState_0(v11);
    return v1.createElement(l_SplitPane_0, {
        UseScale = true,
        ClampSize = true,
        HideBars = true,
        MinSizes = v12,
        Sizes = v13,
        OnSizesChange = function(v15)
            v14(v15);
        end,
        [v1.Tag] = "App"
    }, {
        v1.createElement(v6, {
            LayoutOrder = v10:getNextOrder()
        }),
        v1.createElement(v5, {
            LayoutOrder = v10:getNextOrder()
        })
    });
end;


local l_createStyleRule_0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".App", {}, {
    l_createStyleRule_0(">> .TopBar", {
        Size = UDim2.new(1, 0, 0, 42)
    }),
    l_createStyleRule_0(">> .Explorer", {
        Size = UDim2.new(1, 0, 1, -42)
    }),
    l_createStyleRule_0(">> .MainContents", {
        Size = UDim2.new(1, 0, 1, -42)
    })
}, {
    DefaultSizeSidebar = UDim.new(0.15, 0),
    MinimumSizeSidebar = UDim.new(0, 100),
    DefaultSizeMainView = UDim.new(0.85, 0),
    MinimumSizeMainView = UDim.new(0, 400)
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextItem_0 = v1.ContextServices.ContextItem;
local l_Signal_0 = v1.Util.Signal;
local v4 = require(l_script_FirstAncestor_0.Src.Types);
local v5 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrOutput);
local v6 = l_ContextItem_0:extend("ExplorerController");
v6.new = function(v7, v8, v9)
    local v10 = {
        _isMock = v9,
        _networking = v8,
        _pluginController = v7,
        explorerItems = {},
        _groups = {},
        _visibleGroups = {},
        _selection = {},
        _expansion = {},
        OnExplorerItemsChanged = l_Signal_0.new(),
        OnExpansionChanged = l_Signal_0.new()
    };
    v10._selection = v10._pluginController:getUser();
    v10.populateExplorerItems = function()
        local v11 = {};
        table.insert(v11, v10._pluginController:getUser());
        for _, v13 in v10._visibleGroups, nil, nil do
            table.insert(v11, {
                Name = v10._groups[v13] or tostring(v13),
                Id = v13,
                Scope = v4.Scope.Group
            });
        end;
        return v11;
    end;
    v10._explorerItems = v10.populateExplorerItems();
    v10._networking:fetchGroupsAsync(function(v14)
        for _, v16 in v14.data, nil, nil do
            v10._groups[v16.id] = v16.name;
            table.insert(v10._visibleGroups, v16.id);
        end;
        v10._explorerItems = v10.populateExplorerItems();
        v10.OnExplorerItemsChanged:Fire(v10._explorerItems);
    end, function(v17)
        if v5() then
            warn((("Error fetching groups: %*"):format(v17)));
        end;
    end);
    setmetatable(v10, v6);
    return v10;
end;
v6.mock = function(v18, v19)
    return v6.new(v18, v19, true);
end;
v6.destroy = function(_)
end;
v6.getExplorerItems = function(v21)
    return v21._explorerItems;
end;
v6.getExpansion = function(v22)
    return v22._expansion;
end;
v6.getSelection = function(v23)
    return v23._selection;
end;
v6.setSelection = function(v24, v25)
    v24._selection = v25;
    v24._pluginController.OnSelectionChanged:Fire(v25);
end;
return v6;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextItem_0 = v1.ContextServices.ContextItem;
local v3 = require(l_script_FirstAncestor_0.Packages.Dash);
local l_append_0 = v3.append;
local l_copy_0 = v3.copy;
local l_join_0 = v3.join;
local l_keys_0 = v3.keys;
local l_Signal_0 = v1.Util.Signal;
local v9 = require(l_script_FirstAncestor_0.Src.Util.getAssetInfosSlice);
local v10 = require(l_script_FirstAncestor_0.Src.Util.insertItems);
local v11 = require(l_script_FirstAncestor_0.Src.Types);
local l_AssetInfoField_0 = v11.AssetInfoField;
local v13 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrOutput);
local v14 = UDim.new(0, 150);
local v15 = l_ContextItem_0:extend("ItemsController");
v15.new = function(v16, v17, v18)
    local v19 = {
        _isMock = v18,
        _pluginController = v16,
        _networking = v17,
        _visibleProperties = {
            l_AssetInfoField_0.DisplayName,
            l_AssetInfoField_0.AssetId,
            l_AssetInfoField_0.AssetType,
            l_AssetInfoField_0.Created,
            l_AssetInfoField_0.Owner
        },
        _layout = {
            GridSize = 100,
            ViewType = v11.ViewType.List
        },
        _columnWidths = {},
        _items = {},
        _owners = {},
        _filters = {},
        _sorts = {},
        _selection = {},
        _prevClickIndex = 1,
        _usingShift = false,
        _usingCtrl = false,
        OnLayoutChanged = l_Signal_0.new(),
        OnVisiblePropertiesChanged = l_Signal_0.new(),
        OnColumnWidthsChanged = l_Signal_0.new(),
        OnItemsChanged = l_Signal_0.new(),
        OnItemSelectionChanged = l_Signal_0.new()
    };
    v19._inputConnection = v19._pluginController.OnInputChanged:Connect(function(v20)
        v19._usingShift = v20[Enum.KeyCode.LeftShift] or v20[Enum.KeyCode.RightShift];
        v19._usingCtrl = ((v20[Enum.KeyCode.LeftControl] or v20[Enum.KeyCode.RightControl]) or v20[Enum.KeyCode.LeftMeta]) or v20[Enum.KeyCode.RightMeta];
    end);
    for v21, _ in v19._visibleProperties, nil, nil do
        v19._columnWidths[v21] = v14;
    end;
    v19._fetchAssetsCallback = function(v23, v24)
        l_append_0(v19._items, v23);
        v19._owners = l_join_0(v19._owners, v24);
        v19.OnItemsChanged:Fire(v19._items);
    end;
    v19._fetchAssetsErrorCallback = function(v25, v26)
        if v13() then
            warn("Error fetching assets: " .. v25);
            if v26 then
                warn((("Status code: %*"):format(v26)));
            end;
        end;
    end;
    v19._networking:fetchAssetsLegacyAsync({
        Id = v19._pluginController:getUser().Id,
        Scope = v19._pluginController:getUser().Scope
    }, v19._fetchAssetsCallback, v19._fetchAssetsErrorCallback);
    v19._explorerSelectionConnection = v19._pluginController.OnSelectionChanged:Connect(function(v27)
        v19._items = {};
        v19._owners = {};
        v19._networking:fetchAssetsLegacyAsync({
            Id = v27.Id,
            Scope = v27.Scope
        }, v19._fetchAssetsCallback, v19._fetchAssetsErrorCallback);
    end);
    setmetatable(v19, v15);
    return v19;
end;
v15.mock = function(v28, v29)
    return v15.new(v28, v29, true);
end;
v15.destroy = function(v30)
    v30._explorerSelectionConnection:Disconnect();
    v30._explorerSelectionConnection = nil;
    v30._inputConnection:Disconnect();
    v30._inputConnection = nil;
    v30._visibleProperties = nil;
    v30._columnWidths = nil;
    v30._items = nil;
    v30._owners = nil;
    v30._filters = nil;
    v30._sorts = nil;
    v30._selection = nil;
end;
v15.getLayout = function(v31)
    return v31._layout;
end;
v15.setLayout = function(v32, v33)
    v32._layout = v33;
    v32.OnLayoutChanged:Fire(v32._layout);
end;
v15.getColumnWidths = function(v34)
    return v34._columnWidths;
end;
v15.setColumnWidths = function(v35, v36)
    v35._columnWidths = v36;
    v35.OnColumnWidthsChanged:Fire(v35._columnWidths);
end;
v15.getVisibleProperties = function(v37)
    return v37._visibleProperties;
end;
v15.setVisibleProperties = function(v38, v39)
    v38._visibleProperties = v39;
    v38.OnVisiblePropertiesChanged:Fire(v38._visibleProperties);
end;
v15.getItems = function(v40)
    return v40._items;
end;
v15.getOwners = function(v41)
    local v42 = l_keys_0(v41._owners);
    table.sort(v42);
    return v42;
end;
v15.getFilters = function(v43)
    return v43._filters;
end;
v15.addFilter = function(v44, v45, v46)
    v44._filters[v45] = v46;
    v44.OnItemsChanged:Fire(v44._items);
end;
v15.clearFilters = function(v47)
    v47._filters = {};
    v47.OnItemsChanged:Fire(v47._items);
end;
v15.getSorts = function(v48)
    return v48._sorts;
end;
v15.setSorts = function(v49, v50)
    v49._sorts = v50;
    v49.OnItemsChanged:Fire(v49._items);
end;
v15.addSort = function(v51, v52)
    local v53 = false;
    for v54, v55 in v51._sorts, nil, nil do
        if v55.Key == v52 then
            v53 = not v55.IsAscending;
            table.remove(v51._sorts, v54);
            break;
        end;
    end;
    table.insert(v51._sorts, 1, {
        Key = v52,
        IsAscending = v53
    });
    v51.OnItemsChanged:Fire(v51._items);
end;
v15.getSelection = function(v56)
    return v56._selection;
end;
v15.setSelection = function(v57, v58)
    v57._selection = {};
    for _, v60 in v58, nil, nil do
        v57._selection[v60] = true;
    end;
    v57.OnItemSelectionChanged:Fire(v57._selection);
end;
v15.modifySelection = function(v61, v62)
    for _, v64 in v62, nil, nil do
        if not v61._selection[v64] then
            v61._selection[v64] = true;
        else
            v61._selection[v64] = nil;
        end;
    end;
    v61.OnItemSelectionChanged:Fire(l_copy_0(v61._selection));
end;
v15.getPrevClickIndex = function(v65)
    return v65._prevClickIndex;
end;
v15.handleClick = function(v66, v67, v68, v69, v70)
    local v71 = v9(v68, v66._prevClickIndex, v69);
    if not v70 then
        if not v66._usingCtrl then
            if not v66._usingShift then
                v66:setSelection({
                    v67
                });
                v66._prevClickIndex = v69;
                return ;
            else
                v66:setSelection(v71);
                return ;
            end;
        else
            v66:modifySelection({
                v67
            });
            v66._prevClickIndex = v69;
            return ;
        end;
    else
        v10(v66._selection);
        return ;
    end;
end;
return v15;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextItem_0 = v1.ContextServices.ContextItem;
local l_Signal_0 = v1.Util.Signal;
local v4 = require(l_script_FirstAncestor_0.Src.Types);
local l_StudioService_0 = game:GetService("StudioService");
local v6 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrOutput);
local v7 = l_ContextItem_0:extend("PluginController");
v7.new = function(v8, v9, v10, v11)
    local v12 = {
        _isMock = v11,
        _networking = v9,
        _plugin = v8,
        _pressedKeys = {},
        _user = {
            Id = l_StudioService_0:GetUserId(),
            Name = v10:getText("Plugin", "PlaceholderUsername"),
            Scope = v4.Scope.User
        },
        OnUsernameFetched = l_Signal_0.new(),
        OnSelectionChanged = l_Signal_0.new(),
        OnInputChanged = l_Signal_0.new()
    };
    v12._networking:fetchUsernameAsync(function(v13, v14)
        if not v14 then
            v12._user.Name = v13;
            v12.OnUsernameFetched:Fire(v13);
            return ;
        else
            if v6() then
                warn(v10:getText("PluginErrors", "ErrorFetchUsername"));
            end;
            return ;
        end;
    end);
    setmetatable(v12, v7);
    return v12;
end;
v7.mock = function(v15, v16, v17)
    return v7.new(v15, v16, v17, true);
end;
v7.destroy = function(_)
end;
v7.getPlugin = function(v19)
    return v19._plugin;
end;
v7.addKeyPress = function(v20, v21)
    v20._pressedKeys[v21] = true;
    v20.OnInputChanged:Fire(v20._pressedKeys);
end;
v7.removeKeyPress = function(v22, v23)
    v22._pressedKeys[v23] = nil;
    v22.OnInputChanged:Fire(v22._pressedKeys);
end;
v7.getUser = function(v24)
    return v24._user;
end;
return v7;


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


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


game:DefineFastInt("AmrAssetFetchCount", 10000);
return function()
    return game:GetFastInt("AmrAssetFetchCount");
end;


game:DefineFastInt("DebugAmrMockCount", 100);
return function()
    return game:GetFastInt("DebugAmrMockCount");
end;


local v0 = require(script:FindFirstAncestor("AssetManager").Packages.React);
local l_useState_0 = v0.useState;
local l_useEffect_0 = v0.useEffect;
return function(v3)
    local v4, v5 = l_useState_0(v3:getVisibleProperties());
    local v6, v7 = l_useState_0(v3:getColumnWidths());
    l_useEffect_0(function()
        local v8 = v3.OnVisiblePropertiesChanged:Connect(v5);
        return function()
            v8:Disconnect();
        end;
    end, {});
    l_useEffect_0(function()
        local v9 = v3.OnColumnWidthsChanged:Connect(v7);
        return function()
            v9:Disconnect();
        end;
    end, {});
    return v4, v6;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local l_useState_0 = v1.useState;
local l_useEffect_0 = v1.useEffect;
return function(v5, v6)
    local _, v8 = l_useState_0(v5:getUser().Name);
    local v9, v10 = l_useState_0(v6:getSelection());
    local v11, _ = l_useState_0(v6:getExpansion());
    local v13, v14 = l_useState_0(v6:getExplorerItems());
    l_useEffect_0(function()
        local v15 = v5.OnUsernameFetched:Connect(v8);
        return function()
            v15:Disconnect();
        end;
    end, {});
    l_useEffect_0(function()
        local v16 = v6.OnExplorerItemsChanged:Connect(v14);
        return function()
            v16:Disconnect();
        end;
    end, {});
    l_useEffect_0(function()
        local v17 = v5.OnSelectionChanged:Connect(v10);
        return function()
            v17:Disconnect();
        end;
    end, {});
    return {
        Selection = v9,
        Expansion = v11,
        Items = v13
    };
end;


local v0 = require(script:FindFirstAncestor("AssetManager").Packages.React);
local l_useState_0 = v0.useState;
local l_useEffect_0 = v0.useEffect;
return function(v3)
    local v4, v5 = l_useState_0(v3:getSelection());
    l_useEffect_0(function()
        local v6 = v3.OnItemSelectionChanged:Connect(v5);
        return function()
            v6:Disconnect();
        end;
    end, {});
    return v4;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Dash);
local _ = v1.keys;
local l_copy_0 = v1.copy;
local v4 = require(l_script_FirstAncestor_0.Packages.React);
local l_useState_0 = v4.useState;
local l_useEffect_0 = v4.useEffect;
local v7 = require(l_script_FirstAncestor_0.Src.Util.compareInfoField);
local v8 = require(l_script_FirstAncestor_0.Src.Util.applyInfoFieldFilter);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local function v14(v10, v11)
    for v12, v13 in v11, nil, nil do
        assert(v8[v12], (("No filter function for field %*"):format(v12)));
        if not v8[v12](v10, v13) then
            return false;
        end;
    end;
    return true;
end;
return function(v15)
    local v16, v17 = l_useState_0((v15:getItems()));
    local function v23(v18)
        local v19 = v15:getFilters();
        if next(v19, nil) == nil then
            return l_copy_0(v18);
        else
            local v20 = {};
            for _, v22 in v18, nil, nil do
                if v14(v22, v19) then
                    table.insert(v20, v22);
                end;
            end;
            return v20;
        end;
    end;
    local _ = function(v24)
        local v25 = v15:getSorts();
        if #v25 == 0 then
            return ;
        else
            table.sort(v24, function(v26, v27)
                for _, v29 in v25, nil, nil do
                    local v30 = v7[v29.Key](v26, v27, v29.IsAscending);
                    if v30 ~= 0 then
                        return v30 == 1;
                    end;
                end;
                return false;
            end);
            return ;
        end;
    end;
    l_useEffect_0(function()
        local v40 = v15.OnItemsChanged:Connect(function(v32)
            local v33 = v23(v32);
            local v34 = v15:getSorts();
            if not (#v34 == 0) then
                table.sort(v33, function(v35, v36)
                    for _, v38 in v34, nil, nil do
                        local v39 = v7[v38.Key](v35, v36, v38.IsAscending);
                        if v39 ~= 0 then
                            return v39 == 1;
                        end;
                    end;
                    return false;
                end);
            end;
            v17(v33);
        end);
        return function()
            v40:Disconnect();
        end;
    end, {});
    return v16;
end;


local v0 = require(script:FindFirstAncestor("AssetManager").Packages.React);
local l_useState_0 = v0.useState;
local l_useEffect_0 = v0.useEffect;
return function(v3)
    local v4, v5 = l_useState_0(v3:getLayout());
    l_useEffect_0(function()
        local v6 = v3.OnLayoutChanged:Connect(v5);
        return function()
            v6:Disconnect();
        end;
    end, {});
    return v4;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
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_KeyboardListener_0 = l_UI_0.KeyboardListener;
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 v12 = 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 v17 = require(l_script_FirstAncestor_0.Src.Components.App);
local v18 = require(l_script_FirstAncestor_0.Src.Controllers.ExplorerController);
local v19 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v20 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v21 = require(l_script_FirstAncestor_0.Src.Networking);
local v22 = v1.PureComponent:extend("MainPlugin");
v22.init = function(v23, v24)
    v23.state = {
        enabled = false
    };
    v23.toggleEnabled = function()
        v23:setState(function(v25)
            return {
                enabled = not v25.enabled
            };
        end);
    end;
    v23.onClose = function()
        v23:setState({
            enabled = false
        });
    end;
    v23.onRestore = function(v26)
        v23:setState({
            enabled = v26
        });
    end;
    v23.onWidgetEnabledChanged = function(v27)
        v23:setState({
            enabled = v27.Enabled
        });
    end;
    v23.onDockWidgetCreated = function()
        v23.props.PluginLoaderContext.mainButtonClickedSignal:Connect(v23.toggleEnabled);
    end;
    v23.store = v2.Store.new(v12, nil, {
        v2.thunkMiddleware
    }, nil);
    v23.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "AssetManager"
    });
    v23.analytics = l_ContextServices_0.Analytics.new(function()
        return {};
    end, {});
    v23.DEPRECATED_stylizer = l_StudioTheme_0.new();
    v23.design = l_registerPluginStyles_0(v24.Plugin);
    v23.networking = v21.new();
    v23.pluginController = v20.new(v24.Plugin, v23.networking, v23.localization);
    v23.explorerController = v18.new(v23.pluginController, v23.networking);
    v23.itemsController = v19.new(v23.pluginController, v23.networking);
end;
v22.didUpdate = function(v28)
    v28.props.PluginLoaderContext.mainButton:SetActive(v28.state.enabled);
end;
v22.willUnmount = function(v29)
    v29.pluginController:destroy();
    v29.explorerController:destroy();
    v29.itemsController:destroy();
end;
v22.render = function(v30)
    local l_props_0 = v30.props;
    local l_state_0 = v30.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(v30.store),
        l_Mouse_0.new(l_Plugin_1:getMouse()),
        v30.DEPRECATED_stylizer,
        v30.localization,
        v30.analytics,
        v30.pluginController,
        v30.explorerController,
        v30.itemsController,
        v30.networking
    }, {
        MainWidget = v1.createElement(l_DockWidget_0, {
            Id = "AssetManager",
            Enabled = l_state_0.enabled,
            Title = v30.localization:getText("Plugin", "Name"),
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            InitialDockState = Enum.InitialDockState.Bottom,
            Size = Vector2.new(640, 480),
            MinSize = Vector2.new(250, 200),
            OnClose = v30.onClose,
            Widget = l_props_0.PluginLoaderContext.mainDockWidget,
            OnWidgetCreated = v30.onDockWidgetCreated,
            [v1.Change.Enabled] = v30.onWidgetEnabledChanged
        }, {
            Wrapper = v1.createElement(l_Pane_0, {
                [v1.Tag] = "X-Fill X-Column"
            }, {
                App = v1.createElement(v17),
                KeyboardListener = v1.createElement(l_KeyboardListener_0, {
                    OnKeyPressed = function(v34)
                        v30.pluginController:addKeyPress(v34.KeyCode);
                    end,
                    OnKeyReleased = function(v35)
                        v30.pluginController:removeKeyPress(v35.KeyCode);
                    end
                })
            }),
            StyleLink = v1.createElement("StyleLink", {
                StyleSheet = v30.design
            })
        })
    });
end;
return v22;


local v0 = require(script:FindFirstAncestor("AssetManager").Src.Types);
local v7 = {
    generate = function(v1)
        math.randomseed(tick());
        local v2 = {};
        for v3 = 1, v1 do
            local v4 = math.random(100000, 100000000);
            local v5 = math.random(1, 5);
            local v6 = v0.getEnumAsList(v0.AssetType)[math.random(1, 5)];
            table.insert(v2, {
                AssetId = v4,
                AssetType = v6,
                DisplayName = ("Test %*"):format(v6),
                VersionNumber = math.random(1, 10),
                Created = DateTime.now(),
                Modified = DateTime.now(),
                ModerationStatus = v0.getEnumAsList(v0.ModerationStatus)[math.random(1, 3)],
                Owner = {
                    Id = v5,
                    Name = ("Owner %*"):format(v5),
                    Scope = if v3 == 1 then v0.Scope.User else v0.Scope.Group
                }
            });
        end;
        return v2;
    end
};
local v8 = {
    {
        AssetId = 1234567890,
        AssetType = v0.AssetType.Model,
        DisplayName = "Test Model",
        Description = "This is a test model",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567890,
            Name = "TestUser",
            Scope = v0.Scope.User
        }
    },
    {
        AssetId = 1234567891,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Test Mesh",
        Description = "This is a test mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567892,
            Name = "1234567892",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567892,
        AssetType = v0.AssetType.Decal,
        DisplayName = "Test Decal",
        Description = "This is a test decal",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567893,
            Name = "1234567893",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567893,
        AssetType = v0.AssetType.Audio,
        DisplayName = "Test Audio",
        Description = "This is a test audio",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567894,
            Name = "1234567894",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567894,
        AssetType = v0.AssetType.Video,
        DisplayName = "Test Video",
        Description = "This is a test video",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567895,
            Name = "1234567895",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567895,
        AssetType = v0.AssetType.Image,
        DisplayName = "Test Image",
        Description = "This is a test image",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567896,
            Name = "1234567896",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567896,
        AssetType = v0.AssetType.Video,
        DisplayName = "Test Video",
        Description = "This is a test video",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567897,
            Name = "1234567897",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567897,
        AssetType = v0.AssetType.Animation,
        DisplayName = "Test Animation",
        Description = "This is a test animation",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567898,
            Name = "1234567898",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567898,
        AssetType = v0.AssetType.Model,
        DisplayName = "Mock Model",
        Description = "This is a mock model",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567899,
            Name = "1234567899",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567899,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Mock Mesh",
        Description = "This is a mock mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567900,
            Name = "1234567900",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567900,
        AssetType = v0.AssetType.Decal,
        DisplayName = "Mock Decal",
        Description = "This is a mock decal",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567901,
            Name = "1234567901",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567901,
        AssetType = v0.AssetType.Audio,
        DisplayName = "Mock Audio",
        Description = "This is a mock audio",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567902,
            Name = "1234567902",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567902,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Mock Mesh",
        Description = "This is a mock mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567903,
            Name = "1234567903",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567903,
        AssetType = v0.AssetType.Image,
        DisplayName = "Mock Image",
        Description = "This is a mock image",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567904,
            Name = "1234567904",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567904,
        AssetType = v0.AssetType.Video,
        DisplayName = "Mock Video",
        Description = "This is a mock video",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567905,
            Name = "1234567905",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1234567905,
        AssetType = v0.AssetType.Animation,
        DisplayName = "Mock Animation",
        Description = "This is a mock animation",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 1234567906,
            Name = "1234567906",
            Scope = v0.Scope.Group
        }
    }
};
local v9 = {
    {
        AssetId = 1234,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Mock Mesh",
        Description = "This is a mock mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1235,
        AssetType = v0.AssetType.Decal,
        DisplayName = "Mock Decal",
        Description = "This is a mock decal",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1236,
        AssetType = v0.AssetType.Audio,
        DisplayName = "Mock Audio",
        Description = "This is a mock audio",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1237,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Mock Mesh",
        Description = "This is a mock mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1238,
        AssetType = v0.AssetType.Image,
        DisplayName = "Mock Image",
        Description = "This is a mock image",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 1239,
        AssetType = v0.AssetType.Video,
        DisplayName = "Mock Video",
        Description = "This is a mock video",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 12310,
        AssetType = v0.AssetType.Animation,
        DisplayName = "Mock Animation",
        Description = "This is a mock animation",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 987654321,
            Name = "Group1",
            Scope = v0.Scope.Group
        }
    }
};
local v10 = {
    {
        AssetId = 8976,
        AssetType = v0.AssetType.Mesh,
        DisplayName = "Mock Mesh",
        Description = "This is a mock mesh",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 87654321,
            Name = "Group with a really long name",
            Scope = v0.Scope.Group
        }
    },
    {
        AssetId = 7890,
        AssetType = v0.AssetType.Decal,
        DisplayName = "Mock Decal",
        Description = "This is a mock decal",
        VersionNumber = 1,
        Created = DateTime.now(),
        Modified = DateTime.now(),
        ModerationStatus = v0.ModerationStatus.Approved,
        Owner = {
            Id = 87654321,
            Name = "Group with a really long name",
            Scope = v0.Scope.Group
        }
    }
};
v7.UserId = 100000;
v7.UserName = "TestUser";
v7.GroupId1 = 987654321;
v7.GroupId2 = 87654321;
v7.GroupId3 = 7654321;
v7.Assets = {};
v7.Assets[v7.UserId] = v8;
v7.Assets[v7.GroupId1] = v9;
v7.Assets[v7.GroupId2] = v10;
v7.Groups = {
    data = {
        {
            Id = v7.GroupId1,
            Name = "Group1",
            Scope = v0.Scope.Group
        },
        {
            Id = v7.GroupId2,
            Name = "Group with a really long name",
            Scope = v0.Scope.Group
        },
        {
            Id = v7.GroupId3,
            Name = "NoAssets :(",
            Scope = v0.Scope.Group
        }
    }
};
return v7;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Src.Util.Images);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v3 = require(script.Parent.MockData);
local v4 = require(l_script_FirstAncestor_0.Src.Flags.getFIntDebugAmrMockCount);
return {
    fetchUsernameAsync = function(v5)
        task.spawn(function()
            v5("TestUser", true);
        end);
    end,
    fetchGroupsAsync = function(v6, v7)
        task.spawn(function()
            v6({
                data = {
                    {
                        id = 1,
                        name = "TestGroup1"
                    },
                    {
                        id = 2,
                        name = "TestGroup2"
                    }
                }
            });
            v7("Test fetchGroupsAsync error");
        end);
    end,
    fetchAssetsLegacyAsync = function(_, v9, v10)
        task.spawn(function()
            local v11 = v3.generate(v4());
            local v12 = {};
            for _, v14 in v11, nil, nil do
                v12[v14.Owner.Name] = v14.Owner;
            end;
            v9(v11, v12);
            v10("Test fetchAssets error message");
        end);
    end,
    getThumbnailUriForScope = function()
        return v1.PLACEHOLDER;
    end,
    getThumbnailForScopeAsync = function(_, v16)
        v16(v1.PLACEHOLDER);
    end,
    getThumbnailForItemAsync = function(_, v18)
        v18(v1.PLACEHOLDER);
    end
};


local v0 = {
    _FrameworkAPI = require(script:FindFirstAncestor("AssetManager").Packages.Framework).RobloxAPI.new()
};
v0.CreateFetchGroupsRequest = v0._FrameworkAPI.Develop.V1.User.Groups.canManage;
v0.CreateFetchAssetsForUserRequest = v0._FrameworkAPI.APIS.ToolboxService.V1.Inventory.user;
v0.CreateFetchAssetsForGroupRequest = v0._FrameworkAPI.APIS.ToolboxService.V1.Inventory.group;
v0.CreateFetchAssetInfosRequest = v0._FrameworkAPI.APIS.ToolboxService.V1.Items.details;
return v0;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextItem_0 = v1.ContextServices.ContextItem;
local l_Signal_0 = v1.Util.Signal;
local v4 = require(script.NetworkingImpl);
local v5 = require(script.NetworkingMock);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v7 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrMockContent);
local v8 = l_ContextItem_0:extend("Networking");
v8.new = function(v9)
    local v10 = {
        _isMock = v9,
        impl = if not v9 then v4 else v5,
        OnFetchFinished = l_Signal_0.new(),
        OnFetchProgressChanged = l_Signal_0.new()
    };
    setmetatable(v10, v8);
    return v10;
end;
v8.mock = function()
    return v8.new(true);
end;
v8.destroy = function(_)
end;
v8.fetchUsernameAsync = function(v12, v13)
    v12.impl.fetchUsernameAsync(v13);
end;
v8.fetchGroupsAsync = function(v14, v15, v16)
    v14.impl.fetchGroupsAsync(v15, v16);
end;
v8.fetchAssetsLegacyAsync = function(v17, v18, v19, v20)
    v18.OnFetchFinished = v17.OnFetchFinished;
    v18.OnFetchProgressChanged = v17.OnFetchProgressChanged;
    if not v7() then
        v17.impl.fetchAssetsLegacyAsync(v18, v19, v20);
        return ;
    else
        v5.fetchAssetsLegacyAsync(v18, v19, v20);
        return ;
    end;
end;
v8.getThumbnailUriForScope = function(v21, v22)
    return v21.impl.getThumbnailUriForScope(v22);
end;
v8.getThumbnailForScopeAsync = function(v23, v24, v25)
    v23.impl.getThumbnailForScopeAsync(v24, v25);
end;
v8.getThumbnailForItemAsync = function(v26, v27, v28)
    if not v7() then
        v26.impl.getThumbnailForItemAsync(v27, v28);
        return ;
    else
        v5.getThumbnailForItemAsync(v27, v28);
        return ;
    end;
end;
return v8;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local l_join_0 = require(l_script_FirstAncestor_0.Packages.Dash).join;
return (v1.createReducer({
    ExampleCount = 0,
    ExampleString = ""
}, {
    [require(l_script_FirstAncestor_0.Src.Actions.ExampleIncrementCount).name] = function(v3, v4)
        return l_join_0(v3, {
            ExampleCount = v3.ExampleCount + 1,
            ExampleString = v4.something
        });
    end
}));


return (require(script:FindFirstAncestor("AssetManager").Packages.Rodux).combineReducers({
    ExampleReducer = require(script.Parent.ExampleReducer)
}));


return {
    getEnumAsList = function(v0)
        local v1 = {};
        for _, v3 in v0, nil, nil do
            table.insert(v1, v3);
        end;
        return v1;
    end,
    Scope = {
        User = "User",
        Group = "Group"
    },
    AssetType = {
        Model = "Model",
        Mesh = "Mesh",
        Image = "Image",
        Decal = "Decal",
        Audio = "Audio",
        Video = "Video",
        Animation = "Animation"
    },
    ModerationStatus = {
        Reviewing = "MODERATION_STATE_REVIEWING",
        Rejected = "MODERATION_STATE_REJECTED",
        Approved = "MODERATION_STATE_APPROVED"
    },
    AssetInfoField = {
        AssetId = "AssetId",
        AssetType = "AssetType",
        DisplayName = "DisplayName",
        VersionNumber = "VersionNumber",
        Created = "Created",
        Modified = "Modified",
        ModerationStatus = "ModerationStatus",
        Owner = "Owner"
    },
    ViewType = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Util.enumerate("ViewType", {
        List = 1,
        Grid = 2,
        Unsupported = 3
    })
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
return (require(l_script_FirstAncestor_0.Packages.Dash).join({}, (require(l_script_FirstAncestor_0.Src.Types.Enums))));


local l_ContentProvider_0 = game:GetService("ContentProvider");
local l_GuiService_0 = game:GetService("GuiService");
local l_HttpService_0 = game:GetService("HttpService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_StudioService_0 = game:GetService("StudioService");
return {
    openItemInBrowser = function(v5)
        l_GuiService_0:OpenBrowserWindow((("%*library/%*/asset"):format(l_ContentProvider_0.BaseUrl, (l_HttpService_0:urlEncode(v5)))));
    end,
    copyAssetId = function(v6)
        l_StudioService_0:CopyToClipboard(v6);
    end,
    openAssetConfig = function(v7)
        l_MemStorageService_0:Fire("OpenAssetConfig", v7);
    end
};


local v0 = require(script:FindFirstAncestor("AssetManager").Packages.Framework).Style.ThemeSwitcher.getThemeName();
return {
    CLEAR_ICON = ("rbxasset://studio_svg_textures/Shared/InsertableObjects/%*/Standard/Cleanup.png"):format(v0),
    ICON_USER_DEFAULT = ("rbxasset://studio_svg_textures/Shared/Utility/%*/Standard/User.png"):format(v0),
    ICON_GROUP_DEFAULT = ("rbxasset://studio_svg_textures/Shared/Utility/%*/Standard/Users.png"):format(v0),
    ICON_USER_LARGE_DEFAULT = ("rbxasset://studio_svg_textures/Shared/Utility/%*/Large/User.png"):format(v0),
    ICON_GROUP_LARGE_DEFAULT = ("rbxasset://studio_svg_textures/Shared/Utility/%*/Large/Users.png"):format(v0),
    PLACEHOLDER_ASSET = ("rbxasset://studio_svg_textures/Shared/Placeholder/%*/Standard/Placeholder.png"):format(v0),
    PLACEHOLDER = ("rbxasset://studio_svg_textures/Shared/Placeholder/%*/Standard/Placeholder.png"):format(v0)
};


local v0 = require(script:FindFirstAncestor("AssetManager").Src.Types);
local l_AssetInfoField_0 = v0.AssetInfoField;
local v2 = {};
local function _(v3, v4, v5)
    return v5[v3[v4]];
end;
v2[l_AssetInfoField_0.Owner] = function(v7, v8)
    return v8[v7.Owner.Name];
end;
for _, v10 in v0.getEnumAsList(l_AssetInfoField_0) do
    if not v2[v10] then
        v2[v10] = function(v11, v12)
            return v12[v11[v10]];
        end;
    end;
end;
return v2;


local v0 = require(script:FindFirstAncestor("AssetManager").Src.Types);
local l_AssetInfoField_0 = v0.AssetInfoField;
local v2 = {};
local function _(v3, v4, v5)
    if v3 == v4 then
        return 0;
    else
        local v6 = not v5 and -1 or 1;
        if v3 < v4 then
            return v6;
        else
            return -v6;
        end;
    end;
end;
local function _(v8, v9, v10, v11)
    local v12 = v8[v11];
    local v13 = v9[v11];
    if v12 == v13 then
        return 0;
    else
        local v14 = not v10 and -1 or 1;
        if v12 < v13 then
            return v14;
        else
            return -v14;
        end;
    end;
end;
v2[l_AssetInfoField_0.Created] = function(v16, v17, v18)
    local l_UnixTimestamp_0 = v16.Created.UnixTimestamp;
    local l_UnixTimestamp_1 = v17.Created.UnixTimestamp;
    if l_UnixTimestamp_0 == l_UnixTimestamp_1 then
        return 0;
    else
        local v21 = not v18 and -1 or 1;
        if l_UnixTimestamp_0 < l_UnixTimestamp_1 then
            return v21;
        else
            return -v21;
        end;
    end;
end;
v2[l_AssetInfoField_0.Modified] = function(v22, v23, v24)
    local l_UnixTimestamp_2 = v22.Modified.UnixTimestamp;
    local l_UnixTimestamp_3 = v23.Modified.UnixTimestamp;
    if l_UnixTimestamp_2 == l_UnixTimestamp_3 then
        return 0;
    else
        local v27 = not v24 and -1 or 1;
        if l_UnixTimestamp_2 < l_UnixTimestamp_3 then
            return v27;
        else
            return -v27;
        end;
    end;
end;
v2[l_AssetInfoField_0.Owner] = function(v28, v29, v30)
    local l_Name_0 = v28.Owner.Name;
    local l_Name_1 = v29.Owner.Name;
    if l_Name_0 == l_Name_1 then
        return 0;
    else
        local v33 = not v30 and -1 or 1;
        if l_Name_0 < l_Name_1 then
            return v33;
        else
            return -v33;
        end;
    end;
end;
for _, v35 in v0.getEnumAsList(l_AssetInfoField_0) do
    if not v2[v35] then
        v2[v35] = function(v36, v37, v38)
            local l_v35_0 = v35;
            local v40 = v36[l_v35_0];
            local v41 = v37[l_v35_0];
            if v40 == v41 then
                return 0;
            else
                local v42 = not v38 and -1 or 1;
                if v40 < v41 then
                    return v42;
                else
                    return -v42;
                end;
            end;
        end;
    end;
end;
return v2;


local _ = require(script:FindFirstAncestor("AssetManager").Src.Types);
return function(v1, v2, v3)
    local v4 = math.min(v2, v3);
    local v5 = math.max(v2, v3);
    local v6 = false;
    if v4 >= 1 then
        v6 = v4 <= #v1;
    end;
    assert(v6, "startIndex must be in range of items");
    v6 = false;
    if v5 >= 1 then
        v6 = v5 <= #v1;
    end;
    assert(v6, "endIndex must be in range of items");
    local v7 = {};
    for v8 = v4, v5 do
        table.insert(v7, v1[v8].AssetId);
    end;
    return v7;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local l_ChangeHistoryService_0 = game:GetService("ChangeHistoryService");
local l_InsertService_0 = game:GetService("InsertService");
local l_Selection_0 = game:GetService("Selection");
local v4 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagDebugAmrOutput);
local v5 = require(l_script_FirstAncestor_0.Src.Flags.getFFlagZoomToExtentsApi);
local function _(v6, v7)
    local l_ViewportSize_0 = v7.ViewportSize;
    return (v6.Magnitude / 2) / math.sin((math.atan(math.tan((math.rad(v7.FieldOfView / 2))) * math.min(1, l_ViewportSize_0.X / l_ViewportSize_0.Y))));
end;
local function v21(v10)
    local v11 = Vector3.new(math.huge, math.huge, math.huge);
    local v12 = Vector3.new(-math.huge, -math.huge, -math.huge);
    local function v18(v13)
        local v14 = if not v13:IsA("Model") then v13.CFrame else v13:GetModelCFrame();
        local v15 = if not v13:IsA("Model") then v13.Size else v13:GetExtentsSize() * 0.5;
        local v16 = v14.Position + Vector3.new(-v15.X, -v15.Y, -v15.Z);
        local v17 = v14.Position + Vector3.new(v15.X, v15.Y, v15.Z);
        v11 = Vector3.new(math.min(v11.X, v16.X), math.min(v11.Y, v16.Y), (math.min(v11.Z, v16.Z)));
        v12 = Vector3.new(math.max(v12.X, v17.X), math.max(v12.Y, v17.Y), (math.max(v12.Z, v17.Z)));
    end;
    for _, v20 in v10, nil, nil do
        if not (not v20:IsA("Model") and not v20:IsA("BasePart")) then
            v18(v20);
        end;
    end;
    return CFrame.new((v11 + v12) * 0.5), v12 - v11;
end;
local function v28(v22, v23)
    local v24, v25 = v21(v23);
    if not v5() then
        v22.CameraType = Enum.CameraType.Fixed;
        local l_ViewportSize_1 = v22.ViewportSize;
        local v27 = (v25.Magnitude / 2) / math.sin((math.atan(math.tan((math.rad(v22.FieldOfView / 2))) * math.min(1, l_ViewportSize_1.X / l_ViewportSize_1.Y))));
        l_ViewportSize_1 = v22.CFrame;
        v22.CFrame = ((l_ViewportSize_1 - l_ViewportSize_1.p) + v24.p) - l_ViewportSize_1.LookVector * v27;
        v22.Focus = v24;
        return ;
    else
        v22:ZoomToExtents(v24, v25);
        return ;
    end;
end;
return function(v29)
    local v30 = {};
    for v31, _ in v29, nil, nil do
        local l_status_0, l_result_0 = pcall(l_InsertService_0.LoadAsset, l_InsertService_0, v31);
        if not l_status_0 or not l_result_0 then
            if v4() then
                warn("Asset failed to load");
            end;
        else
            table.insert(v30, l_result_0);
            l_result_0.Parent = game.Workspace;
        end;
    end;
    l_Selection_0:Set(v30);
    l_ChangeHistoryService_0:SetWaypoint("Insert asset");
    v28(game.Workspace.CurrentCamera, v30);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_TestHelpers_0 = v2.TestHelpers;
local l_ContextServices_0 = v2.ContextServices;
local l_MockPlugin_0 = l_TestHelpers_0.Instances.MockPlugin;
local v6 = require(l_script_FirstAncestor_0.Src.Reducers.MainReducer);
local l_StudioTheme_0 = v2.Style.Themes.StudioTheme;
local v8 = require(l_script_FirstAncestor_0.Src.Controllers.ExplorerController);
local v9 = require(l_script_FirstAncestor_0.Src.Controllers.ItemsController);
local v10 = require(l_script_FirstAncestor_0.Src.Controllers.PluginController);
local v11 = require(l_script_FirstAncestor_0.Src.Networking);
local v12 = l_MockPlugin_0.new("AssetManager");
local v13 = l_ContextServices_0.Localization.mock();
local v14 = v11.mock();
local v15 = v10.mock(v12, v14, v13);
local v16 = {
    l_ContextServices_0.Analytics.mock(),
    v13,
    l_ContextServices_0.Store.new(v1.Store.new(v6, nil, nil, nil)),
    l_StudioTheme_0.mock(),
    v15,
    v8.mock(v15, v14),
    v9.mock(v15, v14),
    v14
};
return function(v17)
    assert(type(v17) == "table", "Expected story to be a table");
    return l_TestHelpers_0.provideMockContext(v16, v17);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AssetManager");
local l_showContextMenu_0 = require(l_script_FirstAncestor_0.Packages.Framework).UI.showContextMenu;
local v2 = require(l_script_FirstAncestor_0.Src.Util.ContextMenuUtils);
return function(v3, v4, v5)
    l_showContextMenu_0(v5, {
        {
            Text = v4:getText("ContextMenu", "CopyAssetId"),
            OnItemClicked = function()
                v2.copyAssetId(v3);
            end
        },
        {
            Text = v4:getText("ContextMenu", "ViewInBrowser"),
            OnItemClicked = function()
                v2.openItemInBrowser(v3);
            end
        },
        {
            Text = v4:getText("ContextMenu", "EditAsset"),
            OnItemClicked = function()
                v2.openAssetConfig(v3);
            end
        }
    });
end;


return {
    testMatch = {
        "**/*.spec",
        "**/*.test"
    },
    testTimeout = 10000
};


if plugin then
    local l_script_FirstAncestor_0 = script:FindFirstAncestor("AttenuationCurveEditor");
    require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
    local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
    v1.launch("AttenuationCurveEditor", l_script_FirstAncestor_0.Src);
    if not v1.isCli() then
        if game:GetFastFlag("EnableDistanceAttenuationCurveEditorLua") then
            local v2 = require(l_script_FirstAncestor_0.Bin.Common.pluginType);
            local _ = require(l_script_FirstAncestor_0.Src.Types);
            local v4 = require(l_script_FirstAncestor_0.Src.Util.DistanceAttenuationUtil);
            local v5 = require(l_script_FirstAncestor_0.Src.Util.SerializationUtil);
            local v6 = {};
            local v7 = 0;
            local function v14(v8)
                for v9, v10 in v8, nil, nil do
                    if not v10:IsA("AudioEmitter") then
                        v8[v9] = nil;
                    end;
                end;
                if #v8 == 0 then
                    return ;
                else
                    v6 = v8;
                    local v11 = v8[1];
                    local v12 = v4.getDistanceAttenuation(v11);
                    local v13 = ("%* \"%*\""):format(v11.ClassName, v11.Name);
                    if #v8 > 1 then
                        v13 = ("%* (%* items)"):format(v11.ClassName, #v8);
                    end;
                    plugin:Invoke("OnOpen", v5.stringifyCurveTable(v12), v7, v13);
                    v7 = v7 + 1;
                    return ;
                end;
            end;
            plugin:OnInvoke("OnEdit", function(v15)
                local v16 = v5.destringifyCurveTable(v15);
                for _, v18 in v6, nil, nil do
                    if not (not v18 or not v18:IsA("AudioEmitter")) then
                        v4.setDistanceAttenuation(v18, v16);
                    end;
                end;
            end);
            plugin:OnInvoke("OnStopEditing", function()
                v6 = {};
            end);
            local v19 = nil;
            v19 = if not game:GetFastFlag("MoveAttenuationCurveEditorSignal") then game:GetService("GuiService").OpenAttenuationCurveEditor:Connect(v14) else game:GetService("SoundService").OpenAttenuationCurveEditorSignal:Connect(v14);
            if v2.get() ~= v2.asset then
                return ;
            else
                require(l_script_FirstAncestor_0.Bin.Common.setup)(plugin, (require(l_script_FirstAncestor_0.Bin.Common.setupMain)));
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


game:DefineFastFlag("EnableDistanceAttenuationCurveEditorLua", false);
game:DefineFastFlag("MoveAttenuationCurveEditorSignal", false);
game:DefineFastFlag("LoadAttenuationCurveEditorInAssetDM", false);
game:DefineFastInt("AudioEmitterDistanceAttenuationMaxPoints", 400);
return nil;


return {
    asset = "Asset",
    standalone = "Standalone",
    get = function()
        if not game:GetFastFlag("LoadAttenuationCurveEditorInAssetDM") then
            return "Standalone";
        else
            return "Asset";
        end;
    end
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AttenuationCurveEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.PluginLoader.PluginLoaderBuilder);
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 v4 = require(l_script_FirstAncestor_0.Bin.Common.pluginType);
return function(v5, v6)
    v5.Name = l_script_FirstAncestor_0.Name;
    local v10 = {
        plugin = v5,
        pluginName = "AttenuationCurveEditor",
        translationResourceTable = l_LocalizedStrings_0,
        fallbackResourceTable = l_SourceStrings_0,
        getToolbarName = function(v7, v8, v9)
            return v7(v8, v9, "Plugin", "Toolbar");
        end,
        noToolbar = true
    };
    local l_RunService_0 = game:GetService("RunService");
    local v12 = v4.get() == v4.standalone;
    local v13 = l_RunService_0:IsEdit();
    if not v12 and not v13 then
        v1.build(v10);
        return ;
    else
        v6(v5, (v1.build(v10)));
        return ;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AttenuationCurveEditor");
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")));
    if v6 then
        v6:render(v5);
    end;
    v1.Unloading:Connect(function()
        if v6 then
            v6:render(nil);
            v6 = nil;
        end;
    end);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AttenuationCurveEditor");
require(l_script_FirstAncestor_0.Bin.Common.defineLuaFlags);
if game:GetFastFlag("EnableDistanceAttenuationCurveEditorLua") then
    local v1 = require(l_script_FirstAncestor_0.Packages.TestLoader);
    v1.launch("AttenuationCurveEditor", l_script_FirstAncestor_0.Src);
    if not v1.isCli() then
        local v2 = require(l_script_FirstAncestor_0.Bin.Common.pluginType);
        if v2.get() ~= v2.standalone then
            return ;
        else
            require(l_script_FirstAncestor_0.Bin.Common.setup)(plugin, (require(l_script_FirstAncestor_0.Bin.Common.setupMain)));
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;