local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Core_0 = l_Parent_1.Core;
local v4 = require(l_Parent_2.Roact);
local v5 = require(l_Parent_2.t);
local v6 = require(l_Parent_2.Cryo);
local v7 = require(l_Core_0.Control.Interactable);
local v8 = require(l_Core_0.Control.Enum.ControlState);
local v9 = require(l_Core_0.Style.withStyle);
local v10 = require(l_Parent_1.Core.Style.useStyle);
local v11 = require(l_Parent_0.SelectionImage.withSelectionCursorProvider);
local v12 = require(l_Parent_0.SelectionImage.CursorKind);
local v13 = require(l_Core_0.ImageSet.ImageSetComponent);
local v14 = require(l_Parent_0.Loading.ShimmerPanel);
local v15 = require(l_Parent_0.Constant.IconSize);
local v16 = require(l_Core_0.Text.GenericTextLabel.GenericTextLabel);
local v17 = require(l_Core_0.ImageSet.Validator.validateImage);
local v18 = require(l_Core_0.Button.getContentStyle);
local v19 = require(l_Core_0.Style.Validator.validateTypographyInfo);
local v20 = require(l_Core_0.Style.Validator.validateColorInfo);
local v21 = require(l_Parent_0.SelectionCursor.useCursorByType);
local v22 = require(l_Parent_0.SelectionCursor.CursorType);
local v23 = require(l_Parent_1.UIBloxConfig);
local v24 = require(script.Parent.StyleDefaults);
local v25 = v4.PureComponent:extend("DropdownMenuCell");
local function v29(v26, v27)
    local v28 = v26[v27] or v26[v8.Default];
    return {
        Color = v28.Color,
        Transparency = v28.Transparency
    };
end;
local function _(v30, v31, v32, v33, v34)
    local v35 = v30(v31, v32, v33);
    if not (not (v32 ~= v8.Disabled and v32 ~= v8.Pressed) or not v34) then
        v35.Transparency = 0.5 * v35.Transparency + 0.5;
    end;
    return v35;
end;
local function _(v37, v38, v39, v40, v41, v42)
    local v43 = v37(v38, v39, v40);
    if not (not (v39 ~= v8.Disabled and v39 ~= v8.Pressed) or not v41 and v42) then
        v43.Transparency = 0.5 * v43.Transparency + 0.5;
    end;
    return v43;
end;
v25.init = function(v45)
    v45:setState({
        controlState = v8.Initialize
    });
    v45.onStateChanged = function(v46, v47)
        v45:setState({
            controlState = v47
        });
        if v45.props.onStateChanged then
            v45.props.onStateChanged(v46, v47);
        end;
    end;
end;
local v48 = v5.union(v5.interface({
    [v8.Default] = v5.string
}), v5.interface({
    [v8.Default] = v20
}));
v25.validateProps = v5.interface({
    icon = v5.optional(v17),
    text = v5.optional(v5.string),
    textFont = v5.optional(v19),
    buttonImage = v17,
    buttonStateColorMap = v48,
    contentStateColorMap = v48,
    textStateColorMap = v5.optional(v48),
    iconStateColorMap = v5.optional(v48),
    isDisabled = v5.optional(v5.boolean),
    isActivated = v5.optional(v5.boolean),
    hasContent = v5.optional(v5.boolean),
    isLoading = v5.optional(v5.boolean),
    onActivated = v5.callback,
    onStateChanged = v5.optional(v5.callback),
    userInteractionEnabled = v5.optional(v5.boolean),
    iconSize = v5.optional(v5.number),
    containerPadding = v5.optional(v5.strictInterface({
        left = v5.number,
        right = v5.number
    })),
    iconTextSpacing = v5.optional(v5.number),
    border = v5.optional(v5.strictInterface({
        cornerRadius = v5.number,
        size = v5.number
    })),
    enableTokenOverride = v5.optional(v5.boolean),
    selectionOrder = v5.optional(v5.number),
    selectionCursor = v5.optional(v5.any)
});
v25.defaultProps = {
    isDisabled = false,
    isLoading = false,
    SliceCenter = Rect.new(8, 8, 9, 9),
    iconSize = v15.Regular,
    containerPadding = {
        left = 12,
        right = 20
    },
    iconTextSpacing = 5,
    border = {
        cornerRadius = 8,
        size = 1
    },
    enableTokenOverride = false
};
v25.render = function(v49)
    return v9(function(v50)
        return v11(function(v51)
            assert(v5.table(v50), "Style provider is missing.");
            local l_controlState_0 = v49.state.controlState;
            local l_text_0 = v49.props.text;
            local l_icon_0 = v49.props.icon;
            local l_iconSize_0 = v49.props.iconSize;
            local l_containerPadding_0 = v49.props.containerPadding;
            local l_iconTextSpacing_0 = v49.props.iconTextSpacing;
            local l_isLoading_0 = v49.props.isLoading;
            local l_isDisabled_0 = v49.props.isDisabled;
            local l_buttonStateColorMap_0 = v49.props.buttonStateColorMap;
            local l_contentStateColorMap_0 = v49.props.contentStateColorMap;
            local v62 = v49.props.textStateColorMap or l_contentStateColorMap_0;
            local v63 = v49.props.iconStateColorMap or l_contentStateColorMap_0;
            if l_isLoading_0 then
                l_isDisabled_0 = true;
            end;
            local v64 = v49.props.selectionCursor or v51 and v51(v12.RoundedRectNoInset);
            local v65 = nil;
            v65 = if not not v23.enableNewMenuLayout and v49.props.enableTokenOverride then v29 else v18;
            local l_v65_0 = v65;
            local l_v50_0 = v50;
            local l_isActivated_0 = v49.props.isActivated;
            local v69 = l_v65_0(l_buttonStateColorMap_0, l_controlState_0, l_v50_0);
            if not (not (l_controlState_0 ~= v8.Disabled and l_controlState_0 ~= v8.Pressed) or not l_isActivated_0) then
                v69.Transparency = 0.5 * v69.Transparency + 0.5;
            end;
            local l_v69_0 = v69;
            l_v65_0 = l_text_0;
            if l_v65_0 then
                l_v50_0 = v65;
                l_isActivated_0 = v50;
                v69 = v49.props.isActivated;
                local l_hasContent_0 = v49.props.hasContent;
                local v72 = l_v50_0(v62, l_controlState_0, l_isActivated_0);
                if not (not (l_controlState_0 ~= v8.Disabled and l_controlState_0 ~= v8.Pressed) or not v69 and l_hasContent_0) then
                    v72.Transparency = 0.5 * v72.Transparency + 0.5;
                end;
                l_v65_0 = v72;
            end;
            l_v50_0 = l_icon_0;
            if l_v50_0 then
                l_isActivated_0 = v65;
                v69 = v50;
                local l_isActivated_1 = v49.props.isActivated;
                local v74 = l_isActivated_0(v63, l_controlState_0, v69);
                if (l_controlState_0 ~= v8.Disabled and l_controlState_0 ~= v8.Pressed) and l_isActivated_1 then
                    v74.Transparency = 0.5 * v74.Transparency + 0.5;
                end;
                l_v50_0 = v74;
            end;
            l_isActivated_0 = v49.props.buttonImage;
            v69 = nil;
            v69 = if not not v23.enableNewMenuLayout and v49.props.enableTokenOverride then v49.props.textFont else v50.Font.Header2;
            local v75 = nil;
            v75 = if l_icon_0 ~= nil then (l_iconSize_0 + l_iconTextSpacing_0) + l_containerPadding_0.right else l_containerPadding_0.right;
            local v76 = nil;
            v76 = if not l_isLoading_0 then v49.props[v4.Children] or {
                TextContainer = v4.createElement("Frame", {
                    Size = UDim2.fromScale(1, 1),
                    BackgroundTransparency = 1
                }, {
                    UIListLayout = v4.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Padding = v4.createElement("UIPadding", {
                        PaddingLeft = UDim.new(0, l_containerPadding_0.left)
                    }),
                    Text = if not l_text_0 then nil else v4.createElement(v16, {
                        BackgroundTransparency = 1,
                        Text = l_text_0,
                        fontStyle = v69,
                        colorStyle = l_v65_0,
                        LayoutOrder = 1,
                        Size = UDim2.new(1, -v75, 1, 0),
                        TextTruncate = Enum.TextTruncate.AtEnd,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextWrapped = false
                    })
                }),
                IconContainer = v4.createElement("Frame", {
                    Size = UDim2.fromScale(1, 1),
                    BackgroundTransparency = 1
                }, {
                    UIListLayout = v4.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Right,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Padding = v4.createElement("UIPadding", {
                        PaddingRight = UDim.new(0, l_containerPadding_0.right)
                    }),
                    Icon = not not l_icon_0 and v4.createElement(v13.Label, {
                        Size = UDim2.fromOffset(l_iconSize_0, l_iconSize_0),
                        BackgroundTransparency = 1,
                        Image = l_icon_0,
                        ImageColor3 = l_v50_0.Color,
                        ImageTransparency = l_v50_0.Transparency,
                        LayoutOrder = 2
                    }) or nil
                })
            } else {
                isLoadingShimmer = v4.createElement(v14, {
                    Size = UDim2.fromScale(1, 1)
                })
            };
            local v77 = {
                isActivated = v6.None,
                hasContent = v6.None,
                icon = v6.None,
                text = v6.None,
                textFont = v6.None,
                buttonImage = v6.None,
                buttonStateColorMap = v6.None,
                contentStateColorMap = v6.None,
                textStateColorMap = v6.None,
                iconStateColorMap = v6.None,
                iconSize = v6.None,
                containerPadding = v6.None,
                iconTextSpacing = v6.None,
                border = v6.None,
                enableTokenOverride = v6.None,
                onActivated = v6.None,
                isLoading = v6.None,
                [v4.Children] = v6.None,
                isDisabled = l_isDisabled_0,
                onStateChanged = v49.onStateChanged,
                userInteractionEnabled = v49.props.userInteractionEnabled,
                ScaleType = Enum.ScaleType.Slice,
                BackgroundTransparency = 1,
                AutoButtonColor = false,
                selectionCursor = v6.None,
                SelectionImageObject = v64,
                SelectionOrder = v49.props.selectionOrder,
                [v4.Event.Activated] = v49.props.onActivated
            };
            local v78 = nil;
            local v79 = nil;
            local v80 = nil;
            if not v23.enableNewMenuLayout or not v49.props.enableTokenOverride then
                v80 = UDim2.new(1, 0, 1, 0);
                v79 = {};
                v78 = v6.Dictionary.join(v49.props, {
                    Image = l_isActivated_0,
                    ImageColor3 = l_v69_0.Color,
                    ImageTransparency = l_v69_0.Transparency
                }, v77);
            else
                local l_size_0 = v49.props.border.size;
                v80 = UDim2.new(1, -2 * l_size_0, 1, -2 * l_size_0);
                v79 = {
                    UIStroke = v4.createElement("UIStroke", {
                        Color = l_v69_0.Color,
                        Transparency = l_v69_0.Transparency,
                        Thickness = l_size_0
                    }),
                    UICorner = v4.createElement("UICorner", {
                        CornerRadius = UDim.new(0, v49.props.border.cornerRadius)
                    })
                };
                v78 = v6.Dictionary.join(v49.props, v77);
            end;
            return v4.createElement(v7, v78, {
                ButtonContent = v4.createElement("Frame", {
                    Size = v80,
                    BackgroundTransparency = 1
                }, v6.Dictionary.join(v79, v76))
            });
        end);
    end);
end;
return function(v82)
    local l_v82_0 = v82;
    if not (not v23.enableNewMenuLayout or not v82.enableTokenOverride) then
        l_v82_0 = v6.Dictionary.join(v24.getDropdownMenuCellDefaultTokens((v10())), v82);
    end;
    local v84 = v21(v22.RoundedRectNoInset);
    if v23.migrateToNewSelectionCursor then
        l_v82_0 = v6.Dictionary.join({
            selectionCursor = v84
        }, l_v82_0);
    end;
    return v4.createElement(v25, l_v82_0);
end;


local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.Roact);
local v4 = require(l_Parent_1.t);
local v5 = require(l_Parent_0.Core.Style.withStyle);
local v6 = require(script.Parent.BaseMenu);
local v7 = require(script.Parent.validateButtonProps);
local v8 = require(l_Parent_0.Core.Style.Validator.validateColorInfo);
local v9 = require(l_Parent_0.UIBloxConfig);
local v10 = v3.PureComponent:extend("DropdownMenuList");
v10.validateProps = v4.strictInterface({
    buttonProps = v7,
    zIndex = v4.optional(v4.integer),
    open = v4.boolean,
    showDropShadow = v4.boolean,
    fixedListHeight = v4.optional(v4.number),
    openPositionY = v4.UDim,
    closeBackgroundVisible = v4.optional(v4.boolean),
    screenSize = v4.Vector2,
    onDismiss = v4.optional(v4.callback),
    buttonSize = v4.UDim2,
    menuListBackground = v4.optional(v8),
    enableTokenOverride = v4.optional(v4.boolean),
    selectionOrder = v4.optional(v4.number)
});
v10.defaultProps = {
    zIndex = 2,
    closeBackgroundVisible = false,
    showDropShadow = false,
    fixedListHeight = nil,
    menuListBackground = nil,
    enableTokenOverride = false
};
v10.init = function(v11)
    v11:setState({
        absolutePosition = Vector2.new(0, 0),
        visible = false
    });
    v11.setAbsolutePosition = function(v12)
        v11:setState({
            absolutePosition = v12.AbsolutePosition
        });
    end;
    v11.dismissMenu = function()
        if v11.state.visible then
            v11:setState({
                visible = false
            });
            v11.props.onDismiss();
        end;
    end;
end;
v10.render = function(v13)
    return v5(function(v14)
        local l_l_GuiService_0_GuiInset_0, v16 = l_GuiService_0:GetGuiInset();
        local v17 = v13.state.absolutePosition + l_l_GuiService_0_GuiInset_0;
        local v18 = 0;
        local v19 = 1;
        local l_Y_0 = v13.props.buttonSize.Y;
        local l_X_0 = v13.props.buttonSize.X;
        if v13.props.screenSize.Y / 2 < v13.state.absolutePosition.Y then
            v18 = 1;
            v19 = -1;
            l_Y_0 = UDim.new(0, 0);
        end;
        local v22 = nil;
        v22 = if v19 == 1 then l_Y_0 + v13.props.openPositionY else l_Y_0 - v13.props.openPositionY;
        local v23 = UDim2.new(0, 0, v22.Scale, v22.Offset);
        if v13.props.screenSize.X < 640 then
            v18 = 1;
            v23 = UDim2.new(-v13.props.buttonSize.X.Scale / 2, (-v17.X + v13.props.screenSize.X / 2) - v13.props.buttonSize.X.Offset / 2, 0, ((v13.props.screenSize.Y - v17.Y) - v16.Y) - 24);
        end;
        local l_Transparency_0 = v14.Theme.Overlay.Transparency;
        if not v13.props.closeBackgroundVisible then
            l_Transparency_0 = 1;
        end;
        return v3.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1,
            Visible = v13.state.visible,
            ZIndex = v13.props.zIndex,
            [v3.Change.AbsolutePosition] = v13.setAbsolutePosition
        }, {
            Background = v3.createElement("TextButton", {
                ZIndex = 1,
                Text = "",
                BorderSizePixel = 0,
                BackgroundColor3 = v14.Theme.Overlay.Color,
                BackgroundTransparency = l_Transparency_0,
                AutoButtonColor = false,
                Selectable = if not v9.enableNewMenuLayout then nil else false,
                Position = UDim2.fromOffset(-v17.X, -v17.Y),
                Size = UDim2.fromOffset(v13.props.screenSize.X, v13.props.screenSize.Y),
                [v3.Event.Activated] = v13.dismissMenu
            }),
            PositionFrame = v3.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.fromScale(1, 1),
                Position = v23,
                ZIndex = 2
            }, {
                BaseMenu = v3.createElement(v6, {
                    buttonProps = v13.props.buttonProps,
                    showDropShadow = v13.props.showDropShadow,
                    fixedListHeight = v13.props.fixedListHeight,
                    width = l_X_0,
                    position = UDim2.fromScale(0, 0),
                    anchorPoint = Vector2.new(0, v18),
                    background = v13.props.menuListBackground,
                    enableTokenOverride = v13.props.enableTokenOverride,
                    selectionOrder = v13.props.selectionOrder
                })
            })
        });
    end);
end;
v10.didMount = function(v25)
    if v25.props.open then
        v25:setState({
            visible = true
        });
    end;
end;
v10.didUpdate = function(v26, v27, _)
    if v26.props.open ~= v27.open then
        if not v26.props.open then
            v26:setState({
                visible = false
            });
        else
            v26:setState({
                visible = true
            });
            return ;
        end;
    end;
end;
return v10;


return {
    HEIGHT = 36,
    PREFERRED_WIDTH = 36,
    MIN_SIDE_PADDING = 8,
    SIDE_PADDING = 10,
    DEFAULT_ICON_THEME = "UIEmphasis",
    DEFAULT_TEXT_THEME = "TextDefault",
    DEFAULT_GAMEPAD_ICON_SIZE = Vector2.new(36, 36),
    TEXT_CENTER_OFFSET = -1
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Parent_3 = l_Parent_2.Parent;
local v4 = require(l_Parent_3.React);
local v5 = require(l_Parent_3.LuauPolyfill);
local _ = require(l_Parent_0.Types);
local v7 = require(l_Parent_0.Constants);
local v8 = require(l_Parent_0.Utilities);
local v9 = require(l_Parent_2.Core.Style.useStyle);
local v10 = require(l_Parent_1.ImageSet.Images);
local l_Label_0 = require(l_Parent_2.Core.ImageSet.ImageSetComponent).Label;
return function(v12)
    local v13 = v9();
    local v14 = v13.Theme[v12.iconThemeKey or v7.DEFAULT_ICON_THEME];
    local v15 = v8.getKeyCodeContent(v12.keyCode);
    local v16 = {
        AnchorPoint = v12.AnchorPoint,
        Position = v12.Position,
        LayoutOrder = v12.LayoutOrder,
        ZIndex = v12.ZIndex,
        [v4.Change.AbsoluteSize] = v12[v4.Change.AbsoluteSize],
        Size = UDim2.fromOffset(v8.getWidthFromContent(v15, v13.Font), v7.HEIGHT)
    };
    if v15.inputType == "keyboard" then
        local v17 = v13.Theme[v12.textThemeKey or v7.DEFAULT_TEXT_THEME];
        local l_Font_0 = v13.Font;
        local l_BaseSize_0 = l_Font_0.BaseSize;
        local l_CaptionHeader_0 = l_Font_0.CaptionHeader;
        local v21 = l_BaseSize_0 * l_CaptionHeader_0.RelativeSize;
        local v22 = "";
        local v23 = nil;
        if type(v15.content) == "string" then
            v22 = v15.content;
        else
            local v24 = v15.content.ImageRectSize / v10.ImagesResolutionScale;
            v23 = v4.createElement(l_Label_0, {
                Image = v15.content,
                ImageColor3 = v17.Color,
                ImageTransparency = v17.Transparency,
                BackgroundTransparency = 1,
                Size = UDim2.fromOffset(v24.X, v24.Y),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5)
            });
        end;
        return v4.createElement(l_Label_0, v5.Object.assign(v16, {
            BackgroundTransparency = 1,
            ImageTransparency = v14.Transparency,
            ImageColor3 = v14.Color,
            Image = v10["icons/controls/keys/key_single"],
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = Rect.new(Vector2.new(10, 9), Vector2.new(25, 25))
        }), {
            LabelContent = v4.createElement("TextLabel", {
                Text = v22,
                BackgroundTransparency = 1,
                TextColor3 = v17.Color,
                TextTransparency = v17.Transparency,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center,
                TextSize = v21,
                Font = l_CaptionHeader_0.Font,
                RichText = false,
                Position = UDim2.fromOffset(0, v7.TEXT_CENTER_OFFSET),
                Size = UDim2.fromScale(1, 1)
            }, {
                Icon = v23
            })
        });
    elseif v15.inputType == "gamepad" then
        return v4.createElement(l_Label_0, v5.Object.assign(v16, {
            Image = v15.content,
            ImageColor3 = v14.Color,
            ImageTransparency = v14.Transparency,
            BackgroundTransparency = 1
        }));
    else
        assert(false, string.format("Unreachable: Invalid inputType value: \"%s\"", v15.inputType));
        return ;
    end;
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local l_Parent_3 = l_Parent_2.Parent;
local _ = require(l_Parent_0.Types);
local v5 = require(l_Parent_0.Constants);
local _ = require(l_Parent_2.Style.Fonts);
local v7 = require(l_Parent_2.ImageSet.Images);
local v8 = require(l_Parent_3.Core.Text.GetTextSize);
local v9 = require(l_Parent_1.platformIconMap);
local l_UserInputService_0 = game:GetService("UserInputService");
local l_DIRECTIONAL_GAMEPAD_ICONS_0 = v9.DIRECTIONAL_GAMEPAD_ICONS;
local l_GAMEPAD_ICONS_0 = v9.GAMEPAD_ICONS;
local v13 = {
    [Enum.KeyCode.Escape] = "Esc",
    [Enum.KeyCode.Print] = "Prt Sc",
    [Enum.KeyCode.ScrollLock] = "Sc Lock",
    [Enum.KeyCode.Pause] = "Pause",
    [Enum.KeyCode.Insert] = "Ins",
    [Enum.KeyCode.PageUp] = "PgUp",
    [Enum.KeyCode.NumLock] = "Num Lock",
    [Enum.KeyCode.Delete] = "Del",
    [Enum.KeyCode.End] = "End",
    [Enum.KeyCode.PageDown] = "PgDn",
    [Enum.KeyCode.CapsLock] = "Caps",
    [Enum.KeyCode.Return] = "Enter",
    [Enum.KeyCode.LeftShift] = "Shift",
    [Enum.KeyCode.LeftControl] = "Ctrl",
    [Enum.KeyCode.LeftAlt] = "Alt",
    [Enum.KeyCode.Space] = "Space",
    [Enum.KeyCode.LeftMeta] = "Fn",
    [Enum.KeyCode.LeftSuper] = "Cmd",
    [Enum.KeyCode.Tilde] = "~",
    [Enum.KeyCode.Up] = v7["icons/controls/keys/arrowUp"],
    [Enum.KeyCode.Down] = v7["icons/controls/keys/arrowDown"],
    [Enum.KeyCode.Left] = v7["icons/controls/keys/arrowLeft"],
    [Enum.KeyCode.Right] = v7["icons/controls/keys/arrowRight"]
};
local function v16(v14)
    if type(v14) == "table" then
        return {
            inputType = "gamepad",
            content = l_DIRECTIONAL_GAMEPAD_ICONS_0[v14.key][v14.axis]
        };
    elseif not l_GAMEPAD_ICONS_0[v14] then
        local l_l_UserInputService_0_StringForKeyCode_0 = l_UserInputService_0:GetStringForKeyCode(v14);
        return {
            inputType = "keyboard",
            content = v13[v14] or if l_l_UserInputService_0_StringForKeyCode_0 ~= "" then l_l_UserInputService_0_StringForKeyCode_0 else v14.Name
        };
    else
        return {
            inputType = "gamepad",
            content = l_GAMEPAD_ICONS_0[v14]
        };
    end;
end;
local function v23(v17, v18)
    if v17.inputType == "keyboard" then
        if type(v17.content) == "string" then
            local l_BaseSize_0 = v18.BaseSize;
            local l_CaptionBody_0 = v18.CaptionBody;
            local l_X_0 = v8(v17.content, l_BaseSize_0 * l_CaptionBody_0.RelativeSize, l_CaptionBody_0.Font, Vector2.zero).X;
            if v5.PREFERRED_WIDTH < l_X_0 + 2 * v5.MIN_SIDE_PADDING then
                return l_X_0 + 2 * v5.SIDE_PADDING;
            end;
        end;
        return v5.PREFERRED_WIDTH;
    elseif v17.inputType == "gamepad" then
        local v22 = if typeof(v17.content) == "string" then v5.DEFAULT_GAMEPAD_ICON_SIZE else v17.content.ImageRectSize;
        return (v22.X * v5.HEIGHT) / v22.Y;
    else
        assert(false, string.format("Unreachable: Invalid inputType value: %q", v17.inputType));
        return ;
    end;
end;
getKeyLabelWidth = function(v24, v25)
    return v23(v16(v24), v25);
end;
return {
    getKeyLabelWidth = getKeyLabelWidth,
    getKeyCodeContent = v16,
    getWidthFromContent = v23
};


return require(script.Parent.Parent.Parent.Parent.enumerate)(script.Name, {
    "Up",
    "Down"
});


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_1.React);
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
local _ = require(l_Parent_0.Style.StyleTypes);
local v5 = {
    zIndex = 1
};
return function(v6)
    local v7 = l_Object_0.assign({}, v5, v6);
    return v2.createElement("Frame", {
        ZIndex = v7.zIndex,
        Size = UDim2.fromScale(1, 1),
        BackgroundTransparency = 1
    }, {
        TopContainer = v2.createElement("Frame", {
            Position = UDim2.fromScale(0, 0),
            Size = UDim2.fromScale(1, 0.5),
            ClipsDescendants = true,
            BackgroundTransparency = 1
        }, {
            Content = v2.createElement("Frame", {
                Position = UDim2.fromScale(0, 0),
                Size = UDim2.fromScale(1, 2),
                BackgroundColor3 = v7.background.Color,
                BackgroundTransparency = v7.background.Transparency
            }, {
                UICorner = if not v7.topCornerRadius then nil else v2.createElement("UICorner", {
                    CornerRadius = v7.topCornerRadius
                })
            })
        }),
        BottomContainer = v2.createElement("Frame", {
            Position = UDim2.fromScale(0, 0.5),
            Size = UDim2.fromScale(1, 0.5),
            ClipsDescendants = true,
            BackgroundTransparency = 1
        }, {
            Content = v2.createElement("Frame", {
                Position = UDim2.fromScale(0, -1),
                Size = UDim2.fromScale(1, 2),
                BackgroundColor3 = v7.background.Color,
                BackgroundTransparency = v7.background.Transparency
            }, {
                UICorner = if not v7.bottomCornerRadius then nil else v2.createElement("UICorner", {
                    CornerRadius = v7.bottomCornerRadius
                })
            })
        })
    });
end;


local _ = require(script.Parent.Parent.Parent.App.Style.StyleTypes);
return {
    getBaseMenuDefaultTokens = function(v1)
        assert(v1.Tokens ~= nil, "Design token support is not enabled");
        return {
            elementHeight = v1.Tokens.Component.MenuCell.Base.Container.Height,
            borderCornerRadius = v1.Tokens.Component.BaseMenu.BorderRadius,
            background = {
                Color = v1.Tokens.Component.BaseMenu.BackgroundColor.Color3,
                Transparency = v1.Tokens.Component.BaseMenu.BackgroundColor.Transparency
            }
        };
    end,
    getCellDefaultTokens = function(v2)
        assert(v2.Tokens ~= nil, "Design token support is not enabled");
        return {
            iconSize = v2.Tokens.Component.MenuCell.Base.IconFrame.Size,
            selectedIconSize = v2.Tokens.Component.MenuCell.Base.CheckFrame.Size,
            iconPaddingLeft = v2.Tokens.Component.MenuCell.Base.Container.Spacing.Leading,
            textPadding = {
                left = v2.Tokens.Component.MenuCell.Base.TextFrame.Spacing.Leading,
                right = v2.Tokens.Component.MenuCell.Base.TextFrame.Spacing.Trailing
            },
            fontStyle = {
                Font = v2.Tokens.Component.MenuCell.Base.Text.Typography.Font,
                RelativeSize = v2.Tokens.Component.MenuCell.Base.Text.Typography.FontSize / v2.Font.BaseSize,
                RelativeMinSize = v2.Tokens.Component.MenuCell.Base.Text.Typography.FontSize / v2.Font.BaseSize
            },
            dividerSize = v2.Tokens.Component.MenuCell.Divider.Container.BorderWidth,
            selectedIconPaddingRight = v2.Tokens.Component.MenuCell.Base.Container.Spacing.Trailing
        };
    end,
    getDropdownMenuCellDefaultTokens = function(v3)
        return {
            iconSize = v3.Tokens.Global.Size_450,
            containerPadding = {
                left = v3.Tokens.Global.Space_200,
                right = v3.Tokens.Global.Space_300
            },
            textFont = v3.Tokens.Semantic.Typography.Subheader,
            iconTextSpacing = v3.Tokens.Global.Space_200,
            border = {
                cornerRadius = v3.Tokens.Semantic.Radius.Medium,
                size = v3.Tokens.Global.Stroke_100
            }
        };
    end,
    getDropdownMenuDefaultTokens = function(v4)
        return {
            height = UDim.new(0, v4.Tokens.Global.Size_600),
            menuStateColors = {
                buttonDefault = {
                    Color = v4.Tokens.Semantic.Color.Action.Secondary.Border.Color3,
                    Transparency = v4.Tokens.Semantic.Color.Action.Secondary.Border.Transparency
                },
                contentDefault = {
                    Color = v4.Tokens.Semantic.Color.Text.Default.Color3,
                    Transparency = v4.Tokens.Semantic.Color.Text.Default.Transparency
                },
                alert = {
                    Color = v4.Tokens.Semantic.Color.Action.Alert.Border.Color3,
                    Transparency = v4.Tokens.Semantic.Color.Action.Alert.Border.Transparency
                }
            }
        };
    end
};


local v0 = {
    [Enum.KeyCode.Thumbstick1] = {
        directional = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick1Directional.png",
        horizontal = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick1Horizontal.png",
        vertical = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick1Vertical.png"
    },
    [Enum.KeyCode.Thumbstick2] = {
        directional = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick2Directional.png",
        horizontal = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick2Horizontal.png",
        vertical = "rbxasset://textures/ui/Controls/DesignSystem/" .. "Thumbstick2Vertical.png"
    }
};
return {
    DIRECTIONAL_GAMEPAD_ICONS = v0,
    GAMEPAD_ICONS = {
        [Enum.KeyCode.ButtonX] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonX.png",
        [Enum.KeyCode.ButtonY] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonY.png",
        [Enum.KeyCode.ButtonA] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonA.png",
        [Enum.KeyCode.ButtonB] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonB.png",
        [Enum.KeyCode.DPadLeft] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "DPadLeft.png",
        [Enum.KeyCode.DPadRight] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "DPadRight.png",
        [Enum.KeyCode.DPadUp] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "DPadUp.png",
        [Enum.KeyCode.DPadDown] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "DPadDown.png",
        [Enum.KeyCode.ButtonStart] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonStart.png",
        [Enum.KeyCode.ButtonSelect] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonSelect.png",
        [Enum.KeyCode.ButtonR1] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonR1.png",
        [Enum.KeyCode.ButtonL1] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonL1.png",
        [Enum.KeyCode.ButtonR2] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonR2.png",
        [Enum.KeyCode.ButtonL2] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonL2.png",
        [Enum.KeyCode.ButtonR3] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonR3.png",
        [Enum.KeyCode.ButtonL3] = "rbxasset://textures/ui/Controls/DesignSystem/" .. "ButtonL3.png",
        [Enum.KeyCode.Thumbstick1] = v0[Enum.KeyCode.Thumbstick1].directional,
        [Enum.KeyCode.Thumbstick2] = v0[Enum.KeyCode.Thumbstick2].directional
    }
};


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Core_0 = l_Parent_0.Core;
local v3 = require(l_Parent_1.t);
return v3.array(v3.strictInterface({
    icon = v3.optional(v3.union(v3.table, v3.string)),
    text = v3.string,
    onActivated = v3.callback,
    disabled = v3.optional(v3.boolean),
    inputBindingKey = v3.optional(v3.string),
    keyCodeLabel = v3.optional(v3.union(v3.enum(Enum.KeyCode), v3.strictInterface({
        key = v3.enum(Enum.KeyCode),
        axis = v3.optional(v3.string)
    }))),
    selected = v3.optional(v3.boolean),
    stayOnActivated = v3.optional(v3.boolean),
    renderRightSideGadget = v3.optional(v3.callback),
    rightSideGadgetSize = v3.optional(v3.Vector2),
    iconColorOverride = v3.optional(v3.Color3),
    textColorOverride = v3.optional(v3.Color3),
    dividerOffset = v3.optional(v3.number),
    dividerSize = v3.optional(v3.number),
    leftPaddingOffset = v3.optional(v3.number),
    fontStyle = v3.optional(v3.union(v3.string, require(l_Core_0.Style.Validator.validateFontInfo), (require(l_Parent_0.Core.Style.Validator.validateTypographyInfo)))),
    iconSize = v3.optional(v3.integer),
    selectedIconSize = v3.optional(v3.integer),
    iconPaddingLeft = v3.optional(v3.integer),
    textPadding = v3.optional(v3.strictInterface({
        left = v3.integer,
        right = v3.integer
    })),
    selectedIconPaddingRight = v3.optional(v3.integer),
    keyLabelPaddingRight = v3.optional(v3.integer),
    textOnlyPadding = v3.optional(v3.integer),
    buttonTextOverride = v3.optional(v3.table),
    borderCornerRadius = v3.optional(v3.integer),
    background = v3.optional((require(l_Parent_0.Core.Style.Validator.validateColorInfo)))
}));


local v0 = require(script.Parent.Parent.Parent.Parent.t);
return v0.strictInterface({
    targetValue = v0.number,
    springParams = v0.optional(v0.strictInterface({
        frequency = v0.number,
        dampingRatio = v0.number
    }))
});


return {
    EvenlyDistributed = "EvenlyDistributed",
    Left = "Left"
};


return require(script.Parent.Parent.Parent.Parent.Parent.enumerate)(script.Name, {
    "Left",
    "Bottom",
    "Auto"
});


return require(script.Parent.Parent.Parent.Parent.Parent.enumerate)(script.Name, {
    "State1",
    "State2",
    "State3",
    "State4"
});


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Cryo);
local v4 = require(l_Parent_2.React);
local v5 = require(l_Parent_2.ReactOtter);
local _ = require(l_Parent_0.Style.StyleTypes);
local v7 = require(l_Parent_1.Core.Style.useStyle);
local v8 = require(l_Parent_1.Core.Control.InteractableList);
local v9 = require(l_Parent_0.Navigation.Enum.NavigationBarAlignment);
local v10 = {
    visible = true,
    zIndex = 1,
    position = UDim2.new(0, 0, 0, 0),
    size = UDim2.new(1, 0, 1, 0),
    maxWidth = 600,
    animationConfig = {
        dampingRatio = 1,
        frequency = 3
    },
    showAnimation = false
};
local function v30(v11)
    local v12 = v7();
    local v13, v14 = v4.useState(UDim2.new(0, 0, 0, 0));
    local l_Offset_0 = v11.size.Y.Offset;
    local v16 = if not not v11.paddings and v11.paddings.Top then v11.paddings.Top else v12.Tokens.Global.Space_75;
    local v17 = if not not v11.paddings and v11.paddings.Bottom then v11.paddings.Bottom else v12.Tokens.Global.Space_75;
    local v18 = if not not v11.paddings and v11.paddings.Left then v11.paddings.Left else v12.Tokens.Global.Space_75;
    local v19 = if not not v11.paddings and v11.paddings.Right then v11.paddings.Right else v12.Tokens.Global.Space_75;
    local v21 = v4.useCallback(function(v20)
        if v11.alignment == v9.EvenlyDistributed then
            v14(UDim2.new(0, ((if v11.maxWidth < v20.AbsoluteSize.X then v11.maxWidth else v20.AbsoluteSize.X - v18) - v19) / #v11.items, v11.size.Y.Scale, (l_Offset_0 - v16) - v17));
        end;
    end, {
        v12,
        l_Offset_0,
        v16,
        v17,
        v18,
        v19,
        v11.maxWidth,
        v11.alignment,
        v11.size,
        v11.items
    });
    local v22, v23 = v5.useAnimatedBinding(0);
    v4.useEffect(function()
        if not v11.isVisible then
            v23(v5.spring(l_Offset_0, v11.animationConfig));
        else
            v23(v5.spring(0, v11.animationConfig));
        end;
        return nil;
    end, {
        l_Offset_0,
        v11.isVisible,
        v11.animationConfig
    });
    local v29 = v4.useCallback(function(v24, v25)
        return v4.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, l_Offset_0),
            Position = v11.position,
            [v4.Change.AbsoluteSize] = v21
        }, {
            AnimatedNavigationBar = v4.createElement("Frame", {
                Position = v22:map(function(v26)
                    return UDim2.new(0, 0, 0, v26);
                end),
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundColor3 = if not v11.backgroundColor then v12.Theme.BackgroundUIContrast.Color else v11.backgroundColor.Color,
                BackgroundTransparency = if not v11.backgroundColor then v12.Theme.BackgroundUIContrast.Transparency else v11.backgroundColor.Transparency,
                Selectable = false,
                Visible = v11.visible,
                ZIndex = v11.zIndex
            }, {
                Layout = v4.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    VerticalAlignment = Enum.VerticalAlignment.Top,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center
                }),
                InnerFrame = v4.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 1, 0)
                }, v3.Dictionary.join({
                    Constraint = v4.createElement("UISizeConstraint", {
                        MaxSize = Vector2.new(v11.maxWidth, l_Offset_0)
                    }),
                    UIPadding = v4.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, v16),
                        PaddingBottom = UDim.new(0, v17),
                        PaddingLeft = UDim.new(0, v18),
                        PaddingRight = UDim.new(0, v19)
                    }),
                    Layout = v4.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center
                    })
                }, (v3.List.map(v24, function(_, v28)
                    return v25(v28);
                end))))
            })
        });
    end, {
        v12,
        l_Offset_0,
        v16,
        v17,
        v18,
        v19,
        v11.maxWidth,
        v11.visible,
        v11.zIndex
    });
    if v11.alignment == v9.Left then
        return {
            itemSize = UDim2.fromScale(0, 0),
            automaticSize = Enum.AutomaticSize.X,
            padding = v11.spacing,
            renderList = if not v11.showAnimation then nil else v29
        };
    elseif v11.alignment == v9.EvenlyDistributed then
        return {
            itemSize = v13,
            renderList = if not v11.showAnimation then nil else v29
        };
    else
        error("NavigationBar Alignment type is incorrect");
        return ;
    end;
end;
return function(v31)
    assert(#v31.items > 0, "At least one item should be present");
    local v32 = v3.Dictionary.join(v10, v31);
    local v33 = v30(v32);
    local v34;
    v34 = v32.selection and if v32.items[v34] == nil then nil else {
        v34
    };
    return v4.createElement(v8, v3.Dictionary.join({
        fillDirection = Enum.FillDirection.Horizontal,
        horizontalAlignment = Enum.HorizontalAlignment.Left,
        verticalAlignment = Enum.VerticalAlignment.Center,
        sortOrder = Enum.SortOrder.LayoutOrder,
        size = v32.size,
        itemList = v32.items,
        selection = v34,
        renderItem = v32.renderItem,
        onSelectionChanged = v4.useCallback(function(v35)
            local v36 = v32.items[v35[1]];
            if v36 ~= nil and v36.onActivated ~= nil then
                v36.onActivated();
            end;
        end, {
            v32.items
        })
    }, v33));
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Cryo);
local v4 = require(l_Parent_2.React);
local v5 = require(l_Parent_2.ReactOtter);
local _ = require(l_Parent_0.Style.StyleTypes);
local v7 = require(l_Parent_1.Core.Style.useStyle);
local v8 = require(l_Parent_1.Core.Control.InteractableList);
local v9 = require(l_Parent_0.Navigation.Enum.NavigationRailAlignment);
local v10 = {
    visible = true,
    isVisible = true,
    zIndex = 1,
    position = UDim2.new(0, 0, 0, 0),
    animationConfig = {
        dampingRatio = 1,
        frequency = 3
    }
};
return function(v11)
    local v12 = v3.Dictionary.join(v10, v11);
    local v13 = v7();
    local v14, v15 = v5.useAnimatedBinding(0);
    v4.useEffect(function()
        if not v12.isVisible then
            v15(v5.spring(-v12.width, v12.animationConfig));
        else
            v15(v5.spring(0, v12.animationConfig));
        end;
        return nil;
    end, {
        v12.width,
        v12.isVisible,
        v12.animationConfig
    });
    local v16 = if v12.alignment == v9.Centered then Enum.VerticalAlignment.Center else Enum.VerticalAlignment.Top;
    local v26 = v4.useCallback(function(v17, v18)
        local v21 = v3.List.map(v17, function(v19, v20)
            if not v19.isSecondary then
                return v18(v20);
            else
                return nil;
            end;
        end);
        local v24 = if not v12.hasSecondaryNavigation then nil else v3.List.map(v17, function(v22, v23)
            if not v22.isSecondary then
                return nil;
            else
                return v18(v23);
            end;
        end);
        return v4.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, v12.width, 1, 0),
            Position = v12.position,
            Visible = v12.visible
        }, {
            AnimatedNavigationRail = v4.createElement("Frame", {
                Position = v14:map(function(v25)
                    return UDim2.new(0, v25, 0, 0);
                end),
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundColor3 = if not v12.backgroundColor then v13.Theme.BackgroundUIContrast.Color else v12.backgroundColor.Color,
                BackgroundTransparency = if not v12.backgroundColor then v13.Theme.BackgroundUIContrast.Transparency else v12.backgroundColor.Transparency,
                Selectable = false,
                Visible = v12.visible,
                ZIndex = v12.zIndex
            }, {
                MainFrame = v4.createElement("Frame", {
                    Position = UDim2.new(0, 0, 0, 0),
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1
                }, {
                    UIListLayout = v4.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Vertical,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        VerticalAlignment = v16,
                        Padding = UDim.new(0, v13.Tokens.Global.Space_200)
                    }),
                    UIPadding = v4.createElement("UIPadding", {
                        PaddingTop = if not not v12.paddings and v12.paddings.Top then UDim.new(0, v12.paddings.Top) else UDim.new(0, v13.Tokens.Global.Space_75),
                        PaddingBottom = if not not v12.paddings and v12.paddings.Bottom then UDim.new(0, v12.paddings.Bottom) else UDim.new(0, v13.Tokens.Global.Space_75),
                        PaddingLeft = if not not v12.paddings and v12.paddings.Left then UDim.new(0, v12.paddings.Left) else UDim.new(0, v13.Tokens.Global.Space_75),
                        PaddingRight = if not not v12.paddings and v12.paddings.Right then UDim.new(0, v12.paddings.Right) else UDim.new(0, v13.Tokens.Global.Space_75)
                    }),
                    PrimaryItems = v4.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        LayoutOrder = 1
                    }, {
                        v3.Dictionary.join({
                            Layout = v4.createElement("UIListLayout", {
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Center
                            })
                        }, v21)
                    }),
                    CenteredSeondaryItems = if not not v12.hasSecondaryNavigation and v12.alignment == v9.Centered then v4.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        LayoutOrder = 2
                    }, {
                        v3.Dictionary.join({
                            Layout = v4.createElement("UIListLayout", {
                                FillDirection = Enum.FillDirection.Vertical,
                                HorizontalAlignment = Enum.HorizontalAlignment.Center
                            })
                        }, v24)
                    }) else nil
                }),
                BottomAlignedSecondaryItems = if not not v12.hasSecondaryNavigation and v12.alignment == v9.Justified then v4.createElement("Frame", {
                    Position = UDim2.new(0, 0, 0, 0),
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1
                }, {
                    v3.Dictionary.join({
                        Layout = v4.createElement("UIListLayout", {
                            FillDirection = Enum.FillDirection.Vertical,
                            VerticalAlignment = Enum.VerticalAlignment.Bottom,
                            HorizontalAlignment = Enum.HorizontalAlignment.Center
                        })
                    }, v24)
                }) else nil
            })
        });
    end, {
        v16,
        v12.width,
        v12.alignment,
        v12.hasSecondaryNavigation,
        v12.visible,
        v12.zIndex,
        v12.paddings
    });
    local v27;
    v27 = v12.selection and if v12.items[v27] == nil then nil else {
        v27
    };
    return v4.createElement(v8, {
        fillDirection = Enum.FillDirection.Horizontal,
        horizontalAlignment = Enum.HorizontalAlignment.Left,
        sortOrder = Enum.SortOrder.LayoutOrder,
        size = v12.size,
        itemList = v12.items,
        selection = v27,
        itemSize = v12.itemSize,
        renderItem = v12.renderItem,
        renderList = v26,
        onSelectionChanged = v4.useCallback(function(v28)
            local v29 = v12.items[v28[1]];
            if v29 ~= nil and v29.onActivated ~= nil then
                v29.onActivated();
            end;
        end, {
            v12.items
        })
    });
end;


return {
    CONTEXT_BAR_HEIGHT = 52,
    CONTEXT_BAR_PADDING_START = 16,
    CONTEXT_BAR_PADDING_END = 16,
    CONTEXT_BAR_ITEMS_SPACING = 24,
    CONTEXT_BAR_ITEM_LABEL_HEIGHT = 26,
    CONTEXT_BAR_ITEM_ICON_LABEL_SPACING = 8,
    ICON_TAB_GROUP_HEIGHT = 72,
    ICON_TAB_HEIGHT = 72,
    ICON_TAB_PADDING = 9,
    ICON_TAB_ITEM_PADDING_LEFT = 25,
    ICON_TAB_ITEM_PADDING_RIGHT = 25,
    ICON_TAB_ITEM_SPACING = 11,
    ICON_TAB_ITEM_ICON_TITLE_SPACING = 12,
    ICON_TAB_PRESSED_TRANSPARENCY = 0.5,
    ICON_TAB_SELECTED_TRANSPARENCY = 0.8
};


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.React);
local l_Object_0 = require(l_Parent_2.LuauPolyfill).Object;
local v5 = require(l_Parent_1.Core.Style.useStyle);
local v6 = require(l_Parent_0.ImageSet.Enum.IconSize);
local _ = require(l_Parent_0.ImageSet.ImagesTypes);
local v8 = require(l_Parent_0.ImageSet.getIconSize);
local v9 = require(l_Parent_1.Core.ImageSet.ImageSetComponent);
local v10 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v11 = require(script.Parent.Constants);
local v12 = {
    items = {}
};
return function(v13)
    local v14 = l_Object_0.assign({}, v12, v13);
    local v15 = v5();
    local v16 = {
        UICorner = v3.createElement("UICorner", {
            CornerRadius = UDim.new(0.5, 0)
        }),
        Padding = v3.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v11.CONTEXT_BAR_PADDING_START),
            PaddingRight = UDim.new(0, v11.CONTEXT_BAR_PADDING_END)
        }),
        ListLayout = v3.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = UDim.new(0, v11.CONTEXT_BAR_ITEMS_SPACING)
        })
    };
    local v17 = v8(v6.Medium);
    for v18, v19 in ipairs(v14.items) do
        v16["Item" .. tostring(v18)] = v3.createElement("Frame", {
            LayoutOrder = v18,
            Size = UDim2.fromOffset(0, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.XY
        }, {
            UIListLayout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, v11.CONTEXT_BAR_ITEM_ICON_LABEL_SPACING)
            }),
            Icon = v3.createElement(v9.Label, {
                LayoutOrder = 1,
                Size = UDim2.fromOffset(v17, v17),
                Image = v19.icon,
                ImageColor3 = v15.Theme.IconEmphasis.Color,
                ImageTransparency = v15.Theme.IconEmphasis.Transparency,
                BackgroundTransparency = 1
            }),
            Text = v3.createElement(v10, {
                LayoutOrder = 2,
                Size = UDim2.fromOffset(0, v11.CONTEXT_BAR_ITEM_LABEL_HEIGHT),
                AutomaticSize = Enum.AutomaticSize.X,
                Text = v19.text,
                colorStyle = v15.Theme.TextEmphasis,
                fontStyle = v15.Font.CaptionHeader,
                BackgroundTransparency = 1
            })
        });
    end;
    return v3.createElement("Frame", {
        Position = v14.position,
        AnchorPoint = v14.anchorPoint,
        Size = UDim2.fromOffset(0, v11.CONTEXT_BAR_HEIGHT),
        BorderSizePixel = 0,
        BackgroundColor3 = v15.Theme.UIMuted.Color,
        BackgroundTransparency = v15.Theme.UIMuted.Transparency,
        AutomaticSize = Enum.AutomaticSize.X
    }, v16);
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
local v4 = require(l_Parent_0.Core.Style.useStyle);
local v5 = require(script.Parent.Constants);
local _ = require(script.Parent.Types);
return function(v7, v8)
    local v9 = v4();
    return v2.createElement("Frame", {
        Size = if not v7.size then UDim2.new(1, 0, 1, 0) else v7.size,
        AutomaticSize = v7.automaticSize,
        BackgroundTransparency = 1,
        LayoutOrder = 1
    }, {
        RoundedBackgroundWithTopAlignedToContent = if not v7.showRoundedBackground then nil else v2.createElement("Frame", {
            Size = v7.roundedBackgroundSize or UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = v7.roundedBackgroundTransparency or 1,
            BackgroundColor3 = v7.roundedBackgroundColor or v9.Theme.BackgroundUIDefault.Color,
            Position = v7.roundedBackgroundPosition or UDim2.fromOffset(0, 0),
            ZIndex = 1
        }, {
            Corner = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        }),
        Overlay = if not v7.showOverlay then nil else v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundColor3 = v9.Theme.BackgroundUIDefault.Color,
            BackgroundTransparency = v5.ICON_TAB_PRESSED_TRANSPARENCY,
            ZIndex = 3
        }, {
            Corner = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        }),
        Content = v2.createElement("Frame", {
            Size = if not v7.size then UDim2.new(1, 0, 1, 0) else v7.size,
            AutomaticSize = v7.automaticSize,
            BackgroundTransparency = 1,
            LayoutOrder = 2,
            ZIndex = 2
        }, l_Object_0.assign({}, {
            Layout = v2.createElement("UIListLayout", l_Object_0.assign({}, {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, v7.spacing or 0)
            })),
            Padding = if not v7.padding then nil else v2.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, v7.padding.left or 0),
                PaddingRight = UDim.new(0, v7.padding.right or 0),
                PaddingTop = UDim.new(0, v7.padding.top or 0),
                PaddingBottom = UDim.new(0, v7.padding.bottom or 0)
            })
        }, v8))
    });
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.React);
local l_Object_0 = require(l_Parent_2.LuauPolyfill).Object;
local v5 = require(l_Parent_1.Core.Style.useStyle);
local l_Label_0 = require(l_Parent_1.Core.ImageSet.ImageSetComponent).Label;
local v7 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v8 = require(l_Parent_0.Enum.Placement);
local v9 = require(l_Parent_1.Core.Control.Enum.ControlState);
local v10 = require(l_Parent_1.App.ImageSet.Enum.IconSize);
local v11 = require(l_Parent_1.App.ImageSet.getIconSize);
local v12 = require(script.Parent.HorizontalContainer);
local _ = require(script.Parent.Types);
local v14 = require(script.Parent.Constants);
local v15 = {
    controlState = v9.Default,
    selected = false,
    padding = {
        left = v14.ICON_TAB_ITEM_PADDING_LEFT,
        right = v14.ICON_TAB_ITEM_PADDING_RIGHT
    }
};
return function(v16)
    local v17 = l_Object_0.assign({}, v15, v16);
    local l_item_0 = v17.item;
    local v19 = v17.controlState == v9.SelectedPressed;
    local l_selected_0 = v17.selected;
    local v21 = v5();
    local v22 = if not l_selected_0 then v21.Tokens.Semantic.Color.Icon.Default else v21.Tokens.Semantic.Color.Icon.Emphasis;
    local v23 = v11(v10.Medium, v21);
    local v24 = v14.ICON_TAB_HEIGHT - v14.ICON_TAB_PADDING * 2;
    local v25 = true;
    if l_item_0.icon ~= nil then
        v25 = l_item_0.iconComponent == nil;
    end;
    assert(v25, "icon or iconComponent cannot be assigned at same time");
    return v12({
        size = UDim2.new(0, 0, 0, v14.ICON_TAB_HEIGHT),
        automaticSize = Enum.AutomaticSize.X,
        roundedBackgroundSize = UDim2.new(1, -(v14.ICON_TAB_PADDING * 2), 0, v24),
        roundedBackgroundPosition = UDim2.fromOffset(v14.ICON_TAB_PADDING, v14.ICON_TAB_PADDING),
        roundedBackgroundColor = v21.Theme.Divider.Color,
        roundedBackgroundTransparency = v14.ICON_TAB_SELECTED_TRANSPARENCY,
        spacing = if not (l_item_0.icon == nil) or l_item_0.iconComponent ~= nil then v14.ICON_TAB_ITEM_ICON_TITLE_SPACING else 0,
        padding = v17.padding,
        showRoundedBackground = if l_item_0.showRoundedBackground ~= nil then l_item_0.showRoundedBackground else l_selected_0,
        showOverlay = if l_item_0.showOverlay ~= nil then l_item_0.showOverlay else v19
    }, {
        Icon = if l_item_0.icon ~= nil then v3.createElement(l_Label_0, {
            Size = UDim2.new(0, v23, 0, v23),
            LayoutOrder = 1,
            Image = l_item_0.icon,
            BackgroundTransparency = 1,
            ScaleType = Enum.ScaleType.Fit,
            ImageColor3 = v22.Color3,
            ImageTransparency = v22.Transparency
        }) else if l_item_0.iconComponent ~= nil then v3.createElement("Frame", {
            Size = UDim2.new(0, v23, 0, v23),
            BackgroundTransparency = 1,
            LayoutOrder = 1
        }, v3.createElement(l_item_0.iconComponent, {
            placement = v8.Bottom,
            selected = l_selected_0,
            pressed = v19,
            hovered = false
        })) else nil,
        Title = v3.createElement(v7, {
            LayoutOrder = 2,
            Size = UDim2.new(0, 0, 1, 0),
            AutomaticSize = Enum.AutomaticSize.X,
            Text = l_item_0.title,
            fluidSizing = false,
            TextWrapped = true,
            TextXAlignment = Enum.TextXAlignment.Left,
            colorStyle = {
                Color = if not l_selected_0 then v21.Theme.TextDefault.Color else v21.Theme.TextEmphasis.Color,
                Transparency = 0
            },
            fontStyle = v21.Tokens.Semantic.Typography.Header,
            TextTruncate = Enum.TextTruncate.AtEnd,
            BackgroundTransparency = 1
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.Cryo);
local v4 = require(l_Parent_2.React);
local l_Object_0 = require(l_Parent_2.LuauPolyfill).Object;
local v6 = require(l_Parent_1.Core.Control.InteractableList);
local v7 = require(l_Parent_1.Core.Control.Enum.SelectionMode);
local v8 = require(l_Parent_0.SelectionImage.useSelectionCursor);
local v9 = require(l_Parent_1.App.SelectionImage.CursorKind);
local v10 = require(l_Parent_1.App.SelectionCursor.useCursor);
local v11 = require(l_Parent_1.UIBloxConfig);
local v12 = require(script.Parent.IconTab);
local v13 = require(script.Parent.HorizontalContainer);
local _ = require(script.Parent.Types);
local v15 = require(script.Parent.Constants);
local v16 = {
    selection = {
        1
    },
    items = {},
    padding = {
        left = v15.ICON_TAB_PADDING,
        right = v15.ICON_TAB_PADDING
    },
    itemSpacing = UDim.new(0, v15.ICON_TAB_ITEM_SPACING),
    itemPadding = {
        left = v15.ICON_TAB_ITEM_PADDING_LEFT,
        right = v15.ICON_TAB_ITEM_PADDING_RIGHT
    }
};
return function(v17)
    local v18 = l_Object_0.assign({}, v16, v17);
    local v19 = if not v11.useNewSelectionCursor then v8(v9.XLargePill) else v10(UDim.new(0.5, 0), 0);
    return v13({
        size = UDim2.new(0, 0, 0, v15.ICON_TAB_GROUP_HEIGHT),
        showRoundedBackground = false,
        automaticSize = Enum.AutomaticSize.X,
        padding = v18.padding
    }, {
        MainTabList = v4.createElement(v6, {
            size = UDim2.new(0, 0, 1, 0),
            automaticSize = Enum.AutomaticSize.X,
            fillDirection = Enum.FillDirection.Horizontal,
            horizontalAlignment = Enum.HorizontalAlignment.Left,
            sortOrder = Enum.SortOrder.LayoutOrder,
            itemList = v18.items,
            itemSize = UDim2.fromScale(0, 0),
            renderItem = function(v20, v21, v22)
                return v4.createElement(v12, {
                    item = v20,
                    selected = v22,
                    controlState = v21,
                    padding = v18.itemPadding
                }), {
                    LayoutOrder = v3.List.find(v18.items, v20),
                    AutomaticSize = Enum.AutomaticSize.XY,
                    SelectionImageObject = v19
                };
            end,
            onSelectionChanged = function(v23)
                local v24 = v18.items[v23[1]];
                if v24 ~= nil and v24.onActivated ~= nil then
                    v24.onActivated();
                end;
            end,
            selection = v18.selection,
            selectionMode = v7.Single,
            padding = v18.itemSpacing
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.React);
local v4 = require(l_Parent_1.Core.Style.useStyle);
local v5 = require(l_Parent_1.Core.ImageSet.ImageSetComponent);
local v6 = require(l_Parent_2.UIBlox.App.ImageSet.Images);
local _ = require(l_Parent_0.ImageSet.ImagesTypes);
local _ = require(l_Parent_1.App.Style.StyleTypes);
local function v17(v9, v10)
    local l_layoutOrder_0 = v9.layoutOrder;
    local l_isLeft_0 = v9.isLeft;
    local l_rotation_0 = v9.rotation;
    local l_progressImage_0 = v9.progressImage;
    local l_IconDefault_0 = v10.Theme.IconDefault;
    local l_Divider_0 = v10.Theme.Divider;
    return v3.createElement("Frame", {
        LayoutOrder = l_layoutOrder_0,
        Size = UDim2.fromScale(0.5, 1),
        BorderSizePixel = 0,
        BackgroundTransparency = 1,
        ClipsDescendants = true
    }, {
        CircleImage = v3.createElement(v5.Label, {
            Size = UDim2.fromScale(2, 1),
            AnchorPoint = if not l_isLeft_0 then Vector2.new(0.5, 0) else nil,
            Image = l_progressImage_0,
            BackgroundTransparency = 1
        }, {
            UIGradient = v3.createElement("UIGradient", {
                Rotation = l_rotation_0,
                Color = ColorSequence.new({
                    ColorSequenceKeypoint.new(0, l_IconDefault_0.Color),
                    ColorSequenceKeypoint.new(0.499, l_IconDefault_0.Color),
                    ColorSequenceKeypoint.new(0.5, l_Divider_0.Color),
                    ColorSequenceKeypoint.new(1, l_Divider_0.Color)
                }),
                Transparency = NumberSequence.new({
                    NumberSequenceKeypoint.new(0, l_IconDefault_0.Transparency),
                    NumberSequenceKeypoint.new(0.499, l_IconDefault_0.Transparency),
                    NumberSequenceKeypoint.new(0.5, l_Divider_0.Transparency),
                    NumberSequenceKeypoint.new(1, l_Divider_0.Transparency)
                })
            })
        })
    });
end;
return function(v18)
    local l_progress_0 = v18.progress;
    local l_isHolding_0 = v18.isHolding;
    local v21 = if not l_isHolding_0 then v18.icon else v18.iconHolding;
    local v22 = if not l_isHolding_0 then v6["icons/controls/keys/hold_button_assets/hold_Unpressed_RadialFill"] else v6["icons/controls/keys/hold_button_assets/hold_Pressed_RadialFill"];
    local v23 = if not l_isHolding_0 then v6["icons/controls/keys/hold_button_assets/hold_Unpressed_Arrow"] else v6["icons/controls/keys/hold_button_assets/hold_Pressed_Arrow"];
    local v24 = v4();
    return v3.createElement("Frame", {
        Size = UDim2.fromScale(1, 1),
        BorderSizePixel = 0,
        BackgroundTransparency = 1
    }, {
        Progress = v3.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            ZIndex = 1
        }, {
            UIListLayout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            Left = v17({
                layoutOrder = 1,
                isLeft = true,
                progressImage = v22,
                rotation = v3.useMemo(function()
                    return l_progress_0:map(function(v25)
                        return (math.clamp((v25 or 0) * 314 + 23, 180, 337));
                    end);
                end, {
                    l_progress_0
                })
            }, v24),
            Right = v17({
                layoutOrder = 2,
                progressImage = v22,
                rotation = v3.useMemo(function()
                    return l_progress_0:map(function(v26)
                        return (math.clamp((v26 or 0) * 314 + 23, 23, 180));
                    end);
                end, {
                    l_progress_0
                })
            }, v24)
        }),
        Icon = v3.createElement(v5.Label, {
            Size = UDim2.fromScale(1, 1),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.5, 0.5),
            Image = v21,
            ImageColor3 = v24.Theme.IconEmphasis.Color,
            ImageTransparency = v3.useMemo(function()
                return l_progress_0:map(function(v27)
                    if not v27 then
                        return 0;
                    else
                        return (math.clamp(0.8 - v27 * 0.8, 0, 0.8));
                    end;
                end);
            end, {
                l_progress_0
            }),
            BackgroundTransparency = 1,
            ZIndex = 2
        }),
        Arrow = v3.createElement(v5.Label, {
            Size = UDim2.fromScale(1, 1),
            AnchorPoint = Vector2.new(0.5, 0),
            Position = UDim2.fromScale(0.5, 0),
            Image = v23,
            ImageColor3 = v24.Theme.IconEmphasis.Color,
            ImageTransparency = 0,
            BackgroundTransparency = 1,
            ZIndex = 3
        })
    });
end;


local l_UserInputService_0 = game:GetService("UserInputService");
local l_RunService_0 = game:GetService("RunService");
local v2 = require(script.Parent.Parent.Parent.Parent.Parent.React);
local _ = require(script.Parent.Types);
local v4 = require(script.Parent.ProgressIcon);
local function v28(v5, v6, v7)
    local v8 = v2.useRef(0);
    local v9 = v2.useRef(0);
    local l_isAnimationRunning_0 = v5.isAnimationRunning;
    local l_isKeyPressed_0 = v5.isKeyPressed;
    local l_isKeyHolding_0 = v5.isKeyHolding;
    local l_onKeyHolding_0 = v6.onKeyHolding;
    local l_onAnimationRunning_0 = v6.onAnimationRunning;
    local l_onComplete_0 = v6.onComplete;
    local l_onReset_0 = v6.onReset;
    local l_animationTriggerTime_0 = v7.animationTriggerTime;
    local l_animationKeyHoldingTime_0 = v7.animationKeyHoldingTime;
    local l_animationCoolDownTime_0 = v7.animationCoolDownTime;
    local v21 = v2.useCallback(function(v20)
        v9.current = v9.current + v20;
        if l_animationTriggerTime_0 <= v9.current then
            l_onKeyHolding_0();
        end;
    end, {
        l_onKeyHolding_0,
        l_animationTriggerTime_0
    });
    local v23 = v2.useCallback(function(v22)
        v8.current = math.clamp(v8.current + v22 / l_animationKeyHoldingTime_0, 0, 1);
        l_onAnimationRunning_0(v8.current);
        if v8.current >= 1 then
            l_onComplete_0();
        end;
    end, {
        l_onAnimationRunning_0,
        l_animationKeyHoldingTime_0,
        l_onComplete_0
    });
    local v25 = v2.useCallback(function(v24)
        v8.current = math.clamp(v8.current - v24 / l_animationCoolDownTime_0, 0, 1);
        l_onAnimationRunning_0(v8.current);
        if v8.current <= 0 then
            l_onReset_0();
        end;
    end, {
        l_onAnimationRunning_0,
        l_animationCoolDownTime_0,
        l_onReset_0
    });
    v2.useEffect(function()
        local v26 = nil;
        local v27 = nil;
        if not l_isKeyHolding_0 then
            if not l_isKeyPressed_0 then
                if l_isAnimationRunning_0 then
                    v27 = v25;
                end;
            else
                v27 = v21;
            end;
        else
            v8.current = 0;
            v27 = v23;
        end;
        if v27 then
            v26 = l_RunService_0.RenderStepped:Connect(v27);
        end;
        if not v26 then
            return function()
            end;
        else
            return function()
                if l_isKeyPressed_0 then
                    v9.current = 0;
                end;
                v26:Disconnect();
            end;
        end;
    end, {
        l_isKeyPressed_0,
        l_isKeyHolding_0,
        l_isAnimationRunning_0,
        v21,
        v23,
        v25
    });
end;
return function(v29)
    local v30, v31 = v2.useState(false);
    local v32, v33 = v2.useState(false);
    local v34, v35 = v2.useState(false);
    local v36, v37 = v2.useState(false);
    local v38, v39 = v2.useBinding(nil);
    v28({
        isKeyPressed = v30,
        isKeyHolding = v32,
        isAnimationRunning = v34
    }, {
        onKeyHolding = v2.useCallback(function()
            v33(true);
            v35(true);
        end, {}),
        onAnimationRunning = v2.useCallback(function(v40)
            v39(v40);
        end, {}),
        onComplete = v2.useCallback(function()
            v31(false);
            v33(false);
            v35(false);
            v37(true);
            if v29.onHoldComplete then
                v29.onHoldComplete();
            end;
        end, {
            v29.onHoldComplete
        }),
        onReset = v2.useCallback(function()
            v35(false);
            v39(nil);
        end, {})
    }, {
        animationTriggerTime = v29.animationTriggerTime,
        animationKeyHoldingTime = v29.animationKeyHoldingTime,
        animationCoolDownTime = v29.animationCoolDownTime
    });
    local v42 = v2.useCallback(function(v41)
        if v41.UserInputType ~= Enum.UserInputType.Keyboard and v41.UserInputType ~= Enum.UserInputType.Gamepad1 then
            return ;
        else
            if v41.KeyCode == v29.keyCode then
                if v41.UserInputState == Enum.UserInputState.Begin then
                    v31(true);
                    v37(false);
                    if not v34 then
                        v39(nil);
                        return ;
                    else
                        v33(true);
                        return ;
                    end;
                elseif v41.UserInputState == Enum.UserInputState.End then
                    v31(false);
                    v33(false);
                end;
            end;
            return ;
        end;
    end, {
        v29.keyCode,
        v34
    });
    v2.useEffect(function()
        if not v29.progress then
            local v43 = l_UserInputService_0.InputBegan:Connect(v42);
            local v44 = l_UserInputService_0.InputEnded:Connect(v42);
            return function()
                v43:Disconnect();
                v44:Disconnect();
            end;
        else
            return function()
            end;
        end;
    end, {
        v42,
        v29.progress
    });
    local v45 = false;
    if not (not ((v29.progress or v32) or v34) and not v36) then
        v45 = true;
    end;
    return v2.createElement(v4, {
        progress = v29.progress or v38,
        icon = v29.icon,
        iconHolding = v29.iconHolding,
        isHolding = v45
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Parent_2 = l_Parent_1.Parent;
local v3 = require(l_Parent_2.React);
local l_Object_0 = require(l_Parent_2.LuauPolyfill).Object;
local v5 = require(l_Parent_1.Core.Style.useStyle);
local v6 = require(l_Parent_1.Core.ImageSet.ImageSetComponent);
local v7 = require(l_Parent_0.ImageSet.Enum.IconSize);
local v8 = require(l_Parent_0.ImageSet.getIconSize);
local v9 = require(l_Parent_1.Core.Text.GenericTextLabel.GenericTextLabel);
local v10 = require(script.Parent.ProgressIconAnimated);
local _ = require(script.Parent.Types);
local v12 = {
    iconLabelGap = 6,
    actionTextSpacingLeading = 12
};
local v13 = {
    hasProgress = false,
    animationTriggerTime = 0.3,
    animationKeyHoldingTime = 1.5,
    animationCoolDownTime = 0.75
};
local function v21(v14, v15)
    local l_layoutOrder_0 = v14.layoutOrder;
    local l_itemProps_0 = v14.itemProps;
    local v18 = v8(v7.Medium);
    local l_hasProgress_0 = l_itemProps_0.hasProgress;
    local v20 = nil;
    if l_hasProgress_0 then
        v20 = l_itemProps_0;
    end;
    return v3.createElement("Frame", {
        LayoutOrder = l_layoutOrder_0,
        Size = UDim2.fromOffset(v18, v18),
        BorderSizePixel = 0,
        BackgroundTransparency = 1
    }, {
        ProgressIcon = if not l_hasProgress_0 then nil else v3.createElement(v10, v20),
        Image = if not l_hasProgress_0 then v3.createElement(v6.Label, {
            Size = UDim2.fromScale(1, 1),
            Image = l_itemProps_0.icon,
            ImageColor3 = v15.Theme.TextEmphasis.Color,
            ImageTransparency = v15.Theme.TextEmphasis.Transparency,
            BackgroundTransparency = 1
        }) else nil
    });
end;
return function(v22)
    local v23 = l_Object_0.assign({}, v12, v22);
    local v24 = l_Object_0.assign({}, v13, v23.publicProps);
    local v25 = v5();
    return v3.createElement("Frame", {
        LayoutOrder = v23.index,
        Size = UDim2.fromOffset(0, 0),
        BorderSizePixel = 0,
        BackgroundTransparency = 1,
        AutomaticSize = Enum.AutomaticSize.XY
    }, {
        UIListLayout = v3.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = UDim.new(0, v23.iconLabelGap)
        }),
        ActionText = if not v24.actionText then nil else v3.createElement("Frame", {
            LayoutOrder = 1,
            Size = UDim2.fromOffset(0, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.XY
        }, {
            Padding = v3.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, v23.actionTextSpacingLeading)
            }),
            Label = v3.createElement(v9, {
                Size = UDim2.fromOffset(0, 0),
                AutomaticSize = Enum.AutomaticSize.XY,
                Text = v24.actionText,
                colorStyle = v25.Theme.TextEmphasis,
                fontStyle = v25.Font.SubHeader1,
                BackgroundTransparency = 1
            })
        }),
        Icon = v21({
            layoutOrder = 2,
            itemProps = v24
        }, v25),
        LabelText = v3.createElement(v9, {
            LayoutOrder = 3,
            Size = UDim2.fromOffset(0, 0),
            AutomaticSize = Enum.AutomaticSize.XY,
            Text = v24.text,
            colorStyle = v25.Theme.TextEmphasis,
            fontStyle = v25.Font.SubHeader1,
            BackgroundTransparency = 1
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local _ = require(l_Parent_1.Enums.InputType);
local _ = require(l_Parent_1.Parent.React);
local _ = require(l_Parent_0.ImageSet.ImagesTypes);
return {};


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Roact);
local v3 = require(l_Parent_1.t);
local v4 = require(l_Parent_1.Cryo);
local v5 = require(l_Parent_0.Core.Style.withStyle);
local v6 = require(l_Parent_0.Core.Control.Enum.ControlState);
local v7 = require(l_Parent_0.Core.ImageSet.ImageSetComponent);
local v8 = require(l_Parent_0.Core.ImageSet.Validator.validateImageSetData);
local v9 = require(l_Parent_0.App.Indicator.Badge);
local v10 = require(l_Parent_0.App.Indicator.Enum.BadgeStates);
local v11 = require(l_Parent_0.App.ImageSet.Enum.IconSize);
local v12 = require(l_Parent_0.App.ImageSet.getIconSize);
local v13 = require(l_Parent_0.Core.Control.InteractableList);
local v14 = require(l_Parent_0.Core.Animation.withAnimation);
local v15 = require(script.Parent.Enum.Placement);
local v16 = {
    frequency = 3
};
local v17 = v12(v11.Medium);
local v18 = v17 + 8;
local v19 = (v18 - v17) / 2;
local v20 = (v18 - v17) / 2;
local v21 = v19 + 4;
local v22 = v20 - 4;
local v23 = 12 + (64 - v18) / 2;
local v24 = 4 + (64 - v18);
local v25 = v2.PureComponent:extend("SystemBar");
v25.validateProps = v3.strictInterface({
    itemList = v3.array(v3.strictInterface({
        iconOn = v3.optional(v8),
        iconOff = v3.optional(v8),
        iconImageComponent = v3.optional(v3.union(v3.table, v3.callback)),
        iconComponent = v3.optional(v3.union(v3.table, v3.callback)),
        onActivated = v3.callback,
        badgeValue = v3.optional(v3.union(v3.integer, v3.string, v10.isEnumValue)),
        itemSize = v3.optional(v3.UDim2),
        bottomAligned = v3.optional(v3.boolean)
    })),
    selection = v3.optional(v3.integer),
    placement = v3.optional(v15.isEnumValue),
    hidden = v3.optional(v3.boolean),
    onSafeAreaChanged = v3.optional(v3.callback),
    size = v3.optional(v3.UDim2),
    position = v3.optional(v3.UDim2),
    layoutOrder = v3.optional(v3.integer),
    layoutPaddingOffset = v3.optional(v3.UDim),
    firstItemPaddingOffset = v3.optional(v3.UDim),
    lastItemPaddingOffset = v3.optional(v3.UDim),
    [v2.Children] = v3.optional(v3.any),
    roundCorners = v3.optional(v3.boolean),
    buttonStroke = v3.optional(v3.boolean),
    bgTransparency = v3.optional(v3.integer),
    sortOrder = v3.optional(v3.enum(Enum.SortOrder)),
    clipsDescendants = v3.optional(v3.boolean),
    experimentalTabSizePortraitY = v3.optional(v3.number)
});
v25.defaultProps = {
    placement = v15.Auto,
    layoutPaddingOffset = UDim.new(0, 0),
    firstItemPaddingOffset = UDim.new(0, 0),
    lastItemPaddingOffset = UDim.new(0, 0),
    clipsDescendants = true,
    experimentalTabSizePortraitY = 48
};
v25.isPortrait = function(v26)
    if v26.props.placement == v15.Left then
        return false;
    elseif v26.props.placement == v15.Bottom then
        return true;
    else
        return v26.state.portrait;
    end;
end;
v25.renderItem = function(v27, v28, v29, v30, v31)
    local v32;
    if v28.iconOn ~= nil then
        v32 = true;
        if not (v28.iconOff == nil) then
            goto label0;
        end;
    end;
    v32 = true;
    if v28.iconImageComponent == nil then
        v32 = v28.iconComponent ~= nil;
    end;
    ::label0::;
    assert(v32, "items must define either iconOn and iconOff or iconImageComponent or iconComponent");
    local v33 = v29 == v6.Pressed;
    v32 = v33 or v29 == v6.Hover;
    if not v28.iconComponent then
        local v34 = nil;
        v34 = not not v28.badgeValue and (v28.badgeValue == v10.isEmpty and true or (not not v3.string(v28.badgeValue) or v28.badgeValue > 0));
        local l_v19_0 = v19;
        local l_v20_0 = v20;
        if v32 then
            if not v27:isPortrait() then
                l_v19_0 = v21;
            else
                l_v20_0 = v22;
            end;
        end;
        return v14({
            positionX = l_v19_0,
            positionY = l_v20_0
        }, function(v37)
            return v5(function(v38)
                return v2.createElement(v28.iconImageComponent or v7.Label, {
                    Position = UDim2.fromOffset(math.floor(v37.positionX + 0.5), (math.floor(v37.positionY + 0.5))),
                    Size = UDim2.fromOffset(v17, v17),
                    BackgroundTransparency = not v27.props.buttonStroke and 1 or 0.99,
                    Image = not not v30 and v28.iconOn or v28.iconOff,
                    ImageColor3 = v38.Theme.IconDefault.Color,
                    ImageTransparency = not v33 and 0 or 0.5
                }, {
                    Badge = not not v34 and v2.createElement(v9, {
                        position = if v28.badgeValue == v10.isEmpty then UDim2.fromOffset(22, 2) else UDim2.fromOffset(18, -2),
                        value = v28.badgeValue
                    }) or nil,
                    UICorner = not not v27.props.roundCorners and v2.createElement("UICorner", {
                        CornerRadius = UDim.new(0.15, 0)
                    }) or nil,
                    UIStroke = not not v27.props.buttonStroke and v2.createElement("UIStroke", {
                        Color = Color3.new(0.4, 0.4, 0.4),
                        Transparency = 0,
                        Thickness = 1
                    }) or nil
                });
            end);
        end, v16), {
            LayoutOrder = v31
        };
    else
        local _ = nil;
        return v2.createElement(v28.iconComponent, {
            placement = if not v27:isPortrait() then v15.Left else v15.Bottom,
            hovered = v32,
            selected = v30,
            pressed = v33,
            badgeValue = v28.badgeValue
        }), {
            LayoutOrder = v31
        };
    end;
end;
v25.renderPortrait = function(v40, v41, v42)
    return v14({
        offset = if not v40.props.hidden then -v40.props.experimentalTabSizePortraitY else 0
    }, function(v43)
        return v2.createElement("Frame", v4.Dictionary.join(v41, {
            Position = UDim2.new(0, 0, 1, (math.floor(v43.offset + 0.5))),
            Size = UDim2.new(1, 0, 0, v40.props.experimentalTabSizePortraitY),
            ZIndex = 99
        }), {
            Layout = v2.createElement("UIListLayout", {
                HorizontalAlignment = Enum.HorizontalAlignment.Center
            }),
            InnerFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1
            }, v4.Dictionary.join({
                Constraint = v2.createElement("UISizeConstraint", {
                    MaxSize = Vector2.new(600, v40.props.experimentalTabSizePortraitY)
                }),
                Layout = v2.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = v40.props.layoutPaddingOffset + UDim.new(1 / #v40.props.itemList, -v18),
                    SortOrder = v40.props.sortOrder
                }, {})
            }, v42))
        });
    end, v16);
end;
v25.renderLandscape = function(v44, v45, v46, v47)
    return v14({
        offset = not v44.props.hidden and 0 or -64
    }, function(v48)
        return v2.createElement("Frame", v4.Dictionary.join(v45, {
            Position = UDim2.new(0, math.floor(v48.offset + 0.5), 0, 0),
            Size = UDim2.new(0, 64, 1, 0),
            ZIndex = 99,
            BackgroundTransparency = if not v47 then nil else 1
        }), v4.Dictionary.join({
            Padding = v2.createElement("UIPadding", {
                PaddingTop = if v47 then nil else v44.props.firstItemPaddingOffset + UDim.new(0, v23),
                PaddingBottom = if not v47 then nil else v44.props.lastItemPaddingOffset + UDim.new(0, v24)
            }),
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = if not v47 then nil else Enum.VerticalAlignment.Bottom,
                Padding = v44.props.layoutPaddingOffset + UDim.new(0, v24),
                SortOrder = v44.props.sortOrder
            })
        }, v46));
    end, v16);
end;
v25.renderBackground = function(v49, v50, v51)
    if not v49:isPortrait() then
        local v54 = v4.List.filter(v51, function(_, v53)
            return not v49.props.itemList[v53].bottomAligned;
        end);
        local v57 = v4.List.filter(v51, function(_, v56)
            return v49.props.itemList[v56].bottomAligned;
        end);
        local v58 = v49:renderLandscape(v50, v54);
        if #v57 > 0 then
            v58 = v2.createFragment({
                NavBar = v58,
                BottomAlignedNavBar = v49:renderLandscape(v50, v57, true)
            });
        end;
        return v58;
    else
        return v49:renderPortrait(v50, v51);
    end;
end;
v25.renderSafeArea = function(v59)
    local v60 = nil;
    local v61 = nil;
    if not v59.props.hidden then
        if not v59:isPortrait() then
            v60 = UDim2.new(0, 64, 0, 0);
            v61 = UDim2.new(1, -64, 1, 0);
        else
            v60 = UDim2.new(0, 0, 0, 0);
            v61 = UDim2.new(1, 0, 1, -v59.props.experimentalTabSizePortraitY);
        end;
    else
        v60 = UDim2.new(0, 0, 0, 0);
        v61 = UDim2.new(1, 0, 1, 0);
    end;
    return v2.createElement("Frame", {
        Position = v60,
        Size = v61,
        BackgroundTransparency = 1,
        [v2.Change.AbsoluteSize] = v59.onSafeAreaEvent,
        [v2.Change.AbsolutePosition] = v59.onSafeAreaEvent
    }, v59.props[v2.Children]);
end;
v25.renderList = function(v62, v63, v64)
    return v5(function(v65)
        local l_Theme_0 = v65.Theme;
        return v2.createElement("Frame", {
            Position = v62.props.position or UDim2.new(0, 0, 0, 0),
            Size = v62.props.size or UDim2.new(1, 0, 1, 0),
            BackgroundColor3 = Color3.new(0, 0, 0),
            ClipsDescendants = v62.props.clipsDescendants,
            LayoutOrder = v62.props.layoutOrder,
            BackgroundTransparency = v62.props.bgTransparency or 1,
            [v2.Change.AbsoluteSize] = function(v67)
                if v62.state.portrait and v67.AbsoluteSize.Y < v67.AbsoluteSize.X then
                    v62:setState({
                        portrait = false
                    });
                    return ;
                else
                    if not v62.state.portrait and v67.AbsoluteSize.X < v67.AbsoluteSize.Y then
                        v62:setState({
                            portrait = true
                        });
                    end;
                    return ;
                end;
            end
        }, {
            NavBar = v62:renderBackground({
                BackgroundColor3 = l_Theme_0.NavigationBar.Color,
                BackgroundTransparency = if not v62.props.roundCorners then l_Theme_0.NavigationBar.Transparency else 1,
                BorderSizePixel = 0
            }, (v4.List.map(v63, function(_, v69)
                return v64(v69);
            end))),
            SafeArea = v62:renderSafeArea()
        }, {
            UICorner = not not v62.props.roundCorners and v2.createElement("UICorner", {
                CornerRadius = UDim.new(0.15, 0) or nil
            }) or nil
        });
    end);
end;
v25.init = function(v70)
    v70:setState({
        portrait = true
    });
    v70.onSelectionChanged = function(v71)
        if #v71 > 0 then
            local v72 = v70.props.itemList[v71[1]];
            if not (not v72 or not v72.onActivated) then
                v72.onActivated();
            end;
        end;
    end;
    v70.onSafeAreaEvent = function(v73)
        if v70.props.onSafeAreaChanged then
            v70.props.onSafeAreaChanged({
                Position = v73.Position,
                AbsolutePosition = v73.AbsolutePosition,
                Size = v73.Size,
                AbsoluteSize = v73.AbsoluteSize
            });
        end;
    end;
end;
v25.render = function(v74)
    local l_itemList_0 = v74.props.itemList;
    local v76;
    v76 = v74.props.selection and if l_itemList_0[v76] == nil then nil else {
        v76
    };
    return v2.createElement(v13, {
        itemList = l_itemList_0,
        selection = v76,
        itemSize = UDim2.fromOffset(v18, v18),
        renderList = function(...)
            return v74:renderList(...);
        end,
        renderItem = function(...)
            return v74:renderItem(...);
        end,
        sortOrder = v74.props.sortOrder,
        onSelectionChanged = v74.onSelectionChanged
    });
end;
return v25;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local _ = require(l_Parent_1.Enums.InputType);
local v3 = require(l_Parent_1.Parent.Cryo);
local _ = require(l_Parent_0.ShortcutBar.Types);
local v5 = {};
local _ = function(v6)
    return function(v7, _)
        local l_icon_0 = v7.icon;
        if typeof(l_icon_0) ~= "string" and not l_icon_0.Image then
            if not l_icon_0[v6] then
                return ;
            else
                return v3.Dictionary.join(v7, {
                    icon = l_icon_0[v6]
                });
            end;
        else
            return ;
        end;
    end;
end;
v5.filterItems = function(v11, v12)
    local v17 = v3.List.filter(v11, function(v13, _)
        local l_icon_1 = v13.icon;
        local v16 = true;
        if typeof(l_icon_1) ~= "string" then
            v16 = l_icon_1.Image;
        end;
        return v16;
    end);
    if v12 then
        assert(v12, "Assert inputType not nil at this point to silence type checker");
        return (v3.List.join(v17, v3.List.filterMap(v11, function(v18, _)
            local l_icon_2 = v18.icon;
            if typeof(l_icon_2) ~= "string" and not l_icon_2.Image then
                if not l_icon_2[v12] then
                    return ;
                else
                    return v3.Dictionary.join(v18, {
                        icon = l_icon_2[v12]
                    });
                end;
            else
                return ;
            end;
        end)));
    else
        return v17;
    end;
end;
return v5;


local l_RunService_0 = game:GetService("RunService");
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v3 = require(l_Parent_1.React);
local l_EventConnection_0 = require(l_Parent_1.ReactUtils).EventConnection;
local v5 = require(l_Parent_0.Core.Style.useStyle);
return v3.memo((v3.forwardRef(function(v6, v7)
    local v8 = v5();
    local l_SelectionCursor_0 = v8.Tokens.Component.SelectionCursor;
    local l_ReducedMotion_0 = v8.Settings.ReducedMotion;
    local v11 = ColorSequence.new({
        ColorSequenceKeypoint.new(0, l_SelectionCursor_0.Gradient.Start.Color3),
        ColorSequenceKeypoint.new(1, l_SelectionCursor_0.Gradient.End.Color3)
    });
    local v12 = NumberSequence.new({
        NumberSequenceKeypoint.new(0, l_SelectionCursor_0.Gradient.Start.Transparency),
        NumberSequenceKeypoint.new(1, l_SelectionCursor_0.Gradient.End.Transparency)
    });
    local v13, v14 = v3.useBinding(0);
    local v15, v16 = v3.useBinding(v11);
    local v17, v18 = v3.useBinding(v12);
    return v3.createElement("Frame", {
        BackgroundTransparency = 1,
        Position = UDim2.fromOffset(-v6.offset, -v6.offset),
        Size = UDim2.new(1, v6.offset * 2, 1, v6.offset * 2),
        ref = v7
    }, {
        UICorner = v3.createElement("UICorner", {
            CornerRadius = v6.cornerRadius
        }),
        UIStroke = v3.createElement("UIStroke", {
            Color = Color3.new(1, 1, 1),
            Transparency = 0,
            Thickness = v6.borderWidth
        }, {
            UIGradient = v3.createElement("UIGradient", {
                Rotation = v13,
                Color = v15,
                Transparency = v17
            })
        }),
        HeartbeatConnection = v6.isVisible and v3.createElement(l_EventConnection_0, {
            event = l_RunService_0.Heartbeat,
            callback = function(_)
                local v20 = v13:getValue() + 2;
                local l_v11_0 = v11;
                local l_v12_0 = v12;
                if l_ReducedMotion_0 then
                    local v23 = (math.sin((math.rad(v20))) + 1) / 2;
                    l_v11_0 = ColorSequence.new(l_v11_0.Keypoints[1].Value:Lerp(l_v11_0.Keypoints[#l_v11_0.Keypoints].Value, v23));
                    local l_Value_0 = l_v12_0.Keypoints[1].Value;
                    l_v12_0 = NumberSequence.new(l_Value_0 + (l_v12_0.Keypoints[#l_v12_0.Keypoints].Value - l_Value_0) * v23);
                end;
                v14(v20);
                v16(l_v11_0);
                v18(l_v12_0);
            end
        })
    });
end)));


return (require(script.Parent.Parent.Parent.Parent.React).createContext({
    getCursor = function()
        return nil;
    end,
    getCursorByType = function()
        return nil;
    end
}));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v4 = require(l_Parent_1.Cryo);
local v5 = require(l_Parent_1.React);
local v6 = require(l_Parent_1.RoactGamepad);
local v7 = require(l_Parent_0.Core.Style.useStyle);
local v8 = require(script.Parent.CursorContext);
local v9 = require(script.Parent.CursorComponent);
local v10 = require(script.Parent.CursorType);
local function _(v11, v12, v13)
    return string.format("%f %f %f %f", v11.Scale, v11.Offset, v12, v13);
end;
local function v24(v15)
    local l_huge_0 = math.huge;
    local l_huge_1 = math.huge;
    local l_huge_2 = math.huge;
    local l_huge_3 = math.huge;
    for v20, v21 in string.split(v15, " ") do
        local v22 = tonumber(v21);
        if v22 ~= nil then
            if v20 == 1 then
                l_huge_0 = v22;
            elseif v20 == 2 then
                l_huge_1 = v22;
            elseif v20 == 3 then
                l_huge_2 = v22;
            elseif v20 == 4 then
                l_huge_3 = v22;
            end;
        end;
    end;
    local v23 = false;
    if l_huge_0 ~= math.huge then
        v23 = false;
        if l_huge_1 ~= math.huge then
            v23 = false;
            if l_huge_2 ~= math.huge then
                v23 = l_huge_3 ~= math.huge;
            end;
        end;
    end;
    assert(v23, "Error Not all parameters are decoded.");
    return UDim.new(l_huge_0, (math.max(0, l_huge_1 + l_huge_2))), l_huge_2, l_huge_3;
end;
return function(v25)
    local v26, v27 = v5.useState({});
    local v28, v29 = v5.useState({});
    local v30 = v5.createRef();
    local v31, v32 = v5.useState(nil);
    local v33 = v6.useRefCache();
    local l_SelectionCursor_0 = v7().Tokens.Component.SelectionCursor;
    local function v43(v35, v36, v37)
        local v38 = UDim.new(0, 0);
        if v35 ~= nil then
            v38 = v35;
        end;
        local v39 = 0;
        if v37 ~= nil then
            assert(v37 > 0, "Error borderWidth should be larger than 0.");
            v39 = v37;
        else
            v39 = l_SelectionCursor_0.BorderWidth;
        end;
        local v40 = 0;
        v40 = if v36 ~= nil then v36 - v39 else l_SelectionCursor_0.Offset - v39;
        local l_v38_0 = v38;
        local v42 = string.format("%f %f %f %f", l_v38_0.Scale, l_v38_0.Offset, v40, v39);
        if v26[v42] == nil then
            v27(v4.Dictionary.join(v26, {
                [v42] = true
            }));
        end;
        return v33[v42];
    end;
    local function v45(v44)
        assert(v10.isEnumValue(v44), ("Errorformat((tostring(v44))));
        if v28[v44] == nil then
            v29(v4.Dictionary.join(v28, {
                [v44] = true
            }));
        end;
        return v33[v44];
    end;
    local function v57()
        local v46 = {};
        for v47, _ in pairs(v26) do
            local v49 = false;
            if v33[v47] ~= nil then
                v49 = false;
                if v31 ~= nil then
                    v49 = v33[v47].current == v31;
                end;
            end;
            local v50, v51, v52 = v24(v47);
            v46[v47] = v5.createElement(v9, {
                ref = v33[v47],
                isVisible = v49,
                cornerRadius = v50,
                offset = v51,
                borderWidth = v52
            });
        end;
        for v53, _ in pairs(v28) do
            local v55 = v53.rawValue();
            local v56 = false;
            if v33[v53] ~= nil then
                v56 = false;
                if v31 ~= nil then
                    v56 = v33[v53].current == v31;
                end;
            end;
            v46[v53] = v5.createElement(v55, {
                ref = v33[v53],
                isVisible = v56
            });
        end;
        return v46;
    end;
    v5.useEffect(function()
        if v30.current ~= nil and v30.current:IsDescendantOf(game) then
            local v58 = v30.current:IsDescendantOf(l_CoreGui_0);
            local function v59()
                if not v58 then
                    return l_GuiService_0:GetPropertyChangedSignal("SelectedObject"):Connect(function()
                        if l_GuiService_0.SelectedObject == nil then
                            v32(nil);
                            return ;
                        else
                            v32(l_GuiService_0.SelectedObject.SelectionImageObject);
                            return ;
                        end;
                    end);
                else
                    return l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
                        if l_GuiService_0.SelectedCoreObject == nil then
                            v32(nil);
                            return ;
                        else
                            v32(l_GuiService_0.SelectedCoreObject.SelectionImageObject);
                            return ;
                        end;
                    end);
                end;
            end;
            local v60 = v59();
            local v61 = v30.current.AncestryChanged:Connect(function()
                v60:Disconnect();
                v60 = v59();
            end);
            return function()
                v60:Disconnect();
                v61:Disconnect();
            end;
        else
            return ;
        end;
    end, {});
    return v5.createElement(v8.Provider, {
        value = {
            getCursor = v43,
            getCursorByType = v45
        }
    }, v4.Dictionary.join({
        InvisibleContainer = v5.createElement("Frame", {
            Size = UDim2.new(0, 0, 0, 0),
            Visible = false,
            ref = v30
        }, (v57()))
    }, v25.children));
end;