local v0 = require(game:GetService("CorePackages").Rodux);
local l_Parent_0 = script.Parent;
return v0.combineReducers({
    AdjustmentInfo = require(l_Parent_0.AdjustmentInfo),
    AdjustmentTypeSelected = require(l_Parent_0.AdjustmentTypeSelected),
    SelectedAccessory = require(l_Parent_0.SelectedAccessory),
    AdjustmentSliders = require(l_Parent_0.AdjustmentSliders)
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Rodux);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v5 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Actions.SetDefaultRigidAdjustmentInfo);
local v6 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Actions.SetUserRigidAdjustmentInfo);
local v7 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Models.AdjustmentInfoRigid);
return v3.createReducer({}, {
    [v5.name] = function(v8, v9)
        return v2.Dictionary.join(v8, {
            [v9.assetId] = v2.Dictionary.join(v8[v9.assetId] or {}, v7.fromDefaultInfo(v9))
        });
    end,
    [v6.name] = function(v10, v11)
        return v2.Dictionary.join(v10, {
            [v11.assetId] = v2.Dictionary.join(v10[v11.assetId] or {}, v7.fromUserInfo(v11))
        });
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Actions.SetAdjustmentSliders);
local v5 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Actions.SetSelectedAccessory);
local v6 = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Enum.AdjustmentSliderType);
local function _()
    return {
        [v6.PositionX] = 0,
        [v6.PositionY] = 0,
        [v6.PositionZ] = 0,
        [v6.RotationX] = 0,
        [v6.RotationY] = 0,
        [v6.RotationZ] = 0,
        [v6.Scale] = 0
    };
end;
return v2.createReducer({}, {
    [v4.name] = function(v8, v9)
        return v3.Dictionary.join(v8, {
            [v9.assetId] = v3.Dictionary.join(v8[v9.assetId] or {}, {
                [v9.adjustmentSliderType] = v9.value
            })
        });
    end,
    [v5.name] = function(v10, v11)
        if v10[v11.selectedAccessory] then
            return v10;
        else
            return v3.Dictionary.join(v10, {
                [v11.selectedAccessory] = {
                    [v6.PositionX] = 0,
                    [v6.PositionY] = 0,
                    [v6.PositionZ] = 0,
                    [v6.RotationX] = 0,
                    [v6.RotationY] = 0,
                    [v6.RotationZ] = 0,
                    [v6.Scale] = 0
                }
            });
        end;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(game:GetService("CorePackages").Rodux);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
return v1.createReducer(require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Enum.AdjustmentTypeEnum).Position, {
    [require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Actions.SetAdjustmentType).name] = function(_, v4)
        return v4.adjustmentType;
    end
});


return require(game:GetService("CorePackages").Rodux).createReducer(nil, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AccessoryAdjustment.Actions.SetSelectedAccessory).name] = function(_, v1)
        return v1.selectedAccessory;
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Catalog.Models.SortResults);
return v2.makeActionCreator(script.Name, function(v4, v5, v6)
    return {
        searchUuid = v4,
        sortResults = v5,
        forceUpdate = v6
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5)
    return {
        assets = v4,
        fullReset = v5
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        assetTypeId = v0,
        assetId = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        outfitId = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5)
    return {
        outfitTypeId = v4,
        outfitId = v5
    };
end);


local v0 = require(game:GetService("CorePackages").Rodux);
local _ = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Types);
return v0.makeActionCreator(script.Name, function(v2, v3)
    return {
        outfitId = v2,
        name = v3
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4)
    return {
        avatarData = v4
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        hasLayeredHair = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4)
    return {
        outfitId = tostring(v4)
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5)
    return {
        assets = v4,
        assetTypeId = v5
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v5)
    v3.isType(v5, "table", "SetAssetInfoFromInventoryFetch action expects assets to be a table");
    return {
        assets = v5
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
return v1.makeActionCreator(script.Name, function(v3)
    v2.isType(v3, "table", "SetAssetInfoFromOutfitDetails action expects assets to be a table");
    return {
        assets = v3
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        scales = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        minimumDeltaEBodyColorDifference = v0,
        scalesRules = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        avatarType = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bodyColor3s = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bodyColorViewSetting = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bodyColors = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bodyPartRangeIds = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bundles = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Rodux);
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
return v1.makeActionCreator("Avatar-" .. script.Name, function(v3, v4)
    v2.isTypeOrNil(v3, "number", "SetCategoryAndSubCategory expects category");
    v2.isTypeOrNil(v4, "number", "SetCategoryAndSubCategory expects subcategory");
    return {
        category = v3,
        subcategory = v4
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        connectionState = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        defaultBodyColorRanges = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        defaultBodyColors = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        extendedBodyColors = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Types);
return require(l_CorePackages_0.Rodux).makeActionCreator(script.Name, function(v2)
    return {
        outfit = v2
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5)
    return {
        ids = v4,
        itemType = v5
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5)
    return {
        itemSubType = v4,
        itemIds = v5
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        assetTypeId = v0,
        isFinished = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        value = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v5 = require(l_Modules_0.LuaApp.mutedError);
local v6 = require(l_Modules_0.AvatarExperience.ColorPicker.ColorPickerUtils);
local v7 = require(l_Modules_0.AvatarExperience.Flags.FFlagColorPickerSliderEpsilon);
return v2.makeActionCreator(script.Name, function(v8, v9, v10, v11)
    v3.isType(v8, "string", "rangeId");
    v3.isType(v9, "string", "bodyPartForSkinColoringId");
    v3.isType(v10, "number", "sliderValue");
    if not v7 then
        if not (v10 >= 0) or v10 > 1 then
            v5(string.format("SetRangeIdToBodyPartsToSliderAndColor3Values: sliderValue %s should be between 0 and 1 inclusive", (tostring(v10))));
            v10 = math.clamp(v10, 0, 1);
        end;
    else
        local v12, v13 = v6.clampBetween0And1(v10);
        if v13 then
            v5(string.format("getColor3AtValueInRange: value %s should be between 0 and 1 inclusive", (tostring(v10))));
        end;
        v10 = v12;
    end;
    v3.isType(v11, "Color3", "color3");
    return {
        rangeId = v8,
        bodyPartForSkinColoringId = v9,
        sliderValue = v10,
        color3 = v11
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1, v2)
    return {
        rangeId = v0,
        color3 = v1,
        sliderValue = v2
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        items = v0,
        itemTypeId = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        selectedBodyPartColorIds = v0
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v4 = require(l_Modules_0.LuaApp.mutedError);
return v2.makeActionCreator(script.Name, function(v5)
    if not (v5 >= 0) or #v3.BodyPartButtonData < v5 then
        v4("selectedBodyPartIndex is out of range");
    end;
    return {
        selectedBodyPartIndex = v5
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        rangeId = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0)
    return {
        selectedSlot = v0
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        searchUuid = v0,
        status = v1
    };
end);


return require(game:GetService("CorePackages").Rodux).makeActionCreator("AvatarEditor-" .. script.Name, function()
    return {};
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4, v5, v6)
    return {
        assetTypeId = v4,
        assetId = v5,
        overrideOrder = v6
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Rodux);
local _ = require(l_CoreGui_0.RobloxGui.Modules.AvatarExperience.Common.Types);
return v2.makeActionCreator(script.Name, function(v4)
    return {
        assetTypeIdToAssetIdToAssetMetadataModel = v4
    };
end);


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Constants);
return function(v1, v2)
    v1:setRBXEventStream(v2, "avatarEditorOpenedFromLandingPage", {
        feature = v0.AnalyticsTag
    });
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Components.Impressions.ImpressionsEnums);
return function(v1, v2, v3, v4, v5, v6, v7)
    assert(type(v2) == "string", "Expected eventContext to be a string");
    assert(type(v3) == "string", "Expected propertyName to be a string");
    local v8 = true;
    if type(v4) ~= "string" then
        v8 = type(v4) == "number";
    end;
    assert(v8, "Expected propertyValue to be a string");
    assert(type(v5) == "number", "Expected currentCategoryIndex to be a number");
    assert(type(v6) == "number", "Expected tabIndex to be a number");
    local v9 = nil;
    if v2 == "EquipAsset" then
        v9 = v0.ActionType.ITEM_CLICK;
    elseif v2 == "UnequipAsset" then
        v9 = v0.ActionType.ITEM_DESELECTED;
    end;
    v1:setRBXEventStream(v2, "marketplaceOrganicFELog", {
        requestId = v7,
        itemId = v4,
        actionType = v9,
        surface = v0.MarketplaceSurfaceType.MARKETPLACE_USER_INVENTORY
    });
    v1:setRBXEventStream(v2, "avatarEditorPropertyChanged", {
        prop = v3,
        val = v4,
        ci = v5,
        ti = v6
    });
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Constants);
return function(v1, v2)
    v1:setRBXEventStream(v2, "catalogToAvatarBackButton", {
        feature = v0.AnalyticsTag
    });
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Constants);
return function(v1, v2)
    v1:setRBXEventStream(v2, "catalogToAvatarButton", {
        feature = v0.AnalyticsTag
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v4, v5, v6, v7)
    v2.isType(v5, "string", "clickNavigationTab event expects eventContext to be a string");
    v2.isType(v6, "string", "clickNavigationTab event expects categoryName to be a string");
    v2.isType(v7, "string", "clickNavigationTab event expects subCategoryName to be a string");
    v4:setRBXEventStream(v5, "avatarEditorNavButtonClick", {
        feature = v3.AnalyticsTag,
        nav = v6,
        subNav = v7
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v4, v5, v6, v7)
    v2.isType(v5, "string", "clickShopForMore event expects eventContext to be a string");
    v2.isType(v6, "string", "clickShopForMore event expects categoryName to be a string");
    v2.isType(v7, "string", "clickShopForMore event expects subCategoryName to be a string");
    v4:setRBXEventStream(v5, "clickShopForMore", {
        feature = v3.AnalyticsTag,
        nav = v6,
        subNav = v7
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v4, v5, v6, v7, v8)
    v2.isType(v5, "string", "clickSubButton event expects eventContext to be a string");
    v2.isType(v6, "string", "clickSubButton event expects categoryName to be a string");
    v2.isType(v7, "string", "clickSubButton event expects subCategoryName to be a string");
    v2.isType(v8, "string", "clickSubButton event expects subButtonName to be a string");
    v4:sendEventDeferred(v5, "avatarEditorSubButtonClick", {
        feature = v3.AnalyticsTag,
        nav = v6,
        subNav = v7,
        subButton = v8
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v4, v5, v6, v7, v8)
    v2.isType(v5, "string", "equippedEmote event expects userId to be a string");
    v2.isType(v6, "string", "equippedEmote event expects browserTrackerId to be a string");
    v2.isType(v7, "string", "equippedEmote event expects assetId to be a string");
    v2.isType(v8, "number", "equippedEmote event expects slot to be a string");
    v4:setRBXEventStream("avatarEditor", "equippedEmote", {
        feature = v3.AnalyticsTag,
        uid = v5,
        btid = v6,
        slot = v8,
        assetID = v7
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
return function(v4, v5, v6, v7)
    v2.isType(v5, "string", "selectedBodyColorRangeWithId event expects userId to be a string");
    v2.isType(v6, "string", "selectedBodyColorRangeWithId event expects browserTrackerId to be a string");
    v2.isType(v7, "string", "selectedBodyColorRangeWithId event expects rangeId to be a string");
    v4:setRBXEventStream("avatarEditor", "selectedBodyColorRangeWithId", {
        feature = v3.AnalyticsTag,
        uid = v5,
        btid = v6,
        rangeId = v7
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Cryo);
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.t);
local v4 = require(l_CorePackages_0.UIBlox);
local v5 = require(l_CorePackages_0.AvatarExperienceDeps);
local l_Text_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Text;
local l_RoactFitComponents_0 = v5.RoactFitComponents;
local l_FitTextLabel_0 = l_RoactFitComponents_0.FitTextLabel;
local l_withStyle_0 = v4.Style.withStyle;
local l_withSelectionCursorProvider_0 = v4.App.SelectionImage.withSelectionCursorProvider;
local l_CursorKind_0 = v4.App.SelectionImage.CursorKind;
local v12 = v2.PureComponent:extend("BulletListEntry");
v12.validateProps = v3.strictInterface({
    text = v3.string,
    layoutOrder = v3.integer,
    positionChangedCallback = v3.optional(v3.callback),
    NextSelectionLeft = v3.optional(v3.table),
    NextSelectionRight = v3.optional(v3.table),
    NextSelectionUp = v3.optional(v3.table),
    NextSelectionDown = v3.optional(v3.table),
    forwardRef = v3.optional(v3.table)
});
v12.renderWithProviders = function(v13, v14, v15)
    local l_Font_0 = v14.Font;
    local l_Theme_0 = v14.Theme;
    local l_Font_1 = l_Font_0.CaptionBody.Font;
    local v19 = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize;
    local v20 = l_Text_0.GetTextWidth("\226\128\162 ", l_Font_1, v19);
    return v2.createElement(l_RoactFitComponents_0.FitFrameVertical, {
        width = UDim.new(1, 0),
        FillDirection = Enum.FillDirection.Horizontal,
        VerticalAlignment = Enum.VerticalAlignment.Top,
        BackgroundTransparency = 1,
        LayoutOrder = v13.props.layoutOrder,
        [v2.Change.AbsolutePosition] = v13.props.positionChangedCallback,
        SelectionImageObject = v15(l_CursorKind_0.RoundedRect),
        NextSelectionLeft = v13.props.NextSelectionLeft,
        NextSelectionRight = v13.props.NextSelectionRight,
        NextSelectionUp = v13.props.NextSelectionUp,
        NextSelectionDown = v13.props.NextSelectionDown,
        [v2.Ref] = v13.props.forwardRef
    }, {
        Bullet = v2.createElement("TextLabel", {
            BackgroundTransparency = 1,
            Size = UDim2.fromOffset(v20, v19),
            Text = "\226\128\162 ",
            Font = l_Font_1,
            TextSize = v19,
            TextColor3 = l_Theme_0.TextDefault.Color,
            TextTransparency = l_Theme_0.TextDefault.Transparency,
            TextXAlignment = Enum.TextXAlignment.Left,
            LayoutOrder = 1
        }),
        Text = v2.createElement(l_FitTextLabel_0, {
            width = UDim.new(1, -v20),
            BackgroundTransparency = 1,
            Text = v13.props.text,
            Font = l_Font_1,
            TextSize = v19,
            TextColor3 = l_Theme_0.TextDefault.Color,
            TextTransparency = l_Theme_0.TextDefault.Transparency,
            TextXAlignment = Enum.TextXAlignment.Left,
            LayoutOrder = 2
        })
    });
end;
v12.render = function(v21)
    return l_withStyle_0(function(v22)
        return l_withSelectionCursorProvider_0(function(v23)
            return v21:renderWithProviders(v22, v23);
        end);
    end);
end;
return v2.forwardRef(function(v24, v25)
    return v2.createElement(v12, v1.Dictionary.join(v24, {
        forwardRef = v25
    }));
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.Packages.RoactGamepad);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_CorePackages_0.UIBlox);
local l_Focusable_0 = v4.Focusable;
local l_VerticalScrollViewWithMargin_0 = v6.App.Container.VerticalScrollViewWithMargin;
local l_withStyle_0 = v6.Style.withStyle;
local v10 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.BulletListEntry);
local v11 = v3.PureComponent:extend("ItemsBulletList");
v11.validateProps = v5.strictInterface({
    items = v5.array(v5.string),
    maxHeight = v5.number,
    onScrollableUpdated = v5.callback,
    forwardRef = v5.table
});
v11.init = function(v12)
    v12:setState({
        canvasSizeY = 0
    });
    v12.scrollViewRef = v3.createRef();
    local v13, v14 = v3.createBinding(false);
    v12.topGradientVisibleBinding = v13;
    v12.updateTopGradientVisibleBinding = v14;
    v13, v14 = v3.createBinding(false);
    v12.bottomGradientVisibleBinding = v13;
    v12.updateBottomGradientVisibleBinding = v14;
    v12.checkIsScrollable = function()
        v12.props.onScrollableUpdated(v12.props.maxHeight < v12.state.canvasSizeY);
    end;
    v12.onContentSizeChanged = function(v15)
        if v12.state.canvasSizeY ~= v15.AbsoluteContentSize.Y then
            v12:setState({
                canvasSizeY = v15.AbsoluteContentSize.Y
            });
        end;
    end;
    v13 = v12.props.forwardRef;
    v12.firstEntryPositionChanged = function(v16)
        local v17 = v13:getValue();
        if v17 then
            if v16.AbsolutePosition.Y + 5 < v17.AbsolutePosition.Y then
                v12.updateTopGradientVisibleBinding(true);
                return ;
            else
                v12.updateTopGradientVisibleBinding(false);
                return ;
            end;
        else
            return ;
        end;
    end;
    v12.lastEntryPositionChanged = function(v18)
        local v19 = v13:getValue();
        if v19 then
            if v19.AbsolutePosition.Y + v19.AbsoluteSize.Y < (v18.AbsolutePosition.Y + v18.AbsoluteSize.Y) - 5 then
                v12.updateBottomGradientVisibleBinding(true);
                return ;
            else
                v12.updateBottomGradientVisibleBinding(false);
                return ;
            end;
        else
            return ;
        end;
    end;
end;
v11.createBulletList = function(v20)
    local v21 = {
        Layout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            Padding = UDim.new(0, 10),
            SortOrder = Enum.SortOrder.LayoutOrder,
            [v3.Change.AbsoluteContentSize] = v20.onContentSizeChanged
        })
    };
    for v22, v23 in v20.props.items, nil, nil do
        local v24 = nil;
        if v22 == 1 then
            v24 = v20.firstEntryPositionChanged;
        elseif v22 == #v20.props.items then
            v24 = v20.lastEntryPositionChanged;
        end;
        v21[v22] = v3.createElement(v10, {
            text = v23,
            layoutOrder = v22,
            positionChangedCallback = v24
        });
    end;
    return v21;
end;
v11.renderWithProviders = function(v25, v26)
    local l_Theme_0 = v26.Theme;
    return v3.createElement(l_Focusable_0.Frame, {
        defaultChild = v25.scrollViewRef,
        restorePreviousChildFocus = true,
        Size = UDim2.new(1, 0, 0, (math.min(v25.state.canvasSizeY, v25.props.maxHeight))),
        BackgroundTransparency = 1,
        [v3.Ref] = v25.props.forwardRef
    }, {
        TopGradient = v3.createElement("Frame", {
            Visible = v25.topGradientVisibleBinding,
            Size = UDim2.new(1, 0, 0, 30),
            Position = UDim2.fromScale(0, 0),
            BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
            BorderSizePixel = 0,
            ZIndex = 2
        }, {
            UIGradient = v3.createElement("UIGradient", {
                Rotation = 90,
                Transparency = NumberSequence.new({
                    NumberSequenceKeypoint.new(0, 0),
                    NumberSequenceKeypoint.new(1, 1)
                })
            })
        }),
        ScrollView = v3.createElement(l_VerticalScrollViewWithMargin_0, {
            size = UDim2.fromScale(1, 1),
            canvasSizeY = UDim.new(0, v25.state.canvasSizeY),
            isGamepadFocusable = true,
            [v3.Ref] = v25.scrollViewRef
        }, (v25:createBulletList())),
        BottomGradient = v3.createElement("Frame", {
            Visible = v25.bottomGradientVisibleBinding,
            Size = UDim2.new(1, 0, 0, 30),
            Position = UDim2.fromScale(0, 1),
            AnchorPoint = Vector2.new(0, 1),
            BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
            BorderSizePixel = 0,
            ZIndex = 2
        }, {
            UIGradient = v3.createElement("UIGradient", {
                Rotation = 90,
                Transparency = NumberSequence.new({
                    NumberSequenceKeypoint.new(0, 1),
                    NumberSequenceKeypoint.new(1, 0)
                })
            })
        })
    });
end;
v11.render = function(v28)
    return l_withStyle_0(function(v29)
        return v28:renderWithProviders(v29);
    end);
end;
v11.didMount = function(v30)
    v30.checkIsScrollable();
end;
v11.didUpdate = function(v31, v32, v33)
    local v34 = v31.props.maxHeight ~= v32.maxHeight;
    local v35 = v31.state.canvasSizeY ~= v33.canvasSizeY;
    if not (not v34 and not v35) then
        v31.checkIsScrollable();
    end;
end;
return v3.forwardRef(function(v36, v37)
    return v3.createElement(v11, v2.Dictionary.join(v36, {
        forwardRef = v37
    }));
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_CorePackages_0.Packages.t);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local v7 = require(l_CorePackages_0.UIBlox);
local v8 = require(l_CorePackages_0.FitFrame);
local v9 = require(l_CorePackages_0.Packages.RoactGamepad);
local l_Focusable_0 = v9.Focusable;
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local l_DeviceOrientationMode_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).DeviceOrientationMode;
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local l_withStyle_0 = v7.Style.withStyle;
local l_getPageMargin_0 = v7.App.Container.getPageMargin;
local l_Images_0 = v7.App.ImageSet.Images;
local l_IconButton_0 = v7.App.Button.IconButton;
local l_IconSize_0 = v7.App.ImageSet.Enum.IconSize;
local l_FitTextLabel_0 = v8.FitTextLabel;
local v20 = l_Images_0["icons/actions/edit/edit"];
local v21 = l_Images_0["icons/actions/edit/delete"];
local v22 = v3.PureComponent:extend("ManageActionBar");
v22.validateProps = v5.strictInterface({
    gradientFade = v5.optional(v5.boolean),
    multiSelect = v5.optional(v5.boolean),
    selectedOutfits = v5.array(v5.string),
    deleteOutfit = v5.callback,
    renameOutfit = v5.callback,
    bottomPadding = v5.optional(v5.number),
    ZIndex = v5.integer,
    NextSelectionUp = v5.optional(v5.table),
    forwardRef = v5.optional(v5.table),
    showCustomOutfitNames = v5.boolean,
    isPortrait = v5.boolean
});
v22.defaultProps = {
    gradientFade = false,
    multiSelect = false
};
v22.init = function(v23)
    v23.renameButtonRef = v3.createRef();
    v23.deleteButtonRef = v3.createRef();
    local v24, v25 = v3.createBinding(UDim.new(0, 24));
    v23.marginBinding = v24;
    v23.updateMarginBinding = v25;
    v23.absoluteSizeChanged = function(v26)
        v23.updateMarginBinding(UDim.new(0, (l_getPageMargin_0(v26.AbsoluteSize.X))));
    end;
end;
v22.renderBarItems = function(v27, v28, v29, _)
    local v31 = {
        UIPadding = v3.createElement("UIPadding", {
            PaddingLeft = v27.marginBinding,
            PaddingRight = v27.marginBinding
        })
    };
    local l_Theme_0 = v29.Theme;
    if v27.props.gradientFade then
        v31.UIGradient = v3.createElement("UIGradient", {
            Rotation = 270,
            Transparency = NumberSequence.new({
                NumberSequenceKeypoint.new(0, l_Theme_0.BackgroundDefault.Transparency),
                NumberSequenceKeypoint.new(0.8, l_Theme_0.BackgroundDefault.Transparency),
                NumberSequenceKeypoint.new(1, 1)
            })
        });
    end;
    if not v27.props.multiSelect then
        if v27.props.showCustomOutfitNames then
            v31.RenameButton = v3.createElement(l_IconButton_0, {
                anchorPoint = Vector2.new(0, 0.5),
                position = UDim2.fromScale(0, 0.5),
                size = UDim2.new(0, 44, 1, 0),
                icon = v20,
                iconSize = l_IconSize_0.Medium,
                iconColor3 = l_Theme_0.SystemPrimaryDefault.Color,
                iconTransparency = l_Theme_0.SystemPrimaryDefault.Transparency,
                onActivated = v27.props.renameOutfit,
                buttonRef = v27.renameButtonRef,
                NextSelectionRight = v27.deleteButtonRef
            });
        end;
    else
        local l_Font_0 = v29.Font.Header2.Font;
        local v34 = v29.Font.BaseSize * v29.Font.Header2.RelativeSize;
        local l_selectItem_0 = v28.selectItem;
        if #v27.props.selectedOutfits > 0 then
            l_selectItem_0 = v28.countSelected;
        end;
        v31.SelectedCountTextLabel = v3.createElement(l_FitTextLabel_0, {
            width = l_FitTextLabel_0.Width.FitToText,
            BackgroundTransparency = 1,
            Text = l_selectItem_0,
            Font = l_Font_0,
            Position = UDim2.fromScale(0, 0.5),
            AnchorPoint = Vector2.new(0, 0.5),
            TextColor3 = v29.Theme.TextEmphasis.Color,
            TextSize = v34
        });
    end;
    local v36 = #v27.props.selectedOutfits > 0;
    v31.DeleteButton = v3.createElement(l_IconButton_0, {
        anchorPoint = Vector2.new(1, 0.5),
        position = UDim2.fromScale(1, 0.5),
        size = UDim2.new(0, 44, 1, 0),
        icon = v21,
        iconSize = l_IconSize_0.Medium,
        iconColor3 = l_Theme_0.SystemPrimaryDefault.Color,
        iconTransparency = not not v36 and l_Theme_0.SystemPrimaryDefault.Transparency or 0.5,
        onActivated = not not v36 and v27.props.deleteOutfit or nil,
        buttonRef = v27.deleteButtonRef,
        NextSelectionLeft = not v27.props.multiSelect and v27.renameButtonRef or nil
    });
    return v31;
end;
v22.renderWithProviders = function(v37, v38, v39, v40)
    local l_Theme_1 = v39.Theme;
    local v42 = 64;
    if v37.props.isPortrait then
        v42 = v42 + 24;
    end;
    if v37.props.bottomPadding then
        v42 = v42 + v37.props.bottomPadding;
    end;
    local v43 = v37:renderBarItems(v38, v39, v40);
    local l_deleteButtonRef_0 = v37.deleteButtonRef;
    if not (v37.props.multiSelect or not v37.props.showCustomOutfitNames) then
        l_deleteButtonRef_0 = v37.renameButtonRef;
    end;
    return v3.createElement(l_Focusable_0.Frame, {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, v42),
        Position = UDim2.fromScale(0, 1),
        AnchorPoint = Vector2.new(0, 1),
        ZIndex = v37.props.ZIndex,
        [v3.Change.AbsoluteSize] = v37.absoluteSizeChanged,
        defaultChild = l_deleteButtonRef_0,
        NextSelectionUp = v37.props.NextSelectionUp,
        [v3.Ref] = v37.props.forwardRef
    }, {
        Background = v3.createElement("Frame", {
            BackgroundColor3 = l_Theme_1.BackgroundDefault.Color,
            BackgroundTransparency = l_Theme_1.BackgroundDefault.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 64)
        }, v43),
        GapFiller = v37.props.isPortrait and v3.createElement("Frame", {
            BackgroundColor3 = l_Theme_1.BackgroundDefault.Color,
            BackgroundTransparency = l_Theme_1.BackgroundDefault.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 24),
            Position = UDim2.fromScale(0, 1),
            AnchorPoint = Vector2.new(0, 1)
        })
    });
end;
v22.render = function(v45)
    return l_withLocalization_0({
        countSelected = {
            "Feature.Avatar.Label.CountSelected";
            itemCount = #v45.props.selectedOutfits
        },
        selectItem = "Feature.Avatar.Label.SelectItem"
    })(function(v46)
        return l_withStyle_0(function(v47)
            return v9.withFocusController(function(v48)
                return v45:renderWithProviders(v46, v47, v48);
            end);
        end);
    end);
end;
v22 = v4.connect(function(v49, _)
    return {
        isPortrait = v49.DeviceOrientation == l_DeviceOrientationMode_0.Portrait
    };
end, nil)((l_RoactAppPolicy_0.connect(function(v51, _)
    return {
        showCustomOutfitNames = v51.getCustomOutfitNames()
    };
end)(v22)));
return v3.forwardRef(function(v53, v54)
    return v3.createElement(v22, v2.Dictionary.join(v53, {
        forwardRef = v54
    }));
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_GuiService_0 = game:GetService("GuiService");
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.Packages.t);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local v8 = require(l_CorePackages_0.UIBlox);
local v9 = require(l_CorePackages_0.FitFrame);
local v10 = require(l_CorePackages_0.Packages.RoactGamepad);
local l_ExternalEventConnection_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).ExternalEventConnection;
local l_isGamepadInput_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).isGamepadInput;
local l_FitTextLabel_0 = v9.FitTextLabel;
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v15 = require(l_Modules_0.LuaApp.Constants);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v17 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.withStackVisibilityWrapper);
local v18 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local v19 = require(l_Modules_0.AvatarExperience.AvatarEditor.Services.Analytics);
local v20 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.Debug.logOnOverlayClosed);
local v21 = require(l_Modules_0.AvatarExperience.Common.Components.BoundInputsUpdater);
local v22 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.NavOverlayPageContainer);
local v23 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.OutfitSelectionGrid);
local v24 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.ManageActionBar);
local v25 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.OutfitDetailsPeekView);
local v26 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.NavigationUtils);
local v27 = require(l_Modules_0.AvatarExperience.Common.Thunks.NavigateWithLock);
local l_Images_0 = v8.App.ImageSet.Images;
local l_withStyle_0 = v8.Style.withStyle;
local l_withSelectionCursorProvider_0 = v8.App.SelectionImage.withSelectionCursorProvider;
local l_CursorKind_0 = v8.App.SelectionImage.CursorKind;
local l_IconButton_0 = v8.App.Button.IconButton;
local l_IconSize_0 = v8.App.ImageSet.Enum.IconSize;
local v34 = require(l_Modules_0.AvatarExperience.Flags.FFlagAXEnableOutfitAttribution);
local l_Focusable_0 = v10.Focusable;
local v36 = l_Images_0["icons/navigation/close"];
local v37 = l_GuiService_0:IsTenFootInterface();
local v38 = v5.PureComponent:extend("ManageOutfitPage");
v38.validateProps = v6.strictInterface({
    navigateWithLock = if not v34 then nil else v6.callback,
    navigation = v6.table,
    avatarRoute = v6.table,
    showCustomOutfitNames = v6.boolean,
    avatarEditorAnalytics = v6.table
});
v38.init = function(v39)
    v39:setState({
        multiSelectionEnabled = false,
        outfitGridCanScroll = false,
        selectedOutfits = {},
        exitButtonPosition = Vector2.new(0, 0),
        isGamepad = l_isGamepadInput_0((l_UserInputService_0:GetLastInputType()))
    });
    v39.focusController = v10.createFocusController();
    v39.exitButtonRef = v5.createRef();
    v39.selectButtonRef = v5.createRef();
    v39.gridViewRef = v5.createRef();
    v39.actionBarRef = v5.createRef();
    v39.peekViewRef = v5.createRef();
    v39.outfitDetailsPeekViewRefs = v10.createRefCache();
    v39.navigateBack = function()
        v39.props.navigation.goBack();
    end;
    v39.selectedOutfitUpdated = function(v40)
        if typeof(v40) == "string" then
            v39:setState({
                selectedOutfits = {
                    v40
                }
            });
            return ;
        else
            v39:setState({
                selectedOutfits = v40 or {}
            });
            return ;
        end;
    end;
    v39.exitButtonPositionChanged = function(v41)
        if v41.AbsolutePosition ~= v39.state.exitButtonPosition then
            v39:setState({
                exitButtonPosition = v41.AbsolutePosition
            });
        end;
    end;
    v39.renderExitButton = function()
        return l_withStyle_0(function(v42)
            local l_Theme_0 = v42.Theme;
            return v5.createElement(l_IconButton_0, {
                size = UDim2.new(0, 44, 1, 0),
                icon = v36,
                iconSize = l_IconSize_0.Medium,
                iconColor3 = l_Theme_0.SystemPrimaryDefault.Color,
                iconTransparency = l_Theme_0.SystemPrimaryDefault.Transparency,
                onActivated = v39.navigateBack,
                buttonRef = v39.exitButtonRef,
                NextSelectionDown = v39.gridViewRef,
                NextSelectionRight = v39.selectButtonRef,
                onAbsolutePositionChanged = v39.exitButtonPositionChanged
            });
        end);
    end;
    v39.selectButtonPressed = function()
        v39:setState({
            multiSelectionEnabled = not v39.state.multiSelectionEnabled
        });
        if v39.state.multiSelectionEnabled then
            v39.props.avatarEditorAnalytics.managePageMultiSelectActivated();
        end;
        if v34 then
            v26.closeFiltersAndItemDetails(v39.props.navigation);
        end;
    end;
    v39.outfitGridCanScrollUpdated = function(v44)
        if v39.state.outfitGridCanScroll ~= v44 then
            v39:setState({
                outfitGridCanScroll = v44
            });
        end;
    end;
    v39.onPeekViewClosed = function()
        v39:setState({
            selectedOutfits = {}
        });
        if v39.state.isGamepad then
            v39.focusController.captureFocus();
        end;
    end;
    v39.onOverlayClosed = function()
        local l_isGamepad_0 = v39.state.isGamepad;
        v20("ManageOutfitPage", l_isGamepad_0);
        if l_isGamepad_0 then
            v39.focusController.captureFocus();
        end;
    end;
    v39.deleteOutfit = function()
        v39.props.navigation.navigate(v18.DeleteOutfitPrompt, {
            outfitIds = v39.state.selectedOutfits,
            onOverlayClosed = function()
                if v39.state.multiSelectionEnabled then
                    v39:setState({
                        multiSelectionEnabled = false
                    });
                end;
                v39.onOverlayClosed();
            end
        });
    end;
    v39.renameOutfit = function()
        v39.props.navigation.navigate(v18.RenameOutfitPrompt, {
            costumeId = v39.state.selectedOutfits[1],
            onOverlayClosed = v39.onOverlayClosed
        });
    end;
    v39.lastInputTypeChangedCallback = function()
        local v46 = l_isGamepadInput_0((l_UserInputService_0:GetLastInputType()));
        if v46 ~= v39.state.isGamepad then
            v39:setState({
                isGamepad = v46
            });
        end;
    end;
    v39.onToggleOutfitCard = function(v47, v48)
        local l_navigation_0 = v39.props.navigation;
        if not v47 then
            v26.closeFiltersAndItemDetails(l_navigation_0);
            return ;
        else
            local v50 = {
                outfitId = v48,
                ZIndex = 2,
                onPeekViewClosed = v39.onPeekViewClosed,
                exitButtonPosition = v39.state.exitButtonPosition,
                deleteOutfit = v39.deleteOutfit,
                renameOutfit = v39.renameOutfit,
                NextSelectionLeft = not v39.props.isPortrait and v39.gridViewRef or nil,
                outfitDetailsPeekViewRefs = v39.outfitDetailsPeekViewRefs
            };
            v39.props.navigateWithLock(function()
                v26.closeFiltersAndItemDetails(l_navigation_0);
                v26.closeTryOnManager(l_navigation_0);
                l_navigation_0.navigate(v18.OutfitDetails, v50);
            end);
            return ;
        end;
    end;
end;
v38.renderRightTopBarButton = function(v51, v52, v53, v54)
    local l_select_0 = v52.select;
    if v51.state.multiSelectionEnabled then
        l_select_0 = v52.cancel;
    end;
    return v5.createElement(l_Focusable_0[l_FitTextLabel_0], {
        width = l_FitTextLabel_0.Width.FitToText,
        onActivated = v51.selectButtonPressed,
        BackgroundTransparency = 1,
        Text = l_select_0,
        Font = v53.Font.Header2.Font,
        LayoutOrder = 1,
        TextColor3 = v53.Theme.TextEmphasis.Color,
        TextSize = v53.Font.BaseSize * v53.Font.Header2.RelativeSize,
        SelectionImageObject = v54(l_CursorKind_0.RoundedRect),
        NextSelectionLeft = v51.exitButtonRef,
        NextSelectionDown = v51.gridViewRef,
        [v5.Ref] = v51.selectButtonRef
    });
end;
v38.renderWithProviders = function(v56, v57, v58, v59)
    local v60 = false;
    if not v56.state.multiSelectionEnabled and #v56.state.selectedOutfits == 1 then
        v60 = true;
    end;
    local v61 = (not v56.state.multiSelectionEnabled and v56.props.showCustomOutfitNames) and #v56.state.selectedOutfits == 1;
    local v62 = nil;
    if not (not v56.state.isGamepad or not v37) then
        v62 = v15.GAMEPAD_BOTTOM_BAR_SIZE;
    end;
    local v63 = if not v60 then nil else v56.peekViewRef;
    if not (not v34 or not v60) then
        v63 = v56.outfitDetailsPeekViewRefs[v56.props.avatarRoute.current.key];
    end;
    return v5.createElement(l_Focusable_0.Frame, {
        BackgroundTransparency = 1,
        Size = UDim2.fromScale(1, 1),
        focusController = v56.focusController,
        defaultChild = v56.gridViewRef,
        restorePreviousChildFocus = true,
        inputBindings = {
            NavigateBack = v10.Input.onBegin(Enum.KeyCode.ButtonB, v56.navigateBack),
            ToggleMultiSelect = if v60 then nil else v10.Input.onBegin(Enum.KeyCode.ButtonL3, v56.selectButtonPressed, {
                key = not v56.state.multiSelectionEnabled and "Feature.Avatar.Action.SelectMultipleItems" or "Feature.Avatar.Action.CancelSelection"
            }),
            Delete = if #v56.state.selectedOutfits > 0 then v10.Input.onBegin(Enum.KeyCode.ButtonX, v56.deleteOutfit, {
                key = "Feature.Avatar.Action.Delete"
            }) else nil,
            Rename = if not v61 then nil else v10.Input.onBegin(Enum.KeyCode.ButtonY, v56.renameOutfit, {
                key = "Feature.Avatar.Action.Rename"
            })
        }
    }, {
        LastInputTypeChangedConnection = v5.createElement(l_ExternalEventConnection_0, {
            event = l_UserInputService_0.LastInputTypeChanged,
            callback = v56.lastInputTypeChangedCallback
        }),
        BoundInputsUpdater = v5.createElement(v21),
        NavOverlayPageContainer = v5.createElement(v22, {
            headerBarProps = {
                title = v57.manage,
                renderLeft = v56.renderExitButton,
                renderRight = function()
                    return v56:renderRightTopBarButton(v57, v58, v59);
                end
            },
            ZIndex = 1,
            focusController = v56.focusController,
            onDismiss = v56.navigateBack
        }, {
            OutfitSelectionGrid = v5.createElement(v23, {
                onToggleOutfitCard = if not v34 then nil else v56.onToggleOutfitCard,
                selectedOutfits = v56.state.selectedOutfits,
                selectionUpdated = v56.selectedOutfitUpdated,
                canScrollUpdated = v56.outfitGridCanScrollUpdated,
                multiSelect = v56.state.multiSelectionEnabled,
                goBack = v56.navigateBack,
                pageOwner = v18.ManageOutfitPage,
                NextSelectionUp = v56.exitButtonRef,
                NextSelectionDown = if not v56.state.multiSelectionEnabled then nil else v56.actionBarRef,
                NextSelectionRight = v63,
                [v5.Ref] = v56.gridViewRef
            }),
            ManageActionBar = not not v56.state.multiSelectionEnabled and v5.createElement(v24, {
                gradientFade = v56.state.outfitGridCanScroll,
                multiSelect = true,
                selectedOutfits = v56.state.selectedOutfits,
                bottomPadding = v62,
                deleteOutfit = v56.deleteOutfit,
                renameOutfit = v56.renameOutfit,
                ZIndex = 2,
                NextSelectionUp = v56.gridViewRef,
                [v5.Ref] = v56.actionBarRef
            }) or nil
        }),
        OutfitDetailsPeekView = if not v34 and v60 then v5.createElement(v25, {
            outfitId = v56.state.selectedOutfits[1],
            ZIndex = 2,
            focusController = v56.focusController,
            onPeekViewClosed = v56.onPeekViewClosed,
            exitButtonPosition = v56.state.exitButtonPosition,
            deleteOutfit = v56.deleteOutfit,
            renameOutfit = v56.renameOutfit,
            NextSelectionLeft = not v56.props.isPortrait and v56.gridViewRef or nil,
            [v5.Ref] = v56.peekViewRef
        }) else nil
    });
end;
v38.render = function(v64)
    return l_withLocalization_0({
        manage = "Feature.Avatar.Heading.Manage",
        select = "Feature.Avatar.Action.Select",
        cancel = "Feature.Avatar.Action.Cancel"
    })(function(v65)
        return l_withStyle_0(function(v66)
            return l_withSelectionCursorProvider_0(function(v67)
                return v64:renderWithProviders(v65, v66, v67);
            end);
        end);
    end);
end;
v38.didMount = function(v68)
    v68.props.avatarEditorAnalytics.managePageOpened();
end;
if v34 then
    v38 = v4.connect(nil, function(v69)
        return {
            navigateWithLock = function(v70)
                v69(v27(v70));
            end
        };
    end)(v38);
end;
return (v17((l_RoactAppPolicy_0.connect(function(v71, _)
    return {
        showCustomOutfitNames = v71.getCustomOutfitNames()
    };
end)((l_RoactServices_0.connect({
    avatarEditorAnalytics = v19
})(v38))))));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.NavOverlayContainer);
local v7 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadFocusHandlerForPage);
local v8 = require(l_Modules_0.AvatarExperience.Common.Selectors.selectIsPortrait);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local v10 = require(l_Modules_0.AvatarExperience.Common.Components.with10ftUIPadding);
local v11 = require(l_CorePackages_0.UIBlox);
local l_HeaderBar_0 = v11.App.Bar.HeaderBar;
local l_withStyle_0 = v11.Style.withStyle;
local l_Images_0 = v11.App.ImageSet.Images;
local v15 = l_Images_0["component_assets/circle_17"];
local v16 = v3.PureComponent:extend("NavOverlayPageContainer");
v16.validateProps = v5.strictInterface({
    headerBarProps = v5.strictInterface({
        title = v5.string,
        renderLeft = v5.optional(v5.callback),
        renderRight = v5.optional(v5.callback)
    }),
    onDismiss = v5.callback,
    ZIndex = v5.optional(v5.integer),
    focusController = v5.table,
    [v3.Children] = v5.table,
    globalGuiInset = v5.strictInterface({
        left = v5.integer,
        top = v5.integer,
        right = v5.integer,
        bottom = v5.integer
    }),
    isPortrait = v5.boolean,
    statusBarHeight = v5.number,
    designTokens = v5.any
});
v16.renderWithProviders = function(v17, v18)
    local l_Theme_0 = v18.Theme;
    local l_globalGuiInset_0 = v17.props.globalGuiInset;
    local l_BackgroundDefault_0 = l_Theme_0.BackgroundDefault;
    local v22 = {};
    if not v17.props.isPortrait then
        l_BackgroundDefault_0 = l_Theme_0.BackgroundMuted;
        local l_ImageRectSize_0 = v15.ImageRectSize;
        local l_ImageRectOffset_0 = v15.ImageRectOffset;
        local l_X_0 = l_ImageRectSize_0.X;
        local v26 = l_X_0 / 2;
        v22 = {
            BackgroundTransparency = 1,
            Image = v15.Image,
            ScaleType = Enum.ScaleType.Slice,
            SliceScale = 1 / l_Images_0.ImagesResolutionScale,
            SliceCenter = Rect.new(v26 - 1, v26 - 1, v26 + 1, v26),
            ImageRectSize = Vector2.new(l_X_0, v26),
            ImageRectOffset = l_ImageRectOffset_0,
            ImageTransparency = l_Theme_0.BackgroundDefault.Transparency,
            ImageColor3 = l_Theme_0.BackgroundDefault.Color
        };
    end;
    local v27 = l_globalGuiInset_0.bottom > 0;
    local l_statusBarHeight_0 = v17.props.statusBarHeight;
    local l_designTokens_0 = v17.props.designTokens;
    return v3.createElement("TextButton", {
        BackgroundColor3 = l_Theme_0.Overlay.Color,
        BackgroundTransparency = l_Theme_0.Overlay.Transparency,
        BorderSizePixel = 0,
        Size = UDim2.fromScale(1, 1),
        Text = "",
        AutoButtonColor = false,
        [v3.Event.Activated] = v17.props.onDismiss
    }, {
        GamepadFocusHandlerForPage = v3.createElement(v7, {
            focusController = v17.props.focusController,
            captureFocusOnMount = true
        }),
        NavOverlayContainer = v3.createElement(v6, {}, {
            UIListLayout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical
            }),
            StatusBarBackground = v3.createElement("TextButton", {
                BackgroundColor3 = l_BackgroundDefault_0.Color,
                BackgroundTransparency = not not v17.props.isPortrait and l_BackgroundDefault_0.Transparency or 1,
                LayoutOrder = 1,
                Size = UDim2.new(1, 0, 0, l_statusBarHeight_0),
                Text = "",
                BorderSizePixel = 0,
                AutoButtonColor = false
            }),
            HeaderBarBackground = v3.createElement("TextButton", {
                BackgroundColor3 = l_BackgroundDefault_0.Color,
                BackgroundTransparency = l_BackgroundDefault_0.Transparency,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 44),
                Text = "",
                AutoButtonColor = false,
                LayoutOrder = 2
            }, {
                HeaderBar = v3.createElement(l_HeaderBar_0, v2.Dictionary.join(v17.props.headerBarProps, {
                    backgroundTransparency = 1,
                    barHeight = 44
                }))
            }),
            ContentsFrame = v3.createElement("ImageButton", v2.Dictionary.join({
                BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
                BorderSizePixel = 0,
                Position = UDim2.fromOffset(0, 44),
                Size = UDim2.new(1, 0, 1, -(44 + l_statusBarHeight_0) + (not l_designTokens_0 and 0 or l_designTokens_0.bottomPadding)),
                ClipsDescendants = true,
                AutoButtonColor = false,
                LayoutOrder = 3
            }, v22), v17.props[v3.Children]),
            BottomInsetBackground = v27 and v3.createElement("TextButton", {
                BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
                BorderSizePixel = 0,
                Position = UDim2.new(0, 0, 1, 0),
                Size = UDim2.new(1, 0, 0, l_globalGuiInset_0.bottom),
                Text = "",
                ZIndex = 3,
                AutoButtonColor = false,
                LayoutOrder = 4
            })
        })
    });
end;
v16.render = function(v30)
    return l_withStyle_0(function(v31)
        return v30:renderWithProviders(v31);
    end);
end;
return v4.connect(function(v32, _)
    return {
        globalGuiInset = v32.GlobalGuiInset,
        isPortrait = v8(v32),
        statusBarHeight = v32.TopBar.statusBarHeight
    };
end, nil)((v10(v16)));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_Focusable_0 = require(l_CorePackages_0.Packages.RoactGamepad).Focusable;
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_CorePackages_0.UIBlox);
local v7 = require(l_CorePackages_0.FitFrame);
local l_memoize_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).memoize;
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v10 = require(l_Modules_0.AvatarExperience.Common.Components.LoadableGridView);
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local v12 = require(l_Modules_0.AvatarExperience.Common.Components.ItemDetails.ItemInfo.ItemInfoList);
local v13 = require(l_Modules_0.AvatarExperience.Common.Utils);
local v14 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v15 = require(l_CorePackages_0.Workspace.Packages.UserLib);
local l_Constants_0 = v15.Utils.Constants;
local l_getRbxthumbWithTypeSizeAndOptions_0 = v15.Utils.getRbxthumbWithTypeSizeAndOptions;
local l_withStyle_0 = v6.Style.withStyle;
local l_getPageMargin_0 = v6.App.Container.getPageMargin;
local l_ShimmerPanel_0 = v6.App.Loading.ShimmerPanel;
local l_LoadableImage_0 = v6.App.Loading.LoadableImage;
local l_GridMetrics_0 = v6.App.Grid.GridMetrics;
local l_ItemTile_0 = v6.Tile.ItemTile;
local l_FitFrameVertical_0 = v7.FitFrameVertical;
local l_FitTextLabel_0 = v7.FitTextLabel;
local v26 = require(l_Modules_0.AvatarExperience.Flags.FFlagAXEnableOutfitAttribution);
local v27 = require(l_Modules_0.AvatarExperience.Flags.FFlagEnableAttributionItemRow);
local v28 = l_GridMetrics_0.makeCustomMetricsGetter({
    minimumItemsPerRow = 3,
    minimumItemWidth = 110
});
local v29 = v2.PureComponent:extend("OutfitDetailsContainer");
v29.validateProps = v5.strictInterface({
    outfitId = v5.string,
    itemType = if not v26 then nil else v5.optional(v5.string),
    itemsGridRef = if not v26 then nil else v5.optional(v5.table),
    NextSelectionUp = if not v26 then nil else v5.optional(v5.table),
    showCustomOutfitNames = v5.boolean,
    outfitInfo = if not v26 then nil else v5.optional(v5.table),
    outfitName = v5.optional(v5.string),
    itemsList = v5.optional(v5.array(v5.string)),
    screenSize = v5.Vector2,
    assetInfos = v5.table
});
v29.init = function(v30)
    v30.attributionRef = v2.createRef();
    v30.itemsGridRef = v30.props.itemsGridRef or v2.createRef();
    v30:setState({
        margin = l_getPageMargin_0(v30.props.screenSize.X)
    });
    v30.containerSizeChanged = function(v31)
        local v32 = l_getPageMargin_0(v31.AbsoluteSize.X);
        if v32 ~= v30.state.margin then
            v30:setState({
                margin = v32
            });
        end;
    end;
end;
v29.renderOutfitName = function(v33, v34)
    local l_Theme_0 = v34.Theme;
    local l_Font_0 = v34.Font;
    if not v33.props.outfitName then
        return v2.createElement(l_ShimmerPanel_0, {
            LayoutOrder = 1,
            Size = UDim2.new(1, 0, 0, l_Font_0.Header1.RelativeSize * l_Font_0.BaseSize)
        });
    else
        return v2.createElement(l_FitTextLabel_0, {
            width = UDim.new(1, 0),
            BackgroundTransparency = 1,
            Text = v33.props.outfitName,
            LayoutOrder = 1,
            TextXAlignment = Enum.TextXAlignment.Left,
            Size = UDim2.new(1, 0, 0, l_Font_0.Header1.RelativeSize * l_Font_0.BaseSize),
            TextColor3 = l_Theme_0.TextEmphasis.Color,
            TextTransparency = l_Theme_0.TextEmphasis.Transparency,
            TextWrapped = true,
            Font = l_Font_0.Header1.Font,
            TextSize = l_Font_0.Header1.RelativeSize * l_Font_0.BaseSize
        });
    end;
end;
v29.renderOutfitThumbnail = function(v37)
    return v2.createElement("Frame", {
        LayoutOrder = 2,
        BackgroundTransparency = 1,
        Size = UDim2.new(1, -24, 0, 300)
    }, {
        AspectRatioConstraint = v2.createElement("UIAspectRatioConstraint", {
            AspectRatio = 1,
            AspectType = Enum.AspectType.FitWithinMaxSize,
            DominantAxis = Enum.DominantAxis.Width
        }),
        MaxSize = v2.createElement("UISizeConstraint", {
            MaxSize = Vector2.new(math.huge, 300)
        }),
        LoadableImage = v2.createElement(l_LoadableImage_0, {
            BackgroundTransparency = 1,
            Image = l_getRbxthumbWithTypeSizeAndOptions_0(v37.props.outfitId, l_Constants_0.RbxthumbTypes.Outfit, 420),
            Size = UDim2.fromScale(1, 1),
            useShimmerAnimationWhileLoading = true
        })
    });
end;
v29.renderItem = function(v38, v39)
    local v40 = nil;
    local v41 = nil;
    if typeof(v39) ~= "table" then
        v41 = l_getRbxthumbWithTypeSizeAndOptions_0(v39, l_Constants_0.RbxthumbTypes.Asset, 150);
        local v42 = v38.props.assetInfos[v39];
        v40 = v42 and v42.name;
    end;
    return v2.createElement(l_ItemTile_0, {
        name = v40,
        titleTextLineCount = v14.ItemTileTitleMaxLines,
        thumbnail = v41
    });
end;
v29.renderItemsGrid = function(v43, v44)
    local l_itemsList_0 = v43.props.itemsList;
    local v46 = not not l_itemsList_0 and #l_itemsList_0 or v14.ShimmerCardsToDisplay;
    local l_Font_1 = v44.Font;
    local v48 = v13.GridItemHeightGetter(v14.ItemTileType.BundleItemTile, l_Font_1.BaseSize * l_Font_1.Header2.RelativeSize);
    local l_l_FitFrameVertical_0_0 = l_FitFrameVertical_0;
    if v26 then
        l_l_FitFrameVertical_0_0 = l_Focusable_0[l_FitFrameVertical_0];
    end;
    return v2.createElement(l_l_FitFrameVertical_0_0, {
        width = UDim.new(1, 0),
        LayoutOrder = 3,
        BackgroundTransparency = 1,
        [v2.Ref] = if not v26 then nil else v43.itemsGridRef,
        NextSelectionDown = if not v26 then nil else v43.attributionRef,
        NextSelectionUp = if not v26 then nil else v43.props.NextSelectionUp
    }, {
        LoadableGridView = v2.createElement(v10, {
            getItemMetrics = v28,
            items = l_itemsList_0,
            totalNumItems = v46,
            renderItem = function(v50)
                return v43:renderItem(v50);
            end,
            getItemHeight = v48,
            windowHeight = v43.props.screenSize.Y
        })
    });
end;
v29.renderWithProviders = function(v51, v52)
    local v53 = nil;
    local v54 = nil;
    if v26 then
        local l_outfitInfo_0 = v51.props.outfitInfo;
        v53 = not not l_outfitInfo_0 and l_outfitInfo_0.creatingUniverseId or nil;
        v54 = v52.Theme;
    end;
    local _ = nil;
    return v2.createElement(l_FitFrameVertical_0, {
        BackgroundColor3 = if not v26 then nil else v54.BackgroundDefault.Color,
        BackgroundTransparency = not v26 and 1 or v54.BackgroundDefault.Transparency,
        BorderSizePixel = if not v26 then nil else 0,
        width = UDim.new(1, 0),
        contentPadding = UDim.new(0, 24),
        margin = if not v26 then v7.Rect.rectangle(v51.state.margin, 0) else v7.Rect.square(v51.state.margin),
        FillDirection = Enum.FillDirection.Vertical,
        HorizontalAlignment = Enum.HorizontalAlignment.Center,
        [v2.Change.AbsoluteSize] = v51.containerSizeChanged
    }, {
        ItemName = v51.props.showCustomOutfitNames and v51:renderOutfitName(v52),
        ItemThumbnail = v51:renderOutfitThumbnail(),
        ItemsGrid = v51:renderItemsGrid(v52),
        ItemInfoList = if not ((v26 and v27) and v53) then nil else v2.createElement(v12, {
            itemId = v51.props.outfitId,
            outfitInfo = v51.props.outfitInfo,
            itemType = v51.props.itemType,
            LayoutOrder = 4,
            attributionRef = v51.attributionRef,
            NextSelectionUp = v51.itemsGridRef
        })
    });
end;
v29.render = function(v57)
    return l_withStyle_0(function(v58)
        return v57:renderWithProviders(v58);
    end);
end;
v29 = l_RoactAppPolicy_0.connect(function(v59, _)
    return {
        showCustomOutfitNames = v59.getCustomOutfitNames()
    };
end)(v29);
local v67 = l_memoize_0(function(v61)
    local v62 = {};
    for _, v64 in v61, nil, nil do
        for v65, _ in v64, nil, nil do
            table.insert(v62, v65);
        end;
    end;
    return v62;
end);
return v3.connect(function(v68, v69)
    local l_OutfitInfos_0 = v68.AvatarExperience.AvatarEditor.OutfitInfos;
    local v71 = nil;
    local v72 = nil;
    if l_OutfitInfos_0[v69.outfitId] then
        v71 = l_OutfitInfos_0[v69.outfitId].name;
        v72 = v67(l_OutfitInfos_0[v69.outfitId].assets);
    end;
    return {
        outfitInfo = if not v26 then nil else l_OutfitInfos_0[v69.outfitId],
        outfitName = v71,
        itemsList = v72,
        screenSize = v68.ScreenSize,
        assetInfos = v68.AvatarExperience.Common.AssetInfos
    };
end, nil)(v29);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_GuiService_0 = game:GetService("GuiService");
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.RoactRodux);
local v7 = require(l_CorePackages_0.Packages.t);
local v8 = require(l_CorePackages_0.UIBlox);
local v9 = require(l_CorePackages_0.Packages.RoactGamepad);
local v10 = require(l_CorePackages_0.Packages.React);
local l_ExternalEventConnection_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).ExternalEventConnection;
local l_isGamepadInput_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).isGamepadInput;
local l_IsVRAppBuild_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).IsVRAppBuild;
local v14 = require(l_Modules_0.LuaApp.Constants);
local l_DeviceOrientationMode_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).DeviceOrientationMode;
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local _ = require(l_Modules_0.AvatarExperience.Common.AvatarExperienceState);
local v18 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local l_PeekView_0 = require(l_CorePackages_0.Workspace.Packages.PeekView).PeekView;
local l_PeekViewState_0 = require(l_CorePackages_0.Workspace.Packages.PeekView).PeekViewState;
local l_GamepadUtils_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Utils.GamepadUtils;
local v22 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v23 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.ManageActionBar);
local v24 = require(l_Modules_0.AvatarExperience.AvatarEditor.Components.AssetManagement.OutfitDetailsContainer);
local v25 = require(l_Modules_0.AvatarExperience.AvatarEditor.Services.Analytics);
local v26 = require(l_Modules_0.AvatarExperience.Common.Hooks.useAvatarExperienceFocusNavigationBindings);
local v27 = require(l_Modules_0.AvatarExperience.Common.Hooks.useOverlayClosedCallback);
local v28 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.withMappedNavigationParams);
local v29 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarRoute);
local v30 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.NavigationUtils);
local v31 = require(l_Modules_0.AvatarExperience.Common.Components.GamepadFocusHandlerForPage);
local v32 = require(l_Modules_0.AvatarExperience.Common.Components.BoundInputsUpdater);
local v33 = require(l_Modules_0.AvatarExperience.Common.Actions.SetItemDetailsExpanded);
local v34 = require(l_Modules_0.AvatarExperience.Common.Utils);
local l_withStyle_0 = v8.Style.withStyle;
local l_Images_0 = v8.App.ImageSet.Images;
local l_IconButton_0 = v8.App.Button.IconButton;
local l_IconSize_0 = v8.App.ImageSet.Enum.IconSize;
local v39 = require(l_Modules_0.AvatarExperience.Flags.FFlagAXEnableOutfitAttribution);
local v40 = l_Images_0["icons/navigation/close"];
local v41 = UDim.new(1, 0);
local v42 = l_GuiService_0:IsTenFootInterface();
local l_Focusable_0 = v9.Focusable;
local v44 = v5.PureComponent:extend("OutfitDetailsPeekView");
v44.validateProps = v7.strictInterface({
    outfitId = v7.string,
    focusController = if not v39 then v7.table else v7.optional(v7.table),
    ZIndex = v7.optional(v7.integer),
    onPeekViewClosed = if not v39 then v7.callback else v7.optional(v7.callback),
    exitButtonPosition = if not v39 then v7.Vector2 else v7.optional(v7.Vector2),
    deleteOutfit = if not v39 then v7.callback else v7.optional(v7.callback),
    renameOutfit = if not v39 then v7.callback else v7.optional(v7.callback),
    showFullWithNoPeekView = if not v39 then nil else v7.optional(v7.boolean),
    renderBottomBar = if not v39 then nil else v7.optional(v7.boolean),
    NextSelectionLeft = v7.optional(v7.table),
    forwardRef = not v39 and v7.table or nil,
    outfitDetailsPeekViewRefs = not not v39 and v7.table or nil,
    navigation = not not v39 and v7.table or nil,
    avatarRoute = not not v39 and v29.Interface or nil,
    overlayClosedCallback = not not v39 and v7.callback or nil,
    isPortrait = v7.boolean,
    topBarHeight = v7.number,
    itemDetailsExpanded = if not v39 then nil else v7.boolean,
    statusBarHeight = if not v39 then nil else v7.number,
    setItemDetailsExpanded = if not v39 then nil else v7.callback,
    avatarEditorAnalytics = v7.table
});
if v39 then
    v44.defaultProps = {
        showFullWithNoPeekView = false,
        renderBottomBar = true
    };
end;
v44.init = function(v45)
    v45.actionBarRef = v5.createRef();
    v45.exitButtonRef = v5.createRef();
    v45.swipeScrollingFrameRef = v5.createRef();
    v45.itemsGridRef = v5.createRef();
    v45:setState({
        isGamepad = l_isGamepadInput_0((l_UserInputService_0:GetLastInputType()))
    });
    v45.viewStateChanged = function(v46, _)
        if v39 then
            if v46 == l_PeekViewState_0.Closed then
                if v45.props.onPeekViewClosed then
                    v45.props.onPeekViewClosed();
                end;
                v30.closeFiltersAndItemDetails(v45.props.navigation);
            end;
            if not (v46 ~= l_PeekViewState_0.Full) or v46 == l_PeekViewState_0.Extended then
                v45.props.setItemDetailsExpanded(true);
                return ;
            else
                v45.props.setItemDetailsExpanded(false);
                return ;
            end;
        else
            if v46 == l_PeekViewState_0.Closed then
                v45.props.onPeekViewClosed();
            end;
            return ;
        end;
    end;
    v45.lastInputTypeChangedCallback = function()
        local v48 = l_isGamepadInput_0((l_UserInputService_0:GetLastInputType()));
        if v48 ~= v45.state.isGamepad then
            v45:setState({
                isGamepad = v48
            });
        end;
    end;
    v45.onExitButtonPressed = function()
        if v39 then
            if v45.props.onPeekViewClosed then
                v45.props.onPeekViewClosed();
            end;
            v30.closeFiltersAndItemDetails(v45.props.navigation);
            return ;
        else
            v45.props.onPeekViewClosed();
            return ;
        end;
    end;
    local v49, v50 = v5.createBinding(Vector2.new(0, 0));
    v45.absolutePositionBinding = v49;
    v45.updateAbsolutePositionBinding = v50;
    v45.containerPositionChanged = function(v51)
        v45.updateAbsolutePositionBinding(v51.AbsolutePosition);
    end;
    v45.getExitButtonUDim2Pos = function()
        if not v45.props.isPortrait then
            return UDim2.new(0, 15, 0, -44 - (v45.props.topBarHeight - 44) / 2);
        else
            return UDim2.fromScale(15, v45.props.statusBarHeight);
        end;
    end;
    v45.getRef = function()
        if v39 then
            local l_key_0 = v45.props.navigation.state.key;
            if not v45.props.outfitDetailsPeekViewRefs or not l_key_0 then
                return nil;
            else
                return v45.props.outfitDetailsPeekViewRefs[l_key_0];
            end;
        else
            return v45.props.forwardRef;
        end;
    end;
    v45.shouldRenderFullScreen = function()
        return v45.props.showFullWithNoPeekView or l_IsVRAppBuild_0();
    end;
end;
v44.renderActionBar = function(v53, v54)
    return v5.createElement(v23, {
        gradientFade = true,
        multiSelect = false,
        selectedOutfits = {
            v53.props.outfitId
        },
        ZIndex = 2,
        bottomPadding = v54,
        deleteOutfit = v53.props.deleteOutfit,
        renameOutfit = v53.props.renameOutfit,
        NextSelectionUp = not not v53.props.isPortrait and v53.exitButtonRef or nil,
        [v5.Ref] = v53.actionBarRef
    });
end;
v44.renderWithProviders = function(v55, v56)
    local l_Theme_0 = v56.Theme;
    local v58 = UDim2.fromOffset(0, v55.props.topBarHeight);
    local v59 = UDim2.new(1, 0, 1, -v55.props.topBarHeight);
    local v60 = not v55.props.isPortrait;
    if v39 then
        v60 = not v55.props.isPortrait and not l_IsVRAppBuild_0();
    end;
    if v60 then
        v58 = UDim2.new(v22.LandscapeNavWidth, 0, 0, v55.props.topBarHeight);
        v59 = UDim2.new(v22.LandscapeSceneWidth, 0, 1, -v55.props.topBarHeight);
    end;
    local v61 = 64;
    if not v60 then
        v61 = v61 + 24;
    end;
    local v62 = nil;
    if not (not v55.state.isGamepad or not v42) then
        v62 = v14.GAMEPAD_BOTTOM_BAR_SIZE;
        v61 = v61 + v14.GAMEPAD_BOTTOM_BAR_SIZE;
    end;
    local l_exitButtonPosition_0 = v55.props.exitButtonPosition;
    local v64 = nil;
    if not (v39 and not l_exitButtonPosition_0) then
        v64 = v55.absolutePositionBinding:map(function(v65)
            return UDim2.fromOffset(l_exitButtonPosition_0.X - v65.X, l_exitButtonPosition_0.Y - v65.Y);
        end);
    end;
    local v66 = nil;
    if not (not v39 or l_exitButtonPosition_0) then
        v66 = v55.getExitButtonUDim2Pos();
    end;
    local l_isPortrait_0 = v55.props.isPortrait;
    if v39 then
        l_isPortrait_0 = v55.props.itemDetailsExpanded and (v55.props.isPortrait or v55.shouldRenderFullScreen());
    end;
    return v5.createElement(l_Focusable_0.Frame, {
        ZIndex = v55.props.ZIndex,
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        Size = v59,
        Position = v58,
        NextSelectionLeft = v55.props.NextSelectionLeft,
        [v5.Ref] = v55.getRef(),
        focusController = if not v39 then nil else v55.props.focusController,
        defaultChild = if not v39 or v55.props.renderBottomBar then v55.actionBarRef else nil,
        restorePreviousChildFocus = true,
        inputBindings = {
            Close = if not v39 then v9.Input.onBegin(Enum.KeyCode.ButtonB, v55.props.onPeekViewClosed) else v9.Input.onBegin(Enum.KeyCode.ButtonB, function()
                v30.closeFiltersAndItemDetails(v55.props.navigation);
                if v55.props.onPeekViewClosed then
                    v55.props.onPeekViewClosed();
                end;
            end),
            ScrollPeekView = if (not not v39 and v55.swipeScrollingFrameRef) and v55.swipeScrollingFrameRef.current ~= nil then v9.Input.onStep(Enum.KeyCode.Thumbstick2, function(v68, v69)
                local l_Position_0 = v68.Position;
                local l_current_0 = v55.swipeScrollingFrameRef.current;
                local v72 = l_current_0.CanvasPosition.Y + (v69 * -l_GamepadUtils_0.normalizeStickByDeadzone(l_Position_0).Y) * 1000;
                if v72 <= l_current_0.AbsoluteCanvasSize.Y * v41.Scale + v41.Offset then
                    l_current_0.CanvasPosition = Vector2.new(0, v72);
                end;
            end) else nil
        },
        [v5.Change.AbsolutePosition] = v55.containerPositionChanged
    }, {
        GamepadFocusHandlerForPage = if not v39 then nil else v5.createElement(v31, {
            focusController = v55.props.focusController
        }),
        BoundInputsUpdater = if not v39 then nil else v5.createElement(v32),
        LastInputTypeChangedConnection = v5.createElement(l_ExternalEventConnection_0, {
            event = l_UserInputService_0.LastInputTypeChanged,
            callback = v55.lastInputTypeChangedCallback
        }),
        Background = if not v39 or v55.props.itemDetailsExpanded then v5.createElement("TextButton", {
            BackgroundTransparency = not not v55.props.isPortrait and l_Theme_0.Overlay.Transparency or 1,
            BackgroundColor3 = l_Theme_0.Overlay.Color,
            Size = UDim2.new(1, 0, 1, v55.props.topBarHeight),
            Position = UDim2.fromOffset(0, -v55.props.topBarHeight),
            ZIndex = 1,
            Text = "",
            AutoButtonColor = false
        }) else nil,
        ExitButton = l_isPortrait_0 and v5.createElement(l_IconButton_0, {
            position = if not v39 or l_exitButtonPosition_0 then v64 else v66,
            size = UDim2.fromOffset(44, 44),
            icon = v40,
            iconSize = l_IconSize_0.Medium,
            iconColor3 = l_Theme_0.SystemPrimaryDefault.Color,
            iconTransparency = l_Theme_0.SystemPrimaryDefault.Transparency,
            onActivated = v55.onExitButtonPressed,
            buttonRef = v55.exitButtonRef,
            NextSelectionDown = if not v39 or v55.props.renderBottomBar then v55.actionBarRef else v55.itemsGridRef
        }),
        PeekViewContainer = if not not v39 and v55.shouldRenderFullScreen() then nil else v5.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.fromScale(1, 1),
            ClipsDescendants = not not v39 or nil,
            ZIndex = 3
        }, {
            PeekView = v5.createElement(l_PeekView_0, {
                briefViewContentHeight = UDim.new(0, v61),
                mountAnimation = true,
                mountAsFullView = true,
                canDragFullViewToBrief = true,
                showDraggerInClosedState = false,
                returnToFullView = true,
                thumbstickScrollEnabled = true,
                viewStateChanged = v55.viewStateChanged,
                bottomDockedContainerHeight = v61,
                bottomDockedContainerContent = if not v39 or v55.props.renderBottomBar then v55:renderActionBar(v62) else nil,
                backgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                backgroundTransparency = l_Theme_0.BackgroundUIDefault.Transparency,
                peekHeaderClose = true,
                isScrollingEnabled = true
            }, {
                OutfitDetailsContainer = v5.createElement(v24, {
                    outfitId = v55.props.outfitId,
                    itemsGridRef = if not v39 then nil else v55.itemsGridRef,
                    NextSelectionUp = if not v39 then nil else v55.exitButtonRef
                })
            })
        }),
        ScrollingContent = if not not v39 and v55.shouldRenderFullScreen() then v5.createElement("ScrollingFrame", {
            ScrollingDirection = Enum.ScrollingDirection.Y,
            BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
            BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.fromScale(1, 1),
            Position = UDim2.fromScale(0, 0),
            ScrollBarThickness = 0,
            CanvasSize = UDim2.fromScale(1, 0),
            AutomaticCanvasSize = Enum.AutomaticSize.Y,
            ElasticBehavior = Enum.ElasticBehavior.Never,
            ZIndex = 3,
            [v5.Ref] = v55.swipeScrollingFrameRef
        }, {
            OutfitDetailsContainer = v5.createElement(v24, {
                outfitId = v55.props.outfitId,
                itemsGridRef = v55.itemsGridRef,
                NextSelectionUp = v55.exitButtonRef
            })
        }) else nil
    });
end;
v44.render = function(v73)
    return l_withStyle_0(function(v74)
        return v73:renderWithProviders(v74);
    end);
end;
v44.didMount = function(v75)
    local v76 = v75.getRef();
    if not (not v75.state.isGamepad or not v75.props.isPortrait) then
        v75.props.focusController.moveFocusTo(v76);
    end;
    if v76:getValue() then
        v75.containerPositionChanged(v76:getValue());
    end;
    v75.props.avatarEditorAnalytics.viewOutfitDetails(v75.props.outfitId);
    if v39 then
        v75.props.setItemDetailsExpanded(true);
    end;
end;
v44.didUpdate = function(v77, v78, v79)
    local v80 = v77.getRef();
    if not (not (v77.state.isGamepad and not v79.isGamepad) or not v77.props.isPortrait) then
        v77.props.focusController.moveFocusTo(v80);
    end;
    if not (not (v77.props.isPortrait and v78.isPortrait) or not v77.state.isGamepad) then
        v77.props.focusController.moveFocusTo(v80);
    end;
    if v77.props.outfitId ~= v78.outfitId then
        v77.props.avatarEditorAnalytics.viewOutfitDetails(v77.props.outfitId);
    end;
end;
if v39 then
    v44.willUnmount = function(v81)
        if not (v81.props.avatarRoute.current.name == v18.OutfitDetails) or v81.props.avatarRoute.current.key == v81.props.navigation.state.key then
            v81.props.setItemDetailsExpanded(false);
        end;
    end;
end;
local function v84(v82, _)
    return {
        isPortrait = v82.DeviceOrientation == l_DeviceOrientationMode_0.Portrait,
        topBarHeight = if not v39 then v82.TopBar.topBarHeight else v34.getTopBarHeightAvatarScene(v82),
        itemDetailsExpanded = if not v39 then nil else v82.AvatarExperience.Common.ItemDetailsExpanded,
        statusBarHeight = if not v39 then nil else v82.TopBar.statusBarHeight
    };
end;
v44 = if not v39 then v6.connect(v84, nil)(v44) else v6.connect(v84, function(v85)
    return {
        setItemDetailsExpanded = function(v86)
            v85(v33(v86));
        end
    };
end)(v44);
if v39 then
    v44 = v28(v44);
end;
v44 = l_RoactServices_0.connect({
    avatarEditorAnalytics = v25
})(v44);
if not v39 then
    return (v5.forwardRef(function(v87, v88)
        return v5.createElement(v44, v4.Dictionary.join(v87, {
            forwardRef = v88
        }));
    end));
else
    return function(v89)
        local l_current_1 = v10.useRef(v9.createFocusController()).current;
        if v89.focusController then
            l_current_1 = v89.focusController;
        end;
        local v91 = v27(l_current_1);
        return v5.createElement("Frame", {
            [v5.Ref] = v26({
                overlayClosedCallback = v91
            }),
            BackgroundTransparency = 1,
            Size = UDim2.fromScale(1, 1)
        }, {
            OutfitDetailsPeekView = v10.createElement(v44, (v4.Dictionary.join(v89, {
                focusController = l_current_1,
                overlayClosedCallback = v91
            })))
        });
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_CorePackages_0.FitFrame);
local v4 = require(l_CorePackages_0.Packages.RoactGamepad);
local l_withLocalization_0 = require(l_CorePackages_0.Workspace.Packages.Localization).withLocalization;
local l_FitFrameVertical_0 = v3.FitFrameVertical;
local l_FitTextLabel_0 = v3.FitTextLabel;
local l_Focusable_0 = v4.Focusable;
local v9 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v9.Style.withStyle;
local l_withSelectionCursorProvider_0 = v9.App.SelectionImage.withSelectionCursorProvider;
local l_CursorKind_0 = v9.App.SelectionImage.CursorKind;
local l_Images_0 = v9.App.ImageSet.Images;
local l_ImageSetLabel_0 = v9.Core.ImageSet.ImageSetLabel;
local v15 = l_Images_0["component_assets/circle_17_stroke_1"];
local v16 = Rect.new(8, 8, 8, 8);
local v17 = v1.PureComponent:extend("OutfitNameTextBox");
v17.validateProps = v2.strictInterface({
    onOutfitNameUpdated = v2.callback
});
local function _(v18, v19)
    local v20 = utf8.len(v18);
    if v20 == nil then
        return true;
    elseif v20 <= v19 then
        return false;
    else
        return v19 < utf8.len(utf8.nfcnormalize(v18));
    end;
end;
v17.init = function(v22)
    v22:setState({
        lastValidName = "",
        isNameInvalid = true,
        outfitName = ""
    });
    v22.textBoxRef = v1.createRef();
    v22.wasInitiallyFocused = false;
    v22.tryFocusTextBox = function()
        if not v22.wasInitiallyFocused then
            local v23 = v22.textBoxRef:getValue();
            if not (not v23 or not v23:IsDescendantOf(game)) then
                v23:CaptureFocus();
                v22.wasInitiallyFocused = true;
            end;
            return ;
        else
            return ;
        end;
    end;
    v22.onTextChanged = function(v24)
        local l_Text_0 = v24.Text;
        local l_l_Text_0_0 = l_Text_0;
        local v27 = utf8.len(l_l_Text_0_0);
        if v27 == nil or v27 > 99 and utf8.len(utf8.nfcnormalize(l_l_Text_0_0)) > 99 then
            l_Text_0 = v22.state.lastValidName;
            v24.Text = l_Text_0;
        end;
        local v28 = not string.match(l_Text_0, "^[0-9a-zA-Z%s]+$");
        l_l_Text_0_0 = v22.state.lastValidName;
        if not v28 then
            l_l_Text_0_0 = v24.Text;
        end;
        v22:setState({
            lastValidName = l_l_Text_0_0,
            isNameInvalid = v28,
            outfitName = l_Text_0
        });
        v22.props.onOutfitNameUpdated(l_Text_0, v28);
    end;
end;
v17.renderWithProviders = function(v29, v30, v31, v32)
    local l_Font_0 = v31.Font;
    local l_Theme_0 = v31.Theme;
    return v1.createElement(l_FitFrameVertical_0, {
        BackgroundTransparency = 1,
        width = UDim.new(1, 0)
    }, {
        TextboxContainer = v1.createElement(l_ImageSetLabel_0, {
            BackgroundTransparency = 1,
            Image = v15,
            ImageColor3 = l_Theme_0.UIDefault.Color,
            ImageTransparency = l_Theme_0.UIDefault.Transparency,
            LayoutOrder = 1,
            ScaleType = Enum.ScaleType.Slice,
            Size = UDim2.new(1, 0, 0, 30),
            SliceCenter = v16
        }, {
            Textbox = v1.createElement(l_Focusable_0.TextBox, {
                Text = "",
                BackgroundTransparency = 1,
                ClearTextOnFocus = false,
                Font = l_Font_0.Header2.Font,
                TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                PlaceholderColor3 = l_Theme_0.PlaceHolder.Color,
                PlaceholderText = v30.placeholderText,
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5),
                Size = UDim2.new(1, -12, 1, 0),
                TextColor3 = l_Theme_0.TextDefault.Color,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Left,
                OverlayNativeInput = true,
                [v1.Change.Text] = v29.onTextChanged,
                SelectionImageObject = v32(l_CursorKind_0.InputFields),
                [v1.Ref] = v29.textBoxRef,
                [v1.Event.AncestryChanged] = v29.tryFocusTextBox
            })
        }),
        WarningText = (v29.state.isNameInvalid and v29.state.outfitName ~= "") and v1.createElement(l_FitTextLabel_0, {
            width = UDim.new(1, 0),
            BackgroundTransparency = 1,
            Text = v30.warningText,
            LayoutOrder = 2,
            TextXAlignment = Enum.TextXAlignment.Left,
            Size = UDim2.new(1, 0, 0, 20),
            TextColor3 = l_Theme_0.Alert.Color,
            TextWrapped = true,
            Font = l_Font_0.Body.Font,
            TextSize = l_Font_0.Body.RelativeSize * l_Font_0.BaseSize
        })
    });
end;
v17.render = function(v35)
    return l_withLocalization_0({
        placeholderText = "Feature.Avatar.Label.Name",
        warningText = "Feature.Avatar.Label.CostumeWarning"
    })(function(v36)
        return l_withStyle_0(function(v37)
            return l_withSelectionCursorProvider_0(function(v38)
                return v35:renderWithProviders(v36, v37, v38);
            end);
        end);
    end);
end;
v17.didMount = function(v39)
    v39.tryFocusTextBox();
end;
return v17;