local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local v5 = require(l_script_FirstAncestor_0.Src.Actions.SetReplaceProgress);
local v6 = require(l_script_FirstAncestor_0.Src.Actions.SetScriptSelection);
local v7 = require(l_script_FirstAncestor_0.Src.Actions.SetScriptExpansion);
local v8 = require(l_script_FirstAncestor_0.Src.Actions.SetProgressBarMessageKey);
local v9 = require(l_script_FirstAncestor_0.Src.Thunks.OnScriptsReverted);
local v10 = require(l_script_FirstAncestor_0.Src.Thunks.ReplaceWithRules);
local v11 = require(l_script_FirstAncestor_0.Src.Thunks.ReplaceWithSuggestion);
local v12 = require(l_script_FirstAncestor_0.Src.Thunks.RevertScripts);
local v13 = require(l_script_FirstAncestor_0.Src.Thunks.UndoRevert);
local l_Components_0 = l_script_FirstAncestor_0.Src.Components;
local v15 = require(l_Components_0.ScriptIssueRow);
local v16 = require(l_Components_0.ScriptConversionRightClickMenu);
local v17 = require(l_Components_0.SelectAllRow);
local v18 = require(l_script_FirstAncestor_0.Src.Contexts.ScriptConversionContext);
local v19 = require(l_script_FirstAncestor_0.Src.Util.ScriptTreeManager);
local _ = require(l_script_FirstAncestor_0.Src.Util.ScriptAnalysis.Constants);
local l_UI_0 = v3.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TreeView_0 = l_UI_0.TreeView;
local l_KeyboardListener_0 = l_UI_0.KeyboardListener;
local v25 = v1.PureComponent:extend("ScriptIssueTreeView");
v25.init = function(v26)
    v26.ref = v1.createRef();
    v26.canvasPosition = Vector2.zero;
    v26.areAllSelected = function()
        return v26.treeManager:areAllSelected(true);
    end;
    v26.onAllSelectedChecked = function()
        if not v26:areAllSelected() then
            v26.treeManager:selectAll(true);
            return ;
        else
            v26.treeManager:resetSelected();
            return ;
        end;
    end;
    v26.onToggle = function(v27)
        v26.treeManager:toggleExpanded(v27.item);
    end;
    v26.onClick = function(v28)
        v26.treeManager:onItemClicked(v28.item);
    end;
    v26.onDoubleClick = function(v29)
        v26.treeManager:onItemDoubleClicked(v29.item, v26.props.ScriptConversionContext);
    end;
    v26.resetSelection = function()
        v26.treeManager:resetSelected();
    end;
    v26.onKeyPressed = function(v30)
        v26.treeManager:onKeyPressed(v30);
    end;
    v26.onKeyReleased = function(v31)
        v26.treeManager:onKeyReleased(v31);
    end;
    v26.onRightClick = function(v32)
        v26.treeManager:onItemClicked(v32.item, true);
        v16:show(v26.treeManager:getRightClickContextInfo(v26.props, v32.item));
    end;
    v26.getRowProps = function(v33, v34, v35, v36)
        local l_item_0 = v33.item;
        return {
            Expanded = v26.props.expansion[l_item_0],
            Selected = v26.treeManager:itemIsSelected(l_item_0),
            OnToggle = v26.onToggle,
            OnClick = v26.onClick,
            OnRightClick = v26.onRightClick,
            OnDoubleClick = v26.onDoubleClick,
            Key = v34,
            Position = v35,
            Row = v33,
            Size = v36
        };
    end;
    v26.comparator = function(v38, v39)
        if not v38.range or not v39.range then
            return v39.key < v38.key;
        else
            return v38.range < v39.range;
        end;
    end;
    v26.treeManager = v19.new();
    v26.treeManager:connectToExpandedChanged(function()
        v26.props.SetScriptExpansion(v26.treeManager:getExpansionTable());
    end);
    v26.treeManager:connectToSelectedChanged(function()
        v26.props.SetScriptSelection(v26.treeManager:getSelectionList());
    end);
end;
v25.getScroller = function(v40)
    return v40.ref:getValue().TreeView.List;
end;
v25.didMount = function(v41)
    local l_props_0 = v41.props;
    local l_filter_0 = l_props_0.filter;
    local l_diagnostics_0 = l_props_0.diagnostics;
    local l_revertedScripts_0 = l_props_0.revertedScripts;
    local l_initialIssueCounts_0 = l_props_0.initialIssueCounts;
    local l_completedScripts_0 = l_props_0.completedScripts;
    local l_Localization_0 = l_props_0.Localization;
    local l_ScriptConversionContext_0 = l_props_0.ScriptConversionContext;
    local v50 = v41:getScroller();
    v41.onCanvasPositionChanged = v50:GetPropertyChangedSignal("CanvasPosition"):Connect(function()
        if not v41.preserveCanvasPosition then
            v41.canvasPosition = v50.CanvasPosition;
        end;
    end);
    v41.onCanvasSizeChanged = v50:GetPropertyChangedSignal("CanvasSize"):Connect(function()
        if v50 then
            if v41.previousCanvasSize and v50.CanvasSize.Y.Offset < v41.previousCanvasSize.Y.Offset then
                v41.preserveCanvasPosition = true;
            end;
            if not (not v41.preserveCanvasPosition or not v41.canvasPosition) and v41.canvasPosition.Y <= v50.CanvasSize.Y.Offset then
                v50.CanvasPosition = v41.canvasPosition;
                v41.preserveCanvasPosition = false;
            end;
            v41.previousCanvasSize = v50.CanvasSize;
            return ;
        else
            return ;
        end;
    end);
    v41.treeManager:buildTreeItems({
        diagnostics = l_diagnostics_0,
        completedScripts = l_completedScripts_0,
        initialIssueCounts = l_initialIssueCounts_0,
        revertedScripts = l_revertedScripts_0,
        filter = if l_filter_0 ~= l_Localization_0:getText("ScriptConversion", "FilterNone") then l_filter_0 else nil,
        Localization = l_Localization_0,
        ScriptConversionContext = l_ScriptConversionContext_0
    });
    v41.props.SetScriptExpansion(v41.treeManager:getExpansionTable());
    v41.props.SetScriptSelection(v41.treeManager:getSelectionList());
end;
v25.render = function(v51)
    local l_props_1 = v51.props;
    local l_selection_0 = l_props_1.selection;
    local l_expansion_0 = l_props_1.expansion;
    local l_Size_0 = l_props_1.Size;
    local l_LayoutOrder_0 = l_props_1.LayoutOrder;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local l_SelectAllRow_0 = l_Stylizer_0.SelectAllRow;
    return v1.createElement(l_Pane_0, {
        Size = l_Size_0,
        ForwardRef = v51.ref,
        LayoutOrder = l_LayoutOrder_0,
        Layout = Enum.FillDirection.Vertical
    }, {
        SelectAllRow = v1.createElement(v17, {
            IsChecked = v51:areAllSelected(),
            OnCheckboxClick = v51.onAllSelectedChecked,
            RowHeight = l_SelectAllRow_0.RowHeight,
            Padding = l_SelectAllRow_0.Padding,
            OnResetPlugin = l_props_1.OnResetPlugin
        }),
        TreeView = v1.createElement(l_TreeView_0, {
            Size = UDim2.new(1, 0, 1, -l_SelectAllRow_0.RowHeight),
            Expansion = l_expansion_0,
            Selection = l_selection_0,
            RootItems = v51.treeManager:getItems() or {},
            ScrollingDirection = Enum.ScrollingDirection.Y,
            RowComponent = v15,
            RowHeight = l_Stylizer_0.RowHeight,
            GetRowProps = v51.getRowProps,
            SortChildren = v51.comparator
        }),
        KeyboardListener = v1.createElement(l_KeyboardListener_0, {
            OnKeyPressed = v51.onKeyPressed,
            OnKeyReleased = v51.onKeyReleased
        })
    });
end;
v25.willUpdate = function(v59, v60, _)
    local l_props_2 = v59.props;
    local l_Localization_1 = l_props_2.Localization;
    if l_Localization_1 and (not (l_props_2.diagnostics == v60.diagnostics) or l_props_2.filter ~= v60.filter) then
        v59.treeManager:buildTreeItems({
            diagnostics = v60.diagnostics,
            completedScripts = v60.completedScripts,
            initialIssueCounts = v60.initialIssueCounts,
            revertedScripts = v60.revertedScripts,
            filter = if v60.filter ~= l_Localization_1:getText("ScriptConversion", "FilterNone") then v60.filter else nil,
            Localization = l_Localization_1,
            ScriptConversionContext = l_props_2.ScriptConversionContext
        });
    end;
end;
v25.didUpdate = function(v64, v65, _)
    if not (v64.props.diagnostics == v65.diagnostics) or v64.props.filter ~= v65.filter then
        v64.props.SetScriptExpansion(v64.treeManager:getExpansionTable());
        v64.props.SetScriptSelection(v64.treeManager:getSelectionList());
    end;
end;
v25.willUnmount = function(v67)
    v67.treeManager:terminate();
    if v67.onCanvasSizeChanged then
        v67.onCanvasSizeChanged:Disconnect();
    end;
    if v67.onCanvasPositionChanged then
        v67.onCanvasPositionChanged:Disconnect();
    end;
    v67.preserveCanvasPosition = false;
end;
return v2.connect(function(v68, _)
    return {
        expansion = v68.ScriptConversion.expansion,
        selection = v68.ScriptConversion.selection,
        diagnostics = v68.ScriptConversion.diagnostics,
        completedScripts = v68.ScriptConversion.completedScripts,
        initialIssueCounts = v68.ScriptConversion.initialIssueCounts,
        revertedScripts = v68.ScriptConversion.revertedScripts,
        filter = v68.ScriptConversion.filter,
        replaceRules = v68.ScriptConversion.replaceRules
    };
end, function(v70)
    return {
        OnScriptsReverted = function(v71)
            v70(v9(v71));
        end,
        SetReplaceProgress = function(v72)
            v70(v5(v72));
        end,
        SetProgressBarMessageKey = function(v73)
            v70(v8(v73));
        end,
        SetScriptExpansion = function(v74)
            v70(v7(v74));
        end,
        SetScriptSelection = function(v75)
            v70(v6(v75));
        end,
        ReplaceWithRules = function(v76, v77, v78)
            v70(v10(v76, v77, false, v78));
        end,
        ReplaceWithSuggestion = function(v79, v80, v81, v82, v83, v84, v85)
            v70(v11(v79, v80, v81, v82, v83, v84, true, v85));
        end,
        RevertScripts = function(v86, v87, v88)
            v70(v12(v86, v87, v88));
        end,
        UndoRevert = function(v89, v90, v91)
            v70(v13(v89, v90, v91));
        end
    };
end)((l_ContextServices_0.withContext({
    Analytics = l_ContextServices_0.Analytics,
    Plugin = l_ContextServices_0.Plugin,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer,
    ScriptConversionContext = v18
})(v25)));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local _ = require(l_script_FirstAncestor_0.Src.Contexts.ScriptConversionContext);
local v7 = require(l_script_FirstAncestor_0.Packages.Dash);
local l_join_0 = v7.join;
local l_keys_0 = v7.keys;
local _ = v7.map;
local l_None_0 = v7.None;
local l_UI_0 = v3.UI;
local l_ExpandablePane_0 = l_UI_0.ExpandablePane;
local _ = l_UI_0.IconButton;
local l_Pane_0 = l_UI_0.Pane;
local l_SearchBar_0 = l_UI_0.SearchBar;
local l_TextLabel_0 = l_UI_0.TextLabel;
local _ = l_UI_0.TreeTable;
local _ = l_script_FirstAncestor_0.Src.Actions;
local l_Components_0 = l_script_FirstAncestor_0.Src.Components;
local v21 = require(l_Components_0.ScriptFilterButton);
local v22 = require(l_Components_0.ScriptPaneTreeTable);
local v23 = require(l_Components_0.TagsBar);
local l_Util_0 = l_script_FirstAncestor_0.Src.Util;
local v25 = require(l_Util_0.ScriptAnalysis.R6Info);
local _ = require(l_Util_0.ScriptAnalysis.Constants);
local _ = require(l_Util_0.findAllInServices);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v29 = v1.PureComponent:extend("ScriptPane");
v29.init = function(v30)
    v30.state = {
        expanded = true,
        searchFilters = {
            scriptName = nil,
            rigFilters = {
                R6 = {},
                R15 = {}
            }
        },
        expandedTreeView = false,
        _Ref = {
            diagnostics = nil
        }
    };
    v30.expandedChanged = function()
        v30:setState({
            expanded = not v30.state.expanded
        });
    end;
    v30.onSearchRequested = function(v31)
        v30:setState({
            searchFilters = l_join_0(v30.state.searchFilters, {
                scriptName = if v31 ~= "" then v31 else l_None_0
            })
        });
    end;
    v30.onFilterSelected = function(v32)
        local l_RigType_0 = v32.Data.RigType;
        local l_InstanceName_0 = v32.Data.InstanceName;
        v30:setState({
            searchFilters = l_join_0(v30.state.searchFilters, {
                rigFilters = l_join_0(v30.state.searchFilters.rigFilters, {
                    [l_RigType_0] = l_join_0(v30.state.searchFilters.rigFilters[l_RigType_0], {
                        [l_InstanceName_0] = not v30.state.searchFilters.rigFilters[l_RigType_0][l_InstanceName_0] or l_None_0
                    })
                })
            })
        });
    end;
    v30.ExpandTreeView = Instance.new("BindableEvent");
end;
local function v42(v35)
    local v36 = {};
    for _, v38 in v35, nil, nil do
        for _, v40 in v38._list, nil, nil do
            if v40.issueType ~= v25.AnimationKey then
                v36[v40.instanceName] = true;
            end;
        end;
    end;
    local v41 = l_keys_0(v36);
    table.sort(v41);
    return v41;
end;
v29.getDerivedStateFromProps = function(v43, v44)
    if v43.diagnostics ~= v44._Ref.diagnostics then
        return {
            instanceNames = v42(v43.diagnostics),
            _Ref = l_join_0(v44._Ref, {
                diagnostics = v43.diagnostics
            })
        };
    else
        return ;
    end;
end;
v29.render = function(v45)
    local l_state_0 = v45.state;
    local _ = v45.props;
    local l_Localization_0 = v45.props.Localization;
    return v1.createElement(l_Pane_0, {
        Size = UDim2.fromScale(1, 1)
    }, {
        ExpandablePane = v1.createElement(l_ExpandablePane_0, {
            Expanded = v45.state.expanded,
            HeaderComponent = l_TextLabel_0,
            HeaderComponentProps = {
                Text = "Scripts",
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center
            },
            OnExpandedChanged = v45.expandedChanged
        }),
        Contents = v1.createElement(l_Pane_0, {
            Position = UDim2.new(0, 0, 0, 32),
            Size = UDim2.new(1, 0, 1, -80),
            Visible = v45.state.expanded,
            Layout = Enum.FillDirection.Vertical,
            Padding = {
                Left = 5,
                Right = 5
            },
            Spacing = 5
        }, {
            Search = v1.createElement(l_Pane_0, {
                LayoutOrder = 0,
                Size = UDim2.new(1, 0, 0, 32),
                Layout = Enum.FillDirection.Horizontal,
                Padding = 5
            }, {
                Search = v1.createElement(l_SearchBar_0, {
                    LayoutOrder = 0,
                    PlaceholderText = l_Localization_0:getText("ScriptPane", "SearchScripts"),
                    ShowSearchIcon = true,
                    ShowSearchButton = false,
                    OnSearchRequested = v45.onSearchRequested,
                    IncrementalTextSearch = true,
                    IncrementalTextSearchDelay = 100,
                    Size = UDim2.new(1, -32, 0, 32)
                }),
                FilterMenuButton = v1.createElement(v21, {
                    LayoutOrder = 1,
                    Size = UDim2.fromOffset(32, 32),
                    InstanceNames = l_state_0.instanceNames,
                    Filters = l_state_0.searchFilters.rigFilters,
                    OnFilterSelected = v45.onFilterSelected
                })
            }),
            Toolbar = v1.createElement(l_Pane_0, {
                LayoutOrder = 1,
                Size = UDim2.new(1, 0, 0, 24),
                Layout = Enum.FillDirection.Horizontal,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }, {
                TagsBar = v1.createElement(v23, {
                    LayoutOrder = 1,
                    Size = UDim2.fromScale(0.7, 1),
                    Filters = l_state_0.searchFilters,
                    OnFilterClosed = v45.onFilterSelected,
                    ClipsDescendants = true
                }),
                ExpandCollapse = v1.createElement(l_Pane_0, {
                    LayoutOrder = 2,
                    Size = UDim2.fromScale(0.3, 1),
                    OnClick = function()
                        local v49 = not v45.state.expandedTreeView;
                        v45.ExpandTreeView:Fire(v49);
                        v45:setState({
                            expandedTreeView = v49
                        });
                    end,
                    Layout = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Right
                }, {
                    TextLabel = v1.createElement(l_TextLabel_0, {
                        Text = l_Localization_0:getText("ScriptPane", not v45.state.expandedTreeView and "ExpandAll" or "CollapseAll"),
                        TextXAlignment = Enum.TextXAlignment.Right
                    })
                })
            }),
            ScriptTree = v1.createElement(v22, {
                LayoutOrder = 2,
                Size = UDim2.new(1, 0, 1, -56),
                SearchFilters = l_state_0.searchFilters,
                ExpandTreeView = v45.ExpandTreeView
            })
        }),
        Footer = v1.createElement(l_Pane_0, {
            AnchorPoint = Vector2.new(0, 1),
            BackgroundColor = Color3.new(0, 0, 0.5),
            Size = UDim2.new(1, 0, 0, 48),
            Position = UDim2.fromScale(0, 1)
        }, {
            TextLabel = v1.createElement(l_TextLabel_0, {
                Text = "Footer"
            })
        })
    });
end;
return (v2.connect(function(v50, _)
    return {
        diagnostics = v50.ScriptConversion.diagnostics
    };
end)((l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer
})(v29))));


local v0 = require(script:FindFirstAncestor("R15Migrator").Packages.Framework);
local l_createStyleRule_0 = v0.Styling.createStyleRule;
local l_SharedFlags_0 = v0.SharedFlags;
local v3 = l_SharedFlags_0.getFFlagDevFrameworkTreeTableCellPadding();
local l_getFFlagDevFrameworkFixTreeTableHoverScroll_0 = l_SharedFlags_0.getFFlagDevFrameworkFixTreeTableHoverScroll;
return l_createStyleRule_0(".Component-TreeTable", {}, {
    l_createStyleRule_0(">> .Component-CellComponent", {}, {
        l_createStyleRule_0("> .Left ::UIPadding", if not v3 then {
            Padding = {
                Top = 1,
                Bottom = 1,
                Left = 5,
                Right = 5
            }
        } else {
            PaddingTop = UDim.new(0, 1),
            PaddingBottom = UDim.new(0, 1),
            PaddingLeft = UDim.new(0, 5),
            PaddingRight = UDim.new(0, 5)
        }),
        l_createStyleRule_0(">> .Arrow", if not l_getFFlagDevFrameworkFixTreeTableHoverScroll_0() then {
            BackgroundTransparency = 1,
            Image = "rbxasset://textures/StudioSharedUI/arrowSpritesheet.png",
            ImageColor3 = "$TextPrimary",
            ImageRectSize = Vector2.new(12, 12),
            ImageRectOffset = Vector2.new(12, 0),
            Size = UDim2.fromOffset(12, 12)
        } else {
            BackgroundTransparency = 1,
            Image = "$ArrowRightImage",
            Size = UDim2.fromOffset(16, 16)
        }, {
            if not v3 then nil else l_createStyleRule_0(".Invisible", {
                ImageTransparency = 1
            })
        })
    })
}, {
    ArrowSize = not l_getFFlagDevFrameworkFixTreeTableHoverScroll_0() and 12 or 16,
    CellPadding = 5,
    Indent = 20
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local v2 = require(l_script_FirstAncestor_0.Packages.Roact);
local v3 = require(l_script_FirstAncestor_0.Packages.React);
local l_supportsStyleSheets_0 = v1.Styling.supportsStyleSheets;
local l_joinTags_0 = v1.Styling.joinTags;
local v6 = require(script.Parent.styles);
local l_v6_Attribute_0 = v6:GetAttribute("ArrowSize");
local l_v6_Attribute_1 = v6:GetAttribute("CellPadding");
local l_v6_Attribute_2 = v6:GetAttribute("Indent");
local l_SharedFlags_0 = v1.SharedFlags;
local v11 = l_SharedFlags_0.getFFlagDevFrameworkTreeTableCellPadding();
local v12 = l_SharedFlags_0.getFFlagDevFrameworkFixTreeTableHoverScroll();
local l_join_0 = require(l_script_FirstAncestor_0.Packages.Dash).join;
local l_UI_0 = v1.UI;
local l_IconButton_0 = l_UI_0.IconButton;
local l_Image_0 = l_UI_0.Image;
local l_Pane_0 = l_UI_0.Pane;
local l_PropertyCell_0 = l_UI_0.PropertyCell;
local l_Tooltip_0 = l_UI_0.Tooltip;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_DEPRECATED_TextInput_0 = l_UI_0.DEPRECATED_TextInput;
local l_StyleModifier_0 = v1.Util.StyleModifier;
local l_TweenService_0 = game:GetService("TweenService");
local v24 = TweenInfo.new(0.1, Enum.EasingStyle.Linear);
local v25 = Color3.new(0.2, 0.2, 0.5);
local v26 = v2.PureComponent:extend("TreeTableCell");
v26.init = function(v27)
    v27.state = {
        textOverflows = false
    };
    v27.onToggle = function()
        v27.props.CellProps.OnToggle(v27.props.Row);
    end;
    v27.textRef = v2.createRef();
    v27.toggleRef = v2.createRef();
    v27.fetchCellContentsWidthIfOverflow = function()
        if not v27.state.textOverflows then
            return 0;
        else
            local l_CellStyle_0 = v27.props.CellProps.CellStyle;
            return v27.textRef.current.AbsoluteSize.X + if not l_supportsStyleSheets_0 then l_CellStyle_0.CellPadding.Left + l_CellStyle_0.Indent else l_v6_Attribute_1 + l_v6_Attribute_2;
        end;
    end;
    v27.onAbsoluteSizeChanged = function()
        if v27.textRef:getValue() then
            v27:setState({
                textOverflows = not v27.textRef:getValue().TextFits
            });
        end;
        local l_props_0 = v27.props;
        if not (not v27.textRef.current or not l_props_0.SetCellContentsWidth) then
            l_props_0.SetCellContentsWidth(l_props_0.ColumnIndex, l_props_0.RowIndex, v27.fetchCellContentsWidthIfOverflow());
        end;
    end;
    v27.onTextInputFocusLost = function(v30, v31)
        local l_props_1 = v27.props;
        local l_OnFocusLost_0 = l_props_1.CellProps.OnFocusLost;
        if l_OnFocusLost_0 then
            l_OnFocusLost_0(v30, v31, l_props_1.Row, l_props_1.ColumnIndex);
        end;
    end;
    v27.onPressed = function(...)
        local l_props_2 = v27.props;
        if l_props_2.CellProps.OnCellPressed then
            l_props_2.CellProps.OnCellPressed(l_props_2.Row.item.Path, l_props_2.ColumnIndex, ...);
        end;
    end;
    v27.onDoubleClick = function(...)
        local l_props_3 = v27.props;
        if l_props_3.CellProps.OnCellDoubleClick then
            l_props_3.CellProps.OnCellDoubleClick(l_props_3.Row.item.Path, l_props_3.ColumnIndex, ...);
        end;
    end;
    v27.getTextElement = function(v36, v37, v38)
        local l_TextInputCols_0 = v36.CellProps.TextInputCols;
        if not ((l_TextInputCols_0 and l_TextInputCols_0[v36.ColumnIndex]) and v36.Row.depth == 0) then
            return not not v37 and v2.createElement(l_TextLabel_0, {
                LayoutOrder = 3,
                Size = v38,
                Text = v37,
                TextXAlignment = Enum.TextXAlignment.Left,
                [v2.Ref] = v27.textRef
            }) or nil;
        else
            return v2.createElement(l_DEPRECATED_TextInput_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = 3,
                OnFocusLost = v27.onTextInputFocusLost,
                Size = v38,
                Text = v37,
                [v2.Ref] = v27.textRef
            });
        end;
    end;
    v27.getTextFromProps = function(v40)
        local v41 = v40.Columns[v40.ColumnIndex];
        return v40.Row.item[v41.Key or v41.Name];
    end;
    v27.getPropertyCell = function(v42)
        local l_CellProps_0 = v27.props.CellProps;
        return v2.createElement(l_PropertyCell_0, {
            ErrorMessage = v42.ErrorMessage,
            GetAutocompleteItems = l_CellProps_0.GetAutocompleteItems,
            Item = v42.Item,
            LayoutOrder = 3,
            OnMenuAction = function(v44)
                return function()
                    v27.props.CellProps.OnCellAction(v44, v27.props.Row.item.Path, v27.props.ColumnIndex);
                end;
            end,
            OnChanged = v27.onChanged,
            OnClick = v42.OnClick,
            OnDoubleClick = v42.OnDoubleClick,
            OnPressed = v42.OnPressed,
            Renderers = l_join_0(l_CellProps_0.Renderers, v42.Renderers),
            Schema = v42.Schema,
            Selected = v42.Selected,
            Size = v42.Size,
            StyleModifier = v42.StyleModifier,
            Value = v42.Value,
            Disabled = v27.props.Row.item._disabled
        });
    end;
    v27.onChanged = function(v45)
        if v27.props.CellProps.OnCellEdited then
            v27.props.CellProps.OnCellEdited(v45, v27.props.Row.item.Path, v27.props.ColumnIndex);
        end;
    end;
    v27.defaultGetItemId = function(v46)
        return v46;
    end;
    v27.getItemId = not not v27.props.CellProps and v27.props.CellProps.GetItemId or v27.defaultGetItemId;
end;
v26.didMount = function(v47)
    local l_props_4 = v47.props;
    local v49 = l_props_4.CellProps.Expansion[v47.getItemId(l_props_4.Row.item)];
    if not (not v47.toggleRef.current or not v49) then
        v47.toggleRef.current.Rotation = 90;
    end;
end;
v26.willUpdate = function(v50, v51)
    if not (v51.CellProps == v50.props.CellProps) or not (not v51.CellProps or not v50.props.CellProps) and v51.CellProps.GetItemId ~= v50.props.CellProps.GetItemId then
        v50.getItemId = (not not v51 and v51.CellProps) and v51.CellProps.GetItemId or v50.defaultGetItemId;
    end;
end;
v26.didUpdate = function(v52, v53)
    local l_props_5 = v52.props;
    if not (not (not (v53.RowIndex == l_props_5.RowIndex) or v52.getTextFromProps(v53) ~= v52.getTextFromProps(l_props_5)) or not l_props_5.SetCellContentsWidth) then
        l_props_5.SetCellContentsWidth(l_props_5.ColumnIndex, l_props_5.RowIndex, v52.fetchCellContentsWidthIfOverflow());
    end;
    local v55 = l_props_5.CellProps.Expansion[v52.getItemId(l_props_5.Row.item)];
    if v52.toggleTween then
        v52.toggleTween:Pause();
    end;
    if v52.toggleRef.current then
        local v56 = not v55 and 0 or 90;
        if v53.Row.item == l_props_5.Row.item then
            v52.toggleTween = l_TweenService_0:Create(v52.toggleRef.current, v24, {
                Rotation = v56
            });
            v52.toggleTween:Play();
            return ;
        else
            v52.toggleRef.current.Rotation = v56;
        end;
    end;
end;
v26.render = function(v57)
    local l_props_6 = v57.props;
    local v59 = l_props_6.Columns[l_props_6.ColumnIndex];
    local v60 = v59.Key or v59.Name;
    local v61 = l_props_6.Width or UDim.new(1 / #l_props_6.Columns, 0);
    local l_Row_0 = l_props_6.Row;
    local l_CellProps_1 = l_props_6.CellProps;
    local v64 = l_Row_0.item[v60];
    local v65 = nil;
    local v66 = nil;
    local v67 = false;
    if typeof(v64) == "table" then
        v65 = tostring(v64.Value);
        v66 = v64.LeftIcon;
        if v64.Schema then
            v67 = true;
        end;
    else
        v65 = if v64 ~= nil then tostring(v64) else "";
    end;
    local v68 = nil;
    local v69 = nil;
    local v70 = nil;
    if typeof(v64) == "table" then
        v68 = (l_props_6.Tooltip or v64.ErrorMessage) or v65;
        v70 = v68 == v64.ErrorMessage;
    else
        v68 = l_props_6.Tooltip or v65;
    end;
    local v71 = false;
    if v68 ~= nil then
        v71 = false;
        if v68 ~= "" then
            v71 = (v57.state.textOverflows or v70) and not l_CellProps_1.DisableTooltip;
        end;
    end;
    v69 = v71;
    v71 = if not l_supportsStyleSheets_0 then l_join_0(l_props_6.Style, l_CellProps_1.CellStyle) else nil;
    local v72 = if not l_supportsStyleSheets_0 then if l_Row_0.depth == 1 then v71.BackgroundEven else v71.BackgroundOdd else nil;
    if not ((l_supportsStyleSheets_0 or not l_props_6.HighlightCell) or not v71[l_StyleModifier_0.Hover]) then
        v72 = if l_Row_0.depth == 1 then v71[l_StyleModifier_0.Hover].BackgroundEven else v71[l_StyleModifier_0.Hover].BackgroundOdd;
    end;
    if not (not (l_Row_0.item.select and l_Row_0.item.select.Value) and ((not l_Row_0.item.Path.parent or not l_Row_0.item.Path.parent.select) or not l_Row_0.item.Path.parent.select.Value)) then
        v72 = v25;
    end;
    local v73 = if not l_supportsStyleSheets_0 then v71.Arrow.Size else l_v6_Attribute_0;
    local v74 = l_Row_0.depth * if not l_supportsStyleSheets_0 then v71.Indent else l_v6_Attribute_2;
    local v75 = l_props_6.ColumnIndex == 2;
    local v76 = if not l_supportsStyleSheets_0 then if v67 then v71.SchemaCellPadding else v71.CellPadding else nil;
    local v77 = if not l_supportsStyleSheets_0 then v75 and {
        Top = v76.Top,
        Left = v71.CellPadding.Left + v74,
        Right = v76.Right,
        Bottom = v76.Bottom
    } or v76 else nil;
    local v78 = if not v11 then v75 and l_Row_0.hasChildren else l_Row_0.hasChildren;
    local v79 = 0;
    local v80 = nil;
    if not (not (typeof(v64) == "table") or not v64.Actions) then
        v79 = v79 + if not l_supportsStyleSheets_0 then v71.CellSpacing else l_v6_Attribute_1;
        v80 = {};
        for v81, v82 in ipairs(v64.Actions) do
            v80["Action " .. v81] = v2.createElement(l_IconButton_0, if not l_supportsStyleSheets_0 then {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = v81,
                LeftIcon = v82.Icon.Image,
                OnClick = function()
                    if l_CellProps_1.OnCellAction then
                        l_CellProps_1.OnCellAction(v82.Id, l_Row_0.item.Path, l_props_6.ColumnIndex);
                    end;
                end,
                Size = v82.Icon.Size,
                Style = "Compact",
                TooltipText = v82.Tooltip
            } else {
                Cursor = "PointingHand",
                LayoutOrder = v81,
                LeftIcon = v82.Icon.Image,
                OnClick = function()
                    if l_CellProps_1.OnCellAction then
                        l_CellProps_1.OnCellAction(v82.Id, l_Row_0.item.Path, l_props_6.ColumnIndex);
                    end;
                end,
                Size = v82.Icon.Size,
                TooltipText = v82.Tooltip,
                IconTag = "Icon16 Primary",
                [v3.Tag] = l_joinTags_0("Compact", v82[v3.Tag])
            });
            v79 = v79 + 32;
        end;
    end;
    local v83 = 0;
    if v66 then
        v83 = v83 + (if not l_supportsStyleSheets_0 then v71.CellSpacing else l_v6_Attribute_1 + v66.Size.X.Offset);
    end;
    local v84 = if not v11 then v78 else v75;
    if v84 then
        v83 = v83 + (if not l_supportsStyleSheets_0 then v71.CellSpacing else l_v6_Attribute_1 + v73);
    end;
    local v85 = UDim2.new(1, -v83, 1, 0);
    local v86 = if not l_supportsStyleSheets_0 then nil else l_joinTags_0("Component-TreeTableCell", l_props_6.StyleModifier == l_StyleModifier_0.Selected and "Selected" or (l_props_6.Emphasis and "Secondary" or "Row"), l_props_6[v3.Tag]);
    local l_v80_0 = v80;
    if l_v80_0 then
        l_v80_0 = true;
        if l_props_6.StyleModifier ~= l_StyleModifier_0.Hover then
            l_v80_0 = l_props_6.StyleModifier == l_StyleModifier_0.Selected;
        end;
    end;
    return v2.createElement(l_Pane_0, if not l_supportsStyleSheets_0 then {
        Style = "Box",
        BackgroundColor3 = v72,
        BorderSizePixel = 1,
        BorderColor3 = v71.Border,
        Size = UDim2.new(v61.Scale, v61.Offset, 1, 0),
        [v2.Change.AbsoluteSize] = v57.onAbsoluteSizeChanged,
        ClipsDescendants = true
    } else {
        ClipsDescendants = true,
        Size = UDim2.new(v61.Scale, v61.Offset, 1, 0),
        [v2.Change.AbsoluteSize] = v57.onAbsoluteSizeChanged,
        [v3.Tag] = v86
    }, {
        Tooltip = v69 and v2.createElement(l_Tooltip_0, {
            MaxWidth = if not v71 then nil else v71.Tooltip.MaxWidth,
            Text = v68,
            TextXAlignment = Enum.TextXAlignment.Left
        }),
        Left = v2.createElement(l_Pane_0, if not l_supportsStyleSheets_0 then {
            Layout = Enum.FillDirection.Horizontal,
            LayoutOrder = l_props_6.ColumnIndex,
            Padding = v77,
            Spacing = v71.CellSpacing,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Size = if not v12 then UDim2.new(1, -v79, 1, 0) else UDim2.new(1, not l_v80_0 and 0 or -v79, 1, 0)
        } else {
            LayoutOrder = l_props_6.ColumnIndex,
            Size = if not v12 then UDim2.new(1, -v79 - v74, 1, 0) else UDim2.new(1, if not l_v80_0 then -v74 else -v79 - v74, 1, 0),
            Position = UDim2.new(0, v74, 0, 0),
            [v3.Tag] = "Left X-RowM X-Middle"
        }, {
            Toggle = if not v84 then nil else v2.createElement(l_Pane_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = 1
            }, {
                Icon = v2.createElement("ImageButton", if not l_supportsStyleSheets_0 then {
                    Size = UDim2.fromOffset(v73, v73),
                    BackgroundTransparency = 1,
                    ImageTransparency = if not v11 or v78 then nil else 1,
                    Image = v71.Arrow.Image,
                    ImageColor3 = v71.Arrow.Color,
                    ImageRectSize = Vector2.new(v73, v73),
                    ImageRectOffset = v71.Arrow.CollapsedOffset,
                    [v2.Ref] = v57.toggleRef,
                    [v2.Event.Activated] = v57.onToggle
                } else {
                    [v3.Tag] = not v11 and "Arrow" or l_joinTags_0("Arrow", if v78 then nil else "Invisible"),
                    [v2.Ref] = v57.toggleRef,
                    [v2.Event.Activated] = v57.onToggle
                })
            }),
            LeftIcon = not not v66 and v2.createElement(l_Image_0, l_join_0({
                LayoutOrder = 2
            }, v66)) or nil,
            Text = if not v67 then v57.getTextElement(l_props_6, v65, v85) else v57.getPropertyCell({
                ErrorMessage = v64.ErrorMessage,
                OnClick = v64.OnClick,
                OnDoubleClick = v57.onDoubleClick,
                OnPressed = v57.onPressed,
                Renderers = v64.Renderers,
                Schema = v64.Schema,
                Selected = v64.Selected,
                Size = v85,
                Value = v64.Value
            })
        }),
        Right = if not l_v80_0 then nil else v2.createElement(l_Pane_0, if not l_supportsStyleSheets_0 then {
            AnchorPoint = Vector2.new(1, 0.5),
            AutomaticSize = Enum.AutomaticSize.XY,
            Layout = Enum.FillDirection.Horizontal,
            Position = UDim2.new(1, -v71.CellSpacing, 0.5, 0),
            Spacing = v71.CellSpacing
        } else {
            AnchorPoint = Vector2.new(1, 0.5),
            Position = UDim2.new(1, -l_v6_Attribute_1, 0.5, 0),
            [v3.Tag] = "X-RowM X-Fit X-Middle"
        }, v80)
    });
end;
return v26;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local _ = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local _ = v3.Dash.join;
local l_SelectInput_0 = v3.UI.SelectInput;
local _ = l_script_FirstAncestor_0.Src.Actions;
local _ = l_script_FirstAncestor_0.Src.Components;
local _ = require(l_script_FirstAncestor_0.Src.Types);
local _ = l_script_FirstAncestor_0.Src.Util;
local v12 = v1.PureComponent:extend("DropdownCell");
v12.init = function(v13)
    v13.state = {
        SelectedId = v13.props.SelectedId or "Unassigned"
    };
    v13.onItemActivated = function(v14, v15)
        local l_props_0 = v13.props;
        if v13.state.SelectedId ~= v14.Id then
            v13:setState({
                SelectedId = v14.Id
            });
        end;
        if l_props_0.OnChanged then
            l_props_0.OnChanged(v14, v15);
        end;
    end;
end;
v12.getDerivedStateFromProps = function(v17, _)
    return {
        SelectedId = v17.Value
    };
end;
v12.render = function(v19)
    local l_state_0 = v19.state;
    local l_props_1 = v19.props;
    return v1.createElement(l_SelectInput_0, {
        Size = UDim2.fromScale(1, 1),
        Items = l_props_1.Schema.Options,
        OnItemActivated = v19.onItemActivated,
        SelectedId = l_state_0.SelectedId,
        Enabled = not l_props_1.Disabled
    }, {});
end;
return (l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Stylizer = v3.Style.Stylizer
})(v12));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local _ = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local _ = v3.Dash.join;
local l_UI_0 = v3.UI;
local l_LinkText_0 = l_UI_0.LinkText;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Tooltip_0 = l_UI_0.Tooltip;
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v12 = require(l_script_FirstAncestor_0.Src.Util.ScriptReplacement);
local v13 = v1.PureComponent:extend("ScriptLinkCell");
v13.init = function(v14)
    v14.onLinkClick = function()
        v12.goToScriptInstance(v14.props.Value.Script, v14.props.Value.Range);
    end;
end;
v13.render = function(v15)
    local _ = v15.state;
    local l_props_0 = v15.props;
    local l_Localization_0 = l_props_0.Localization;
    local l_Value_0 = l_props_0.Value;
    if not l_Value_0.Range then
        return v1.createElement(l_TextLabel_0, {
            Text = l_Value_0.Script:GetFullName(),
            TextTruncate = Enum.TextTruncate.AtEnd,
            TextXAlignment = Enum.TextXAlignment.Left
        }, {
            Tooltip = v1.createElement(l_Tooltip_0, {
                Text = l_Value_0.Script:GetFullName()
            })
        });
    else
        return v1.createElement(l_LinkText_0, {
            Text = l_Localization_0:getText("ScriptPane", "LineColumn", {
                line = l_Value_0.Range.startLine,
                column = l_Value_0.Range.startCharacter
            }),
            OnClick = v15.onLinkClick
        });
    end;
end;
return (l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Stylizer = v3.Style.Stylizer
})(v13));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local _ = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_map_0 = v3.Dash.map;
local l_UI_0 = v3.UI;
local l_IconButton_0 = l_UI_0.IconButton;
local l_Image_0 = l_UI_0.Image;
local l_Pane_0 = l_UI_0.Pane;
local l_showContextMenu_0 = l_UI_0.showContextMenu;
local v12 = require(l_script_FirstAncestor_0.Src.Resources.Constants);
local _ = l_script_FirstAncestor_0.Src.Actions;
local _ = l_script_FirstAncestor_0.Src.Components;
local _ = require(l_script_FirstAncestor_0.Src.Types);
local _ = l_script_FirstAncestor_0.Src.Util;
local v17 = v1.PureComponent:extend("StatusCell");
local v18 = {
    v12.ScriptMenuActions.GoToScript,
    v12.ScriptMenuActions.ShowInExplorer,
    v12.ScriptMenuActions.RevertScript,
    v12.ScriptMenuActions.SelectAllSimilar
};
v17.init = function(v19)
    v19.showMenu = function()
        local l_props_0 = v19.props;
        local l_Localization_0 = l_props_0.Localization;
        l_showContextMenu_0(l_props_0.Plugin:get(), (l_map_0(v18, function(v22)
            return {
                Text = l_Localization_0:getText("ScriptPane", v22),
                OnItemClicked = l_props_0.OnMenuAction(v22)
            };
        end)));
    end;
end;
v17.render = function(v23)
    local _ = v23.state;
    local l_props_1 = v23.props;
    local _ = l_props_1.Localization;
    local l_Value_0 = l_props_1.Value;
    return v1.createElement(l_Pane_0, {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Size = UDim2.fromOffset(48, 24),
        Position = UDim2.fromScale(0.5, 0.5)
    }, {
        MenuButton = v1.createElement(l_IconButton_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.25, 0.5),
            Size = UDim2.fromOffset(16, 16),
            LeftIcon = "rbxasset://textures/StudioSharedUI/MeatballMenu.png",
            OnClick = v23.showMenu,
            Disabled = l_props_1.Disabled
        }),
        Completed = if not not l_Value_0 and l_Value_0.Checked then v1.createElement(l_Image_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = UDim2.fromOffset(16, 16),
            Position = UDim2.fromScale(0.75, 0.5),
            Image = "rbxasset://textures/R15Migrator/Icon_Checkmark.png"
        }) else nil
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = v3.Style.Stylizer,
    Plugin = l_ContextServices_0.Plugin
})(v17));


return {
    ScriptLinkCell = require(script.ScriptLinkCell),
    StatusCell = require(script.StatusCell),
    DropdownCell = require(script.DropdownCell)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local l_Dash_0 = require(l_script_FirstAncestor_0.Packages.Framework).Dash;
local l_append_0 = l_Dash_0.append;
local _ = l_Dash_0.join;
local _ = l_Dash_0.keys;
local l_map_0 = l_Dash_0.map;
local _ = l_Dash_0.pretty;
local l_Util_0 = l_script_FirstAncestor_0.Src.Util;
local v8 = require(l_Util_0.ScriptReplacement);
local v9 = require(l_Util_0.ScriptAnalysis.R6Info);
local v10 = require(l_Util_0.ScriptAnalysis.Constants);
local v11 = require(script.Parent.Sort);
local v12 = {
    [v9.PartKey] = "Part",
    [v10.ReferenceKey] = "Variable",
    [v9.JointKey] = "Joint"
};
local v13 = {};
local function v20(v14, v15)
    local l_issueType_0 = v14.issueType;
    local l_instanceName_0 = v14.instanceName;
    local v18 = nil;
    if l_issueType_0 == v9.PartKey then
        v18 = v9.Conversions[v9.PartsKey][l_instanceName_0];
    elseif l_issueType_0 == v9.JointKey then
        v18 = {
            v9.Conversions[v9.JointsKey][l_instanceName_0][v9.JointKey]
        };
    else
        return nil;
    end;
    return {
        Type = "Dropdown",
        Options = l_append_0({
            {
                Id = v8.UNASSIGNED,
                Label = v15:getText("ScriptPane", v8.UNASSIGNED)
            }
        }, l_map_0(v18, function(v19)
            return {
                Id = v19,
                Label = v19
            };
        end))
    };
end;
v13.isDiagnosticFilteredOut = function(v21, v22, v23)
    if (v23.scriptName and v23.scriptName ~= "") and string.find(v21, v23.scriptName) == nil then
        return true;
    elseif not next(v23.rigFilters.R6) or v23.rigFilters.R6[v22.instanceName] then
        if next(v23.rigFilters.R15) then
            if v23.rigFilters.R15.Unassigned or v22.resolution then
                if not (v23.rigFilters.R15.Assigned or not v22.resolution) then
                    return true;
                end;
            else
                return true;
            end;
        end;
        return false;
    else
        return true;
    end;
end;
v13.makeItemId = function(v24, v25, v26, v27)
    local v28 = v24 .. "|" .. v25 .. "|" .. v26;
    if v27 then
        v28 = v28 .. "|" .. v27;
    end;
    return v28;
end;
v13.genSortItems = function(v29, v30)
    return function(v31, v32)
        local v33 = typeof(v31[v29.Key]) == "table";
        local v34 = typeof(v32[v29.Key]) == "table";
        local v35 = if not v33 then v31[v29.Key] else v31[v29.Key].Value;
        local v36 = if not v34 then v32[v29.Key] else v32[v29.Key].Value;
        if not v29.SortMethod then
            if v35 ~= v36 then
                if v30 == Enum.SortDirection.Descending then
                    return v35 < v36;
                else
                    return v36 < v35;
                end;
            end;
        else
            local v37 = v29.SortMethod(v35, v36, v30);
            if v37 ~= nil then
                return v37;
            end;
        end;
        return v11.scriptLinkSort(v31.name.Value, v32.name.Value, Enum.SortDirection.Ascending);
    end;
end;
v13.generateTreeViewItems = function(v38, v39, v40, v41, v42)
    local v43 = {};
    local v44 = {};
    for v45, v46 in v38, nil, nil do
        local v47 = v39:getScriptInstanceFromGUID(v45);
        local l_v47_FullName_0 = v47:GetFullName();
        for _, v50 in v46:Get() do
            if not v13.isDiagnosticFilteredOut(l_v47_FullName_0, v50, v40) then
                local l_instanceName_1 = v50.instanceName;
                local l_issueType_1 = v50.issueType;
                if l_issueType_1 ~= v9.AnimationKey then
                    if not v43[v45] then
                        v43[v45] = {};
                    end;
                    if not v43[v45][l_issueType_1] then
                        v43[v45][l_issueType_1] = {};
                    end;
                    local v53 = v43[v45][l_issueType_1][l_instanceName_1];
                    local v54 = v20(v50, v42);
                    local _, v56 = next(v41);
                    local l_v56_0 = v56;
                    if l_v56_0 then
                        l_v56_0 = true;
                        if v56.issueType == l_issueType_1 then
                            l_v56_0 = v56.instanceName ~= l_instanceName_1;
                        end;
                    end;
                    if v53 == nil then
                        v53 = {
                            select = {
                                Value = v41[v13.makeItemId(v45, l_issueType_1, l_instanceName_1)],
                                Schema = {
                                    Type = "Checkbox"
                                }
                            },
                            name = {
                                Value = {
                                    Script = v47
                                },
                                Schema = {
                                    Type = "ScriptLink"
                                }
                            },
                            count = 0,
                            issue = v12[l_issueType_1],
                            r6 = l_instanceName_1,
                            r15 = if not v54 then {
                                Value = ""
                            } else {
                                Value = v50.resolution or v8.UNASSIGNED,
                                Schema = v54
                            },
                            menu_status = {
                                Value = {
                                    Checked = true
                                },
                                Schema = {
                                    Type = "Status"
                                }
                            },
                            children = {},
                            Path = {
                                scriptId = v45,
                                instanceName = l_instanceName_1,
                                issueType = l_issueType_1
                            },
                            _id = v13.makeItemId(v45, l_issueType_1, l_instanceName_1),
                            _disabled = l_v56_0
                        };
                        v53.Path.item = v53;
                        v43[v45][l_issueType_1][l_instanceName_1] = v53;
                        table.insert(v44, v53);
                    end;
                    local v58 = {
                        select = nil,
                        name = {
                            Value = {
                                Script = v47,
                                Range = v50.range
                            },
                            Schema = {
                                Type = "ScriptLink"
                            }
                        },
                        count = nil,
                        issue = "",
                        r6 = l_instanceName_1,
                        r15 = if not v54 then {
                            Value = ""
                        } else {
                            Value = v50.resolution or v8.UNASSIGNED,
                            Schema = v54
                        },
                        menu_status = {
                            Value = {
                                Checked = v50.resolution ~= nil
                            },
                            Schema = {
                                Type = "Status"
                            }
                        },
                        Path = {
                            parent = v53,
                            scriptId = v45,
                            issueType = l_issueType_1,
                            diagnostic = v50
                        },
                        _id = v13.makeItemId(v45, l_issueType_1, l_instanceName_1, v50.diagnosticId),
                        _disabled = l_v56_0
                    };
                    if not (not v53.r15 or not v53.r15.Value) and v50.resolution ~= v53.r15.Value then
                        v53.r15 = if not v54 then nil else {
                            Value = v8.UNASSIGNED,
                            Schema = v54
                        };
                    end;
                    if v50.resolution == nil then
                        v53.menu_status.Value.Checked = false;
                    end;
                    v58.Path.item = v58;
                    table.insert(v53.children, v58);
                    v53.count = v53.count + 1;
                end;
            end;
        end;
    end;
    return v44;
end;
v13.getItemId = function(v59)
    return v59._id;
end;
return v13;


return function(v0, v1, v2)
    local v3 = not v0 and 0 or 1;
    local v4 = not v1 and 0 or 1;
    if v3 == v4 then
        return nil;
    elseif v2 == Enum.SortDirection.Descending then
        return v3 < v4;
    else
        return v4 < v3;
    end;
end;


return {
    booleanSort = require(script.booleanSort),
    scriptLinkSort = require(script.scriptLinkSort),
    optionalNumSort = require(script.optionalNumSort)
};


return function(v0, v1, v2)
    v0 = v0 or 0;
    v1 = v1 or 0;
    if v0 == v1 then
        return nil;
    elseif v2 == Enum.SortDirection.Descending then
        return v0 < v1;
    else
        return v1 < v0;
    end;
end;


local _ = require(script:FindFirstAncestor("R15Migrator").Src.Util.ScriptAnalysis.Range);
return function(v1, v2, v3)
    local l_Range_0 = v1.Range;
    local l_Range_1 = v2.Range;
    if v3 == Enum.SortDirection.Descending then
        if not l_Range_0 or not l_Range_1 then
            return v1.Script:GetFullName() < v2.Script:GetFullName();
        else
            return l_Range_0:__lt(l_Range_1);
        end;
    elseif not l_Range_0 or not l_Range_1 then
        return v2.Script:GetFullName() < v1.Script:GetFullName();
    else
        return not l_Range_0:__le(l_Range_1);
    end;
end;


local l_Selection_0 = game:GetService("Selection");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v2 = require(l_script_FirstAncestor_0.Packages.React);
local v3 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v4 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Analytics_0 = l_ContextServices_0.Analytics;
local l_Localization_0 = l_ContextServices_0.Localization;
local v9 = require(l_script_FirstAncestor_0.Src.Contexts.ScriptConversionContext);
local l_Stylizer_0 = v4.Style.Stylizer;
local l_Dash_0 = v4.Dash;
local _ = l_Dash_0.append;
local l_join_0 = l_Dash_0.join;
local l_map_0 = l_Dash_0.map;
local l_None_0 = l_Dash_0.None;
local v16 = require(script.CellComponent);
local v17 = require(script.Renderers);
local v18 = require(script.ScriptPaneHelpers);
local l_UI_0 = v4.UI;
local _ = l_UI_0.Pane;
local l_TreeTable_0 = l_UI_0.TreeTable;
local _ = l_script_FirstAncestor_0.Src.Actions;
local _ = l_script_FirstAncestor_0.Src.Components;
local v24 = require(l_script_FirstAncestor_0.Src.Resources.Constants);
local v25 = require(l_script_FirstAncestor_0.Src.Thunks.ApplyResolutions);
local v26 = require(l_script_FirstAncestor_0.Src.Util.ScriptReplacement);
local v27 = require(script.Sort);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local v29 = {
    {
        Name = nil,
        Key = "select",
        SortMethod = v27.booleanSort
    },
    {
        Name = "NameTitle",
        Key = "name",
        SortMethod = v27.scriptLinkSort
    },
    {
        Name = nil,
        Key = "count",
        SortMethod = v27.optionalNumSort
    },
    {
        Name = "TypeTitle",
        Key = "issue"
    },
    {
        Name = "R6Title",
        Key = "r6"
    },
    {
        Name = "R15Title",
        Key = "r15"
    },
    {
        Name = nil,
        Key = "menu_status",
        SortMethod = v27.booleanSort
    }
};
local function v31(v30)
    return v30.children or {};
end;
local v32 = v2.PureComponent:extend("ScriptPaneTreeTable");
v32.init = function(v33)
    v33.state = {
        Sizes = {
            UDim.new(0, 24),
            UDim.new(0.5, -84),
            UDim.new(0, 24),
            UDim.new(0, 72),
            UDim.new(0.25, -42),
            UDim.new(0.25, -42),
            UDim.new(0, 48)
        },
        SortChildren = nil,
        SortIndex = 5,
        SortOrder = Enum.SortDirection.Ascending,
        Expansion = {},
        Selection = {},
        _Ref = {
            diagnostics = nil,
            searchFilters = nil
        }
    };
    v33.onSizesChange = function(v34)
        v33:setState({
            Sizes = v34
        });
    end;
    v33.onSortChange = function(v35, v36)
        local v37 = l_join_0(v33.state.Items);
        table.sort(v37, (v18.genSortItems(v29[v35], v36)));
        v33:setState({
            Items = v37,
            SortChildren = v18.genSortItems(v29[2], if v35 == 2 then v36 else Enum.SortDirection.Descending),
            SortIndex = v35,
            SortOrder = v36
        });
    end;
    v33.onCheckboxEdited = function(v38, v39)
        v33:setState({
            Selection = l_join_0(v33.state.Selection, {
                [v18.makeItemId(v39.scriptId, v39.issueType, v39.instanceName)] = if not v38 then l_None_0 else v39
            })
        });
    end;
    v33.onSuggestionApplied = function(v40, v41)
        local v42 = l_join_0(v33.state.Items);
        local l_item_0 = v41.item;
        local v44 = l_join_0(v33.state.Selection);
        if not (not v41.parent or not v44[v18.getItemId(v41.parent)]) then
            l_item_0 = v41.parent;
            v41 = l_item_0.Path;
        end;
        local v45 = {
            [v41.scriptId] = {}
        };
        l_item_0.r15.Value = v40;
        if not l_item_0.children then
            table.insert(v45[v41.scriptId], l_item_0.Path.diagnostic.diagnosticId);
        else
            l_item_0.r15.Value = v40;
            for _, v47 in l_item_0.children, nil, nil do
                if v47.r15.Value ~= v40 then
                    v47.r15.Value = v40;
                    table.insert(v45[v41.scriptId], v47.Path.diagnostic.diagnosticId);
                end;
            end;
        end;
        for _, v49 in v42, nil, nil do
            if not (not v44 or not v44[v18.getItemId(v49)]) then
                v45[v49.Path.scriptId] = v45[v49.Path.scriptId] or {};
                for _, v51 in v49.children, nil, nil do
                    table.insert(v45[v49.Path.scriptId], v51.Path.diagnostic.diagnosticId);
                end;
            end;
        end;
        for v52, v53 in v45, nil, nil do
            v33.props.ApplyResolutions(v52, v53, v40, v33.props.ScriptConversionContext);
        end;
        v33:setState({
            Items = v42,
            Selection = {}
        });
    end;
    v33.onCellEdited = function(v54, v55, v56)
        if v56 == 1 then
            v33.onCheckboxEdited(v54, v55);
            return ;
        elseif v56 == 6 then
            v33.onSuggestionApplied(v54.Id, v55, true);
            return ;
        else
            assert(false, "Unknown column changed");
            return ;
        end;
    end;
    v33.onCellAction = function(v57, v58)
        local l_props_0 = v33.props;
        if v57 == v24.ScriptMenuActions.ShowInExplorer then
            l_Selection_0:Set({
                (l_props_0.ScriptConversionContext:getScriptInstanceFromGUID(v58.scriptId))
            });
            return ;
        elseif v57 == v24.ScriptMenuActions.GoToScript then
            v26.goToScript(v58.scriptId, if not v58.diagnostic then nil else v58.diagnostic.range, l_props_0.ScriptConversionContext);
            return ;
        elseif v57 == v24.ScriptMenuActions.RevertScript then
            v33.onSuggestionApplied(v26.UNASSIGNED, v58, false);
            return ;
        else
            if v57 == v24.ScriptMenuActions.SelectAllSimilar then
                local v60 = {};
                for v61 in l_props_0.diagnostics, nil, nil do
                    v60[v18.makeItemId(v61, v58.issueType, v58.instanceName)] = l_join_0(v58, {
                        scriptId = v61
                    });
                end;
                v33:setState({
                    Selection = v60
                });
            end;
            return ;
        end;
    end;
    v33.onExpansionChange = function(v62)
        v33:setState({
            Expansion = l_join_0(v33.state.Expansion, v62)
        });
    end;
    v33.ExpandAllEventConn = nil;
end;
v32.getDerivedStateFromProps = function(v63, v64)
    if not (v63.diagnostics == v64._Ref.diagnostics) or v63.SearchFilters ~= v64._Ref.SearchFilters then
        local v65 = v18.generateTreeViewItems(v63.diagnostics, v63.ScriptConversionContext, v63.SearchFilters, v64.Selection, v63.Localization);
        if not (not v64.SortIndex or not v64.SortOrder) then
            table.sort(v65, (v18.genSortItems(v29[v64.SortIndex], v64.SortOrder)));
        end;
        return {
            Items = v65,
            _Ref = l_join_0(v64._Ref, {
                diagnostics = v63.diagnostics,
                completedScripts = v63.completedScripts,
                searchFilters = v63.SearchFilters
            })
        };
    else
        return ;
    end;
end;
v32.didMount = function(v66)
    v66.ExpandAllEventConn = v66.props.ExpandTreeView.Event:Connect(function(v67)
        v67 = v67 or nil;
        local v68 = {};
        for _, v70 in v66.state.Items, nil, nil do
            v68[v18.getItemId(v70)] = v67;
        end;
        v66:setState({
            Expansion = v68
        });
    end);
end;
v32.willUnmount = function(v71)
    v71.ExpandAllEventConn:Disconnect();
    v71.ExpandAllEventConn = nil;
end;
v32.render = function(v72)
    local _ = v72.state;
    local l_props_1 = v72.props;
    local l_Localization_1 = l_props_1.Localization;
    return v2.createElement(l_TreeTable_0, {
        LayoutOrder = l_props_1.LayoutOrder,
        Size = l_props_1.Size,
        SortIndex = v72.state.SortIndex,
        SortOrder = v72.state.SortOrder,
        SortChildren = v72.state.SortChildren,
        OnSortChange = v72.onSortChange,
        Columns = l_map_0(v29, function(v76, v77)
            return l_join_0(v76, {
                Name = not v76.Name and "" or l_Localization_1:getText("ScriptPane", v76.Name),
                Width = v72.state.Sizes[v77]
            });
        end),
        OnExpansionChange = v72.onExpansionChange,
        CellComponent = v16,
        Expansion = v72.state.Expansion,
        Selection = v72.state.Selection,
        RootItems = v72.state.Items,
        GetChildren = v31,
        GetItemId = v18.getItemId,
        OnCellEdited = v72.onCellEdited,
        OnCellAction = v72.onCellAction,
        Scroll = true,
        ClampSize = true,
        UseDeficit = true,
        Renderers = {
            ScriptLink = v17.ScriptLinkCell,
            Dropdown = v17.DropdownCell,
            Status = v17.StatusCell
        }
    });
end;
return (v3.connect(function(v78, _)
    return {
        diagnostics = v78.ScriptConversion.diagnostics
    };
end, function(v80)
    return {
        ApplyResolutions = function(v81, v82, v83, v84)
            v80(v25(v81, v82, v83, v84));
        end
    };
end)((l_withContext_0({
    Analytics = l_Analytics_0,
    Localization = l_Localization_0,
    Stylizer = l_Stylizer_0,
    ScriptConversionContext = v9
})(v32))));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local v2 = require(l_script_FirstAncestor_0.Packages.Roact);
local l_ContextServices_0 = v1.ContextServices;
local l_UI_0 = v1.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_Checkbox_0 = l_UI_0.Checkbox;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_IconButton_0 = l_UI_0.IconButton;
local l_LayoutOrderIterator_0 = v1.Util.LayoutOrderIterator;
local v10 = v2.PureComponent:extend("SelectAllRow");
v10.render = function(v11)
    local l_props_0 = v11.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local v15 = l_props_0.LayoutOrder or -1;
    local v16 = l_props_0.Padding or l_Stylizer_0.Padding;
    local v17 = l_props_0.Spacing or l_Stylizer_0.Spacing;
    local v18 = l_props_0.RowHeight or l_Stylizer_0.RowHeight;
    local l_IsChecked_0 = l_props_0.IsChecked;
    local l_OnCheckboxClick_0 = l_props_0.OnCheckboxClick;
    local l_OnResetPlugin_0 = l_props_0.OnResetPlugin;
    local v22 = l_LayoutOrderIterator_0.new();
    return v2.createElement(l_Pane_0, {
        Size = UDim2.new(1, 0, 0, v18),
        LayoutOrder = v15
    }, {
        v2.createElement(l_Pane_0, {
            Size = UDim2.new(1, 0, 0, v18),
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Layout = Enum.FillDirection.Horizontal,
            Padding = v16,
            Spacing = v17
        }, {
            Checkbox = v2.createElement(l_Checkbox_0, {
                LayoutOrder = v22:getNextOrder(),
                Checked = l_IsChecked_0,
                OnClick = l_OnCheckboxClick_0
            }),
            SelectAllLabel = v2.createElement(l_TextLabel_0, {
                LayoutOrder = v22:getNextOrder(),
                Text = l_Localization_0:getText("ScriptConversion", "SelectAll"),
                Style = l_Stylizer_0.TextConfig,
                AutomaticSize = Enum.AutomaticSize.XY
            })
        }),
        v2.createElement(l_IconButton_0, {
            LeftIcon = l_Stylizer_0.RefreshButton.Icon,
            Cursor = "PointingHand",
            OnClick = l_OnResetPlugin_0,
            Size = l_Stylizer_0.RefreshButton.Size,
            AnchorPoint = Vector2.new(1, 0.5),
            Position = UDim2.new(1, -16, 0.5, 0),
            BackgroundStyle = l_Stylizer_0.RefreshButton.BackgroundStyle,
            TooltipText = l_Localization_0:getText("Summary", "Refresh")
        })
    });
end;
return (l_ContextServices_0.withContext({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v10));


local l_Selection_0 = game:GetService("Selection");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local v3 = require(l_script_FirstAncestor_0.Packages.Roact);
local v4 = require(l_script_FirstAncestor_0.Packages.Cryo);
local l_ContextServices_0 = v2.ContextServices;
local l_UI_0 = v2.UI;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Image_0 = l_UI_0.Image;
local l_Pane_0 = l_UI_0.Pane;
local l_showContextMenu_0 = l_UI_0.showContextMenu;
local l_Table_0 = l_UI_0.Table;
local l_StatusTableData_0 = require(l_script_FirstAncestor_0.Src.Resources.Constants).StatusTableData;
local v13 = v3.PureComponent:extend("StatusTable");
local v14 = v3.PureComponent:extend("CellComponent");
v14.render = function(v15)
    local l_props_0 = v15.props;
    local l_Width_0 = l_props_0.Width;
    local l_Row_0 = l_props_0.Row;
    local l_Style_0 = l_props_0.Style;
    local l_ColumnIndex_0 = l_props_0.ColumnIndex;
    local v21 = {
        Layout = Enum.FillDirection.Horizontal,
        VerticalAlignment = Enum.VerticalAlignment.Center,
        LayoutOrder = l_ColumnIndex_0,
        Style = "Box",
        BackgroundColor = if not l_props_0.Emphasis then l_Style_0.BackgroundEven else l_Style_0.BackgroundOdd,
        BorderSizePixel = 1,
        BorderColor3 = l_Style_0.Border,
        Size = UDim2.new(l_Width_0.Scale, l_Width_0.Offset, 1, 0)
    };
    if l_ColumnIndex_0 == l_StatusTableData_0.TEXT_COLUMN_INDEX then
        return v3.createElement(l_Pane_0, v4.Dictionary.join(v21, {
            Padding = {
                Left = 24
            },
            HorizontalAlignment = Enum.HorizontalAlignment.Left
        }), {
            Text = v3.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = 2,
                Text = l_Row_0.text
            })
        });
    else
        return v3.createElement(l_Pane_0, v4.Dictionary.join(v21, {
            HorizontalAlignment = Enum.HorizontalAlignment.Center
        }), {
            Image = v3.createElement(l_Image_0, {
                Size = UDim2.fromOffset(16, 16),
                Image = not l_Row_0.complete and "rbxasset://textures/R15Migrator/Icon_Error_Checkmark.png" or "rbxasset://textures/R15Migrator/Icon_Checkmark.png"
            })
        });
    end;
end;
v13.init = function(v22)
    v22.showMenu = function(v23)
        local l_props_1 = v22.props;
        l_showContextMenu_0(l_props_1.Plugin:get(), {
            {
                Text = l_props_1.Localization:getText("StatusTable", "RevealInExplorer"),
                Enabled = v23.target ~= nil,
                OnItemClicked = function()
                    l_Selection_0:Set({
                        v23.target
                    });
                end
            }
        });
    end;
end;
v13.render = function(v25)
    local l_props_2 = v25.props;
    local l_Rows_0 = l_props_2.Rows;
    local l_Title_0 = l_props_2.Title;
    local l_LayoutOrder_0 = l_props_2.LayoutOrder;
    local l_OnClick_0 = l_props_2.OnClick;
    local l_HeaderCellComponent_0 = l_props_2.HeaderCellComponent;
    local l_Localization_0 = l_props_2.Localization;
    local l_Stylizer_0 = l_props_2.Stylizer;
    local l_RowHeight_0 = l_Stylizer_0.RowHeight;
    local l_MaxTableHeight_0 = l_Stylizer_0.MaxTableHeight;
    local l_ColumnOffset_0 = l_Stylizer_0.ColumnOffset;
    local v37 = (#l_Rows_0 + 1) * l_RowHeight_0;
    return v3.createElement(l_Table_0, {
        Size = UDim2.new(1, 0, 0, (math.min(l_MaxTableHeight_0, v37))),
        Scroll = l_MaxTableHeight_0 < v37,
        Rows = l_Rows_0,
        RowHeight = l_RowHeight_0,
        ColumnHeaderHeight = l_RowHeight_0,
        Columns = {
            [l_StatusTableData_0.TEXT_COLUMN_INDEX] = {
                Name = l_Title_0,
                Width = UDim.new(1, -l_ColumnOffset_0)
            },
            [l_StatusTableData_0.STATUS_COLUMN_INDEX] = {
                Name = l_Localization_0:getText("StatusTable", "Status"),
                Width = UDim.new(0, l_ColumnOffset_0)
            }
        },
        HeaderCellComponent = l_HeaderCellComponent_0,
        CellComponent = v14,
        LayoutOrder = l_LayoutOrder_0,
        OnSelectRow = l_OnClick_0,
        OnSortChange = l_OnClick_0,
        OnRightClickRow = v25.showMenu
    });
end;
return (l_ContextServices_0.withContext({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin
})(v13));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.Framework);
local v2 = require(l_script_FirstAncestor_0.Packages.Roact);
local l_ContextServices_0 = v1.ContextServices;
local l_UI_0 = v1.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TextWithLinks_0 = l_UI_0.TextWithLinks;
local v7 = v2.PureComponent:extend("TabInstructions");
v7.render = function(v8)
    local l_props_0 = v8.props;
    local l_Height_0 = l_props_0.Height;
    local l_LinkMap_0 = l_props_0.LinkMap;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local l_Message_0 = l_props_0.Message;
    local l_Stylizer_0 = l_props_0.Stylizer;
    return v2.createElement(l_Pane_0, {
        LayoutOrder = l_LayoutOrder_0,
        Size = UDim2.new(1, 0, 0, l_Height_0),
        Layout = Enum.FillDirection.Vertical,
        HorizontalAlignment = Enum.HorizontalAlignment.Center,
        VerticalAlignment = Enum.VerticalAlignment.Center,
        Padding = l_Stylizer_0.Padding
    }, {
        InstructionsLabel = v2.createElement(l_TextWithLinks_0, {
            Text = l_Message_0,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            TextWrapped = true,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center,
            TextProps = {
                TextSize = l_Stylizer_0.TextSize,
                Font = l_Stylizer_0.Font
            },
            LinkMap = l_LinkMap_0 or {}
        })
    });
end;
return (l_ContextServices_0.withContext({
    Stylizer = l_ContextServices_0.Stylizer
})(v7));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local _ = v2.Dash.join;
local l_UI_0 = v2.UI;
local _ = l_UI_0.IconButton;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local _ = l_script_FirstAncestor_0.Src.Actions;
local _ = l_script_FirstAncestor_0.Src.Components;
local _ = require(l_script_FirstAncestor_0.Src.Types);
local _ = l_script_FirstAncestor_0.Src.Util;
local v14 = v1.PureComponent:extend("TagComponent");
v14.render = function(v15)
    local _ = v15.state;
    local l_props_0 = v15.props;
    return v1.createElement(l_Pane_0, {
        Padding = l_props_0.Padding,
        AutomaticSize = Enum.AutomaticSize.XY,
        LayoutOrder = l_props_0.LayoutOrder,
        Layout = Enum.FillDirection.Horizontal,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        VerticalAlignment = Enum.VerticalAlignment.Center,
        Padding = {
            Left = 6,
            Right = 6
        },
        Spacing = 6,
        [v1.Tag] = "Secondary"
    }, {
        Label = v1.createElement(l_TextLabel_0, {
            AutomaticSize = Enum.AutomaticSize.XY,
            LayoutOrder = 1,
            Text = l_props_0.Tag.Label
        }),
        CloseButton = v1.createElement("ImageButton", {
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            Size = UDim2.fromOffset(12, 12),
            Image = "rbxasset://textures/StudioSharedUI/clear-hover.png",
            [v1.Event.MouseButton1Click] = function()
                v15.props.OnClosed(l_props_0.Tag);
            end
        })
    });
end;
return (l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Stylizer = v2.Style.Stylizer
})(v14));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("R15Migrator");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local _ = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Dash_0 = v3.Dash;
local l_append_0 = l_Dash_0.append;
local l_join_0 = l_Dash_0.join;
local l_keys_0 = l_Dash_0.keys;
local l_map_0 = l_Dash_0.map;
local l_Pane_0 = v3.UI.Pane;
local _ = l_script_FirstAncestor_0.Src.Actions;
local v13 = require(script.TagComponent);
local _ = require(l_script_FirstAncestor_0.Src.Types);
local _ = l_script_FirstAncestor_0.Src.Util;
local v16 = v1.PureComponent:extend("TagsBar");
v16.init = function(v17)
    v17.state = {
        tags = {},
        _Ref = {
            Filters = nil
        }
    };
end;
local function v24(v18, v19, v20, v21)
    local v22 = l_keys_0(v19[v20]);
    table.sort(v22);
    l_append_0(v18, l_map_0(v22, function(v23)
        return {
            Label = string.format("%s %s", v20, if not (v23 ~= "Assigned") or v23 == "Unassigned" then v21:getText("ScriptPane", v23) else v23),
            Data = {
                RigType = v20,
                InstanceName = v23
            }
        };
    end));
end;
local function _(v25, v26)
    local v27 = {};
    v24(v27, v25.rigFilters, "R6", v26);
    v24(v27, v25.rigFilters, "R15", v26);
    return v27;
end;
v16.getDerivedStateFromProps = function(v29, v30)
    if v29.Filters ~= v30._Ref.Filters then
        local l_Filters_0 = v29.Filters;
        local l_Localization_0 = v29.Localization;
        local v33 = {};
        v24(v33, l_Filters_0.rigFilters, "R6", l_Localization_0);
        v24(v33, l_Filters_0.rigFilters, "R15", l_Localization_0);
        return {
            tags = v33,
            _Ref = l_join_0(v30._Ref, {
                Filters = v29.Filters
            })
        };
    else
        return ;
    end;
end;
v16.render = function(v34)
    local l_state_0 = v34.state;
    local l_props_0 = v34.props;
    return v1.createElement(l_Pane_0, {
        LayoutOrder = l_props_0.LayoutOrder,
        Size = l_props_0.Size,
        Layout = Enum.FillDirection.Horizontal,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        VerticalAlignment = Enum.VerticalAlignment.Center,
        Spacing = 4,
        ClipsDescendants = true
    }, (l_map_0(l_state_0.tags, function(v37, v38)
        return v1.createElement(v13, {
            LayoutOrder = v38,
            Tag = v37,
            OnClosed = l_props_0.OnFilterClosed
        });
    end)));
end;
return (l_withContext_0({
    Analytics = l_ContextServices_0.Analytics,
    Localization = l_ContextServices_0.Localization,
    Stylizer = v3.Style.Stylizer
})(v16));


local l_HttpService_0 = game:GetService("HttpService");
local l_ScriptEditorService_0 = game:GetService("ScriptEditorService");
local v2 = require(script:FindFirstAncestor("R15Migrator").Packages.Framework).ContextServices.ContextItem:extend("ScriptConversionContext");
v2.new = function(v3)
    local v4 = {};
    setmetatable(v4, v2);
    v4._scripts = {};
    v4._scriptGUIDs = {};
    v4._connections = {};
    v4._scriptDestroyingCallback = v3;
    v4._revertedSources = {};
    return v4;
end;
v2.initConnections = function(v5, v6, v7)
    v5._connections[v7] = v6.AncestryChanged:Connect(function(_, v9)
        if v9 == nil then
            v5._scriptDestroyingCallback(v6);
            v5._connections[v7]:Disconnect();
            v5._connections[v7] = nil;
            v5._scripts[v6] = nil;
            v5._scriptGUIDs[v7] = nil;
        end;
    end);
end;
v2.findScriptGUID = function(v10, v11)
    return v10._scripts[v11];
end;
v2.addOrFindScript = function(v12, v13)
    local v14 = v12:findScriptGUID(v13);
    if not v12:findScriptGUID(v13) then
        v14 = l_HttpService_0:GenerateGUID(true);
        v12._scripts[v13] = v14;
        v12._scriptGUIDs[v14] = v13;
        v12:initConnections(v13, v14);
    end;
    return v14;
end;
v2.closeScriptIfOpen = function(v15, v16)
    local v17 = v15:getScriptInstanceFromGUID(v16);
    if v17 then
        local l_l_ScriptEditorService_0_ScriptDocument_0 = l_ScriptEditorService_0:FindScriptDocument(v17);
        if l_l_ScriptEditorService_0_ScriptDocument_0 then
            l_l_ScriptEditorService_0_ScriptDocument_0:CloseAsync();
        end;
        return ;
    else
        return ;
    end;
end;
v2.setRevertedScriptSource = function(v19, v20)
    v19._revertedSources[v20] = l_ScriptEditorService_0:GetEditorSource((v19:getScriptInstanceFromGUID(v20)));
end;
v2.getRevertedScriptSource = function(v21, v22)
    return v21._revertedSources[v22];
end;
v2.getScriptInstanceFromGUID = function(v23, v24)
    return v23._scriptGUIDs[v24];
end;
return v2;


local l_StudioFixPluginWidgetLocalizedIds_0 = game:GetFastFlag("StudioFixPluginWidgetLocalizedIds");
local l_R15MigDocumentChanges_0 = game:GetFastFlag("R15MigDocumentChanges");
local l_ScriptEditorService_0 = game:GetService("ScriptEditorService");
local l_PluginDebugService_0 = game:GetService("PluginDebugService");
local l_Parent_0 = script.Parent.Parent;
local _ = require(l_Parent_0.Src.Types);
local v6 = require(l_Parent_0.Packages.Roact);
local v7 = require(l_Parent_0.Packages.Rodux);
local v8 = require(l_Parent_0.Packages.Framework);
local l_DockWidget_0 = v8.UI.DockWidget;
local l_ContextServices_0 = v8.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 l_CrossPluginCommunication_0 = v8.Util.CrossPluginCommunication;
local v15 = require(l_Parent_0.Src.Actions.SetScriptAnalyticsSent);
local v16 = require(l_Parent_0.Src.Components.MainView);
local v17 = require(l_Parent_0.Src.Components.LoadingScreen);
local v18 = require(l_Parent_0.Src.Components.InitialFlow);
local l_Contexts_0 = l_Parent_0.Src.Contexts;
local v20 = require(l_Contexts_0.ScriptConversionContext);
local v21 = require(l_Contexts_0.NetworkInterface);
local l_Thunks_0 = l_Parent_0.Src.Thunks;
local v23 = require(l_Thunks_0.OnDiagnosticsUpdated);
local v24 = require(l_Thunks_0.UpdateDiagnosticsRanges);
local v25 = require(l_Thunks_0.ScanAllAnimations);
local v26 = require(l_Thunks_0.ResetAll);
local v27 = require(l_Thunks_0.CheckAvatarType);
local v28 = require(l_Parent_0.Src.Actions.SuccessfullyPublished);
local v29 = require(l_Parent_0.Src.Actions.SetExperienceData);
local v30 = require(l_Parent_0.Src.Actions.SetAllTabsData);
local v31 = require(l_Parent_0.Src.Actions.SetSelectedTab);
local v32 = require(l_Parent_0.Src.Util.ScriptAnalysis.ScriptScanner);
local v33 = require(l_Parent_0.Src.Util.ScriptAnalysis.Constants);
local v34 = require(l_Parent_0.Src.Util.AnalyticsGlobals);
local v35 = require(l_Parent_0.Src.Util.PluginSettings);
local v36 = require(l_Parent_0.Src.Util.SaveInterface);
local v37 = require(l_Parent_0.Src.Util.TabsData);
local v38 = require(l_Parent_0.Src.Util.getExperienceData);
local v39 = require(l_Parent_0.Src.Util.getLocalDateTime);
local v40 = require(l_Parent_0.Src.Resources.Constants);
local v41 = require(l_Parent_0.Src.Reducers.MainReducer);
local v42 = require(l_Parent_0.Src.Resources.MakeTheme);
local v43 = require(l_Parent_0.Src.Resources.createAnalyticsHandlers);
local l_SourceStrings_0 = l_Parent_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_Parent_0.Src.Resources.Localization.LocalizedStrings;
local v46 = v6.PureComponent:extend("MainPlugin");
v46.initToolbarAndButton = function(v47, v48)
    v47.toolbar = v48.PluginLoaderContext.toolbar;
    v47.mainButton = v48.PluginLoaderContext.mainButton;
    v47.mainButton:SetActive(v47.state.enabled);
    v48.PluginLoaderContext.mainButtonClickedSignal:Connect(v47.toggleEnabled);
end;
v46.init = function(v49, v50)
    v49.state = {
        enabled = false,
        scanComplete = false,
        isRescan = false
    };
    v49.setScriptDocumentChangedEnabled = function(v51)
        if not v51 or v49.textDocumentDidChangeConnection then
            if not (v51 or not v49.textDocumentDidChangeConnection) then
                v49.textDocumentDidChangeConnection:Disconnect();
                v49.textDocumentDidChangeConnection = nil;
            end;
            return ;
        else
            v49.textDocumentDidChangeConnection = l_ScriptEditorService_0.TextDocumentDidChange:Connect(v49.onScriptChangedCallback);
            return ;
        end;
    end;
    v49.setScriptAnalysisEnabled = function(v52)
        local v53 = true;
        local v54 = nil;
        if not v52 then
            if l_ScriptEditorService_0:IsScriptAnalysisCallbackRegistered("R15Migrator") then
                local l_status_0, l_result_0 = pcall(function()
                    l_ScriptEditorService_0:DeregisterScriptAnalysisCallback("R15Migrator");
                end);
                v53 = l_status_0;
                v54 = l_result_0;
            end;
        elseif not l_ScriptEditorService_0:IsScriptAnalysisCallbackRegistered("R15Migrator") then
            local l_status_1, l_result_1 = pcall(function()
                l_ScriptEditorService_0:RegisterScriptAnalysisCallback("R15Migrator", 1, v49.onScriptAnalysisCallback);
            end);
            v53 = l_status_1;
            v54 = l_result_1;
        end;
        if not v53 then
            warn(v54);
        end;
    end;
    v49.startScan = function()
        v49.store:dispatch(v25(v49.analytics, v49.networkInterface, function()
            if v49.state.isRescan then
                v49.setScriptAnalysisEnabled(false);
            end;
            v49.setScriptAnalysisEnabled(true);
            v49:setState({
                scanComplete = true
            });
            v49.store:dispatch(v15(false));
            game:GetService("Workspace"):SetAvatarUnificationMode(Enum.AvatarUnificationMode.Enabled);
        end));
    end;
    v49.resetPlugin = function()
        v49:setState({
            isRescan = true,
            scanComplete = false
        });
        v49.store:dispatch(v26());
    end;
    v49.toggleEnabled = function()
        v49:setState(function(v59)
            return {
                enabled = not v59.enabled
            };
        end);
        if v49.state.enabled then
            v34.StartTime = os.time();
            if l_R15MigDocumentChanges_0 then
                v49.setScriptDocumentChangedEnabled(true);
            end;
        end;
        if not (not v49.state.scanComplete and v49.state.enabled) then
            v49.setScriptAnalysisEnabled(v49.state.enabled);
        end;
    end;
    v49.onClose = function()
        v49:setState({
            enabled = false
        });
        v49.setScriptAnalysisEnabled(false);
        if l_R15MigDocumentChanges_0 then
            v49.setScriptDocumentChangedEnabled(false);
        end;
        v49.analytics:getHandler("onPluginClosed")();
    end;
    v49.onRestore = function(v60)
        v49:setState({
            enabled = v60
        });
        if not (not v49.state.scanComplete and v49.state.enabled) then
            v49.setScriptAnalysisEnabled(v49.state.enabled);
        end;
    end;
    v49.includeScript = function(v61)
        return ((v61 and not v61:IsDescendantOf(l_PluginDebugService_0)) and not v36.isDescendantOfSaveFolder(v61)) and not v61:GetAttribute(v33.AttributeUnificationScriptName);
    end;
    v49.onScriptChangedCallback = function(v62, v63)
        local l_v62_Script_0 = v62:GetScript();
        if v49.includeScript(l_v62_Script_0) then
            v49.store:dispatch(v24(v49.scriptConversionContext, l_v62_Script_0, v63));
        end;
    end;
    v49.onScriptAnalysisCallback = function(v65)
        if not l_R15MigDocumentChanges_0 then
            if not v65.script:IsDescendantOf(l_PluginDebugService_0) and not v36.isDescendantOfSaveFolder(v65.script) then
                if v65.script:GetAttribute(v33.AttributeUnificationScriptName) then
                    return {
                        diagnostics = {}
                    };
                end;
            else
                return {
                    diagnostics = {}
                };
            end;
        elseif not v49.includeScript(v65.script) then
            return {
                diagnostics = {}
            };
        end;
        local v66 = v32:ScanScript(v65.script, v49.localization);
        v49.store:dispatch(v23(v49.scriptConversionContext, v65.script, v66));
        if v66:GetSize() > 0 then
            return {
                diagnostics = v66:GetDataForLinter()
            };
        else
            return {
                diagnostics = {}
            };
        end;
    end;
    v49.onScriptDestroyingCallback = function(v67)
        v49.store:dispatch(v23(v49.scriptConversionContext, v67));
    end;
    v49.onWidgetEnabledChanged = function(v68)
        v49:setState({
            enabled = v68.Enabled
        });
        if not (not v49.state.scanComplete and v49.state.enabled) then
            v49.setScriptAnalysisEnabled(v49.state.enabled);
        end;
    end;
    v49.store = v7.Store.new(v41, nil, {
        v7.thunkMiddleware
    }, nil);
    v49.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "R15Migrator"
    });
    v49.analytics = l_ContextServices_0.Analytics.new(v43);
    v49.scriptConversionContext = v20.new(v49.onScriptDestroyingCallback);
    v49.networkInterface = v21.new();
    v49.api = l_ContextServices_0.API.new();
    v49.communication = l_CrossPluginCommunication_0.new(v40.CrossPluginCommunicationName);
    v49.communication:Connect(v40.CrossPluginCommunicationInstructions.Open, function()
        if not v49.state.enabled then
            v49.toggleEnabled();
        end;
    end);
    local function v73()
        local v69 = v36.getPublishTime();
        local v70 = v69 ~= nil;
        assert(not v70 or v49.isR15ConvertedExperience);
        v49.store:dispatch(v28(v70));
        v49.store:dispatch(v30((v37.getAllTabsData(v49.localization, function(v71)
            if not v70 then
                return true;
            else
                return v71 == v37.Summary;
            end;
        end))));
        v49.store:dispatch(v31(v37.Summary));
        if v70 then
            v38(game.GameId, v49.api:get(), function(v72)
                if v72 then
                    v72.publishedDateTime = v39(v69);
                end;
                v49.store:dispatch(v29(v72));
            end);
            return ;
        else
            return ;
        end;
    end;
    v49.isR15ConvertedExperience = v35.IsR15ConvertedExperience:getBooleanSetting(v50.Plugin, game.GameId);
    v73();
    v49.communication:Connect(v40.CrossPluginCommunicationInstructions.Published, function()
        v36.setPublishTime(DateTime.now());
        v73();
    end);
    v50.Plugin.Unloading:Connect(function()
        if v49.state.enabled then
            v49.setScriptAnalysisEnabled(false);
            if l_R15MigDocumentChanges_0 then
                v49.setScriptDocumentChangedEnabled(false);
            end;
            v49.analytics:getHandler("onPluginClosed")();
        end;
        v49.communication:cleanup();
    end);
    v49:initToolbarAndButton(v50);
    v49.store:dispatch(v27(v49.networkInterface));
end;
v46.renderMain = function(v74)
    local l_scanComplete_0 = v74.state.scanComplete;
    if not v74.isR15ConvertedExperience then
        return {
            InitialFlow = v6.createElement(v18, {})
        };
    else
        return {
            MainView = if not l_scanComplete_0 then nil else v6.createElement(v16, {
                OnResetPlugin = v74.resetPlugin
            }),
            LoadingScreen = if l_scanComplete_0 then nil else v6.createElement(v17, {
                StartScan = v74.startScan
            })
        };
    end;
end;
v46.render = function(v76)
    local l_props_0 = v76.props;
    local l_state_0 = v76.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(v76.store),
        l_Mouse_0.new(l_Plugin_1:getMouse()),
        v42(),
        v76.localization,
        v76.analytics,
        v76.scriptConversionContext,
        v76.networkInterface,
        v76.api
    }, {
        MainWidget = v6.createElement(l_DockWidget_0, {
            Id = if not l_StudioFixPluginWidgetLocalizedIds_0 then nil else "R15Migrator",
            Enabled = l_state_0.enabled,
            Title = v76.localization:getText("Plugin", "Name"),
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            OnClose = v76.onClose,
            ShouldRestore = true,
            Widget = l_props_0.PluginLoaderContext.mainDockWidget,
            OnWidgetRestored = v76.onRestore,
            Size = Vector2.new(508, 640),
            InitialDockState = Enum.InitialDockState.Left,
            MinSize = Vector2.new(508, 640),
            [v6.Change.Enabled] = v76.onWidgetEnabledChanged
        }, v76:renderMain())
    });
end;
v46.didUpdate = function(v80)
    v80.mainButton:SetActive(v80.state.enabled);
end;
return v46;


local l_HttpService_0 = game:GetService("HttpService");
local v1 = {
    Npcs = {}
};
v1.AddNpc = function(v2)
    local v3 = l_HttpService_0:GenerateGUID();
    v1.SetNpcWithId(v2, v3);
    return v3;
end;
v1.SetNpcWithId = function(v4, v5)
    v1.Npcs[v5] = v4;
end;
v1.GetNpcFromId = function(v6)
    return v1.Npcs[v6];
end;
v1.Reset = function()
    v1.Npcs = {};
end;
return v1;