local l_CorePackages_0 = game:GetService("CorePackages");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_HttpService_0 = game:GetService("HttpService");
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.RoactRodux);
local v8 = require(l_CorePackages_0.Packages.t);
local l_DateTime_0 = require(l_CorePackages_0.Workspace.Packages.Time).DateTime;
local l_TimeZone_0 = require(l_CorePackages_0.Workspace.Packages.Time).TimeZone;
local v11 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v12 = require(l_Modules_0.LuaApp.AppPage);
local v13 = require(l_Modules_0.Luobu.Components.More.TencentNoticeCenter.NoticeListCell);
local v14 = require(l_Modules_0.Luobu.Actions.DecrementUnreadTencentNoticeCount);
local v15 = require(l_Modules_0.Luobu.Actions.ReadTencentNoticeId);
local v16 = require(l_Modules_0.Luobu.Enum.TencentNoticeType);
local v17 = require(l_Modules_0.Luobu.Enum.MemStorageKeys);
local v18 = v6.PureComponent:extend("TencentNoticeItemContainer");
v18.validateProps = v8.strictInterface({
    layoutInfo = v8.table,
    item = v8.optional(v8.table),
    dateText = v8.optional(v8.string),
    navigateDown = v8.callback,
    decrementUnreadTencentNoticeCount = v8.callback,
    readTencentNoticeId = v8.callback,
    noticeReadStatus = v8.table
});
local function _(v19)
    local v20 = l_DateTime_0.fromUnixTimestamp(v19);
    return (v20:GetLongRelativeTime(v20, l_TimeZone_0.Current, l_LocalizationService_0.RobloxLocaleId));
end;
v18.init = function(v22)
    v22.onActivated = function()
        local l_item_0 = v22.props.item;
        if l_item_0.type == v16.Web then
            v22.props.navigateDown({
                name = v12.GenericWebPage,
                detail = l_item_0.webTypeUrl or l_item_0.noticeUrl,
                extraProps = {
                    title = l_item_0.title
                }
            });
        else
            v22.props.navigateDown({
                name = v12.TencentNoticeContent,
                extraProps = {
                    notice = l_item_0,
                    dateText = v22.props.dateText
                }
            });
        end;
        if ((l_item_0.hasRead or v22.props.noticeReadStatus[l_item_0.noticeId]) or false) == false then
            v22:fireNoticeIdHasRead(l_item_0.noticeId, l_item_0.endTime);
        end;
    end;
end;
v18.fireNoticeIdHasRead = function(v24, v25, v26)
    l_MemStorageService_0:Fire(v17.TencentNoticeIdReadStatus, l_HttpService_0:JSONEncode({
        noticeId = v25,
        endTime = v26
    }));
    v24.props.decrementUnreadTencentNoticeCount();
    v24.props.readTencentNoticeId(v25);
end;
v18.render = function(v27)
    return v6.createElement(v13, v5.Dictionary.join(v27.props.layoutInfo, {
        item = v27.props.item,
        dateText = v27.props.dateText,
        onActivated = v27.onActivated
    }));
end;
return (v7.connect(function(v28, v29)
    local v30 = not not v29.item and v29.item.startTime or nil;
    local v31 = {};
    local v32;
    if v30 then
        local v33 = l_DateTime_0.fromUnixTimestamp(v30);
        v32 = v33:GetLongRelativeTime(v33, l_TimeZone_0.Current, l_LocalizationService_0.RobloxLocaleId);
        if v32 then
            goto label0;
        end;
    end;
    v32 = nil;
    ::label0::;
    v31.dateText = v32;
    v31.noticeReadStatus = v28.Luobu.TencentNoticeReadStatus;
    return v31;
end, function(v34)
    return {
        navigateDown = function(v35)
            v34(v11(v35));
        end,
        decrementUnreadTencentNoticeCount = function()
            return v34(v14());
        end,
        readTencentNoticeId = function(v36)
            return v34(v15(v36));
        end
    };
end)(v18));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local v4 = require(l_Modules_0.Luobu.Constants);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = v2.PureComponent:extend("TencentNoticeList");
v6.validateProps = v5.strictInterface({
    renderItem = v5.callback,
    itemList = v5.table
});
v6.render = function(v7)
    local l_renderItem_0 = v7.props.renderItem;
    local l_itemList_0 = v7.props.itemList;
    local l_TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT_0 = v4.TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT;
    return l_withStyle_0(function(v11)
        local l_BackgroundDefault_0 = v11.Theme.BackgroundDefault;
        local l_Divider_0 = v11.Theme.Divider;
        local v14 = {
            Layout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Right
            })
        };
        for v15, v16 in ipairs(l_itemList_0) do
            local v17 = v15 < #l_itemList_0;
            v14["NoticeList_Row_" .. v16.noticeId] = l_renderItem_0(v16, {
                Size = UDim2.new(1, 0, 0, not not v17 and l_TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT_0 - 1 or l_TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT_0),
                LayoutOrder = v15 * 2 - 1
            });
            v14["NoticeList_Divider_" .. v16.noticeId] = v17 and v2.createElement("Frame", {
                Size = UDim2.new(1, -24, 0, 1),
                BackgroundColor3 = l_Divider_0.Color,
                BackgroundTransparency = l_Divider_0.Transparency,
                BorderSizePixel = 0,
                LayoutOrder = v15 * 2
            });
        end;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT_0 * #l_itemList_0),
            BackgroundColor3 = l_BackgroundDefault_0.Color,
            BackgroundTransparency = l_BackgroundDefault_0.Transparency,
            BorderSizePixel = 0,
            BorderColor3 = l_Divider_0.Color,
            LayoutOrder = 1
        }, v14);
    end);
end;
return v6;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_HttpService_0 = game:GetService("HttpService");
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.RoactRodux);
local v7 = require(l_CorePackages_0.UIBlox);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_withStyle_0 = v7.Style.withStyle;
local l_ExternalEventConnection_0 = v7.Utility.ExternalEventConnection;
local v11 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetButton);
local v12 = require(l_Modules_0.LuaApp.Thunks.OpenWebview);
local v13 = require(l_Modules_0.Luobu.Actions.DecrementUnreadTencentNoticeCount);
local v14 = require(l_Modules_0.Luobu.Actions.ReadTencentNoticeId);
local v15 = require(l_Modules_0.Luobu.Components.TencentNoticePopup.NoticePageControlItem);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v17 = require(l_Modules_0.Luobu.Enum.MemStorageKeys);
local v18 = require(l_CorePackages_0.Packages.t);
local v19 = require(l_CorePackages_0.Otter);
local v20 = {
    dampingRatio = 1,
    frequency = 10
};
local v21 = v5.PureComponent:extend("NoticePageControl");
v21.validateProps = v18.strictInterface({
    noticeList = v18.table,
    onActivated = v18.callback,
    settings = v18.strictInterface({
        widePopupWidth = v18.number,
        widePopupHeight = v18.number,
        headerHeight = v18.number,
        bottomHeight = v18.number,
        compactHeightToWidthRatio = v18.number
    }),
    formFactor = v18.string,
    screenSize = v18.Vector2,
    openNoticeDetail = v18.callback,
    decrementUnreadTencentNoticeCount = v18.callback,
    readTencentNoticeId = v18.callback
});
v21.checkInsidePage = function(v22, v23, v24)
    local l_formFactor_0 = v22.props.formFactor;
    local l_X_0 = v22.props.screenSize.X;
    local l_Y_0 = v22.props.screenSize.Y;
    local l_bottomHeight_0 = v22.props.settings.bottomHeight;
    if l_formFactor_0 == l_FormFactor_0.WIDE then
        local v29 = (l_X_0 - v22.props.settings.widePopupWidth) / 2;
        local v30 = (l_Y_0 - v22.props.settings.widePopupWidth) / 2;
        if not (v23 >= v29) or l_X_0 - v29 < v23 then
            return false;
        elseif not (v24 >= v30) or (l_Y_0 - v30) - l_bottomHeight_0 < v24 then
            return false;
        end;
    elseif not (v23 >= 24) or l_X_0 - 24 < v23 then
        return false;
    else
        local v31 = (l_Y_0 - v22.topHeight) / 2;
        if not (v24 >= v31) or (l_Y_0 - v31) - l_bottomHeight_0 < v24 then
            return false;
        end;
    end;
    return true;
end;
v21.init = function(v32)
    v32.state = {
        selectedValue = 1
    };
    local v33, v34 = v5.createBinding(0);
    v32.positionX = v33;
    v32.updatePositionX = v34;
    v32.touchTapCallback = function(v35)
        local v36 = v32.props.noticeList[v32.state.selectedValue];
        if v36.noticeUrl == nil then
            return ;
        elseif v32:checkInsidePage(v35[1].X, v35[1].Y) == false then
            return ;
        else
            v32.props.openNoticeDetail(v36.noticeUrl, v32.props.noticeList[v32.state.selectedValue].title);
            if v36.hasRead == false then
                l_MemStorageService_0:Fire(v17.TencentNoticeIdReadStatus, l_HttpService_0:JSONEncode({
                    noticeId = v36.noticeId,
                    endTime = v36.endTime
                }));
            end;
            v32.props.decrementUnreadTencentNoticeCount();
            v32.props.readTencentNoticeId(v36.noticeId);
            local l_selectedValue_0 = v32.state.selectedValue;
            if l_selectedValue_0 == #v32.props.noticeList then
                v32.props.onActivated();
                return ;
            else
                local v38 = (not not (v32.props.formFactor == l_FormFactor_0.WIDE) and v32.props.settings.widePopupWidth or v32.compactWidth) * l_selectedValue_0;
                v32:setState({
                    selectedValue = l_selectedValue_0 + 1
                });
                v32.motor:setGoal(v19.spring(v38, v20));
                return ;
            end;
        end;
    end;
    v32.goalLocation = 0;
    v32.compactWidth = v32.props.screenSize.X - 48;
    v32.touchMoveCallback = function(v39)
        local l_X_1 = v39.Position.X;
        local l_Y_1 = v39.Position.Y;
        if v32.isMoving or v32:checkInsidePage(l_X_1, l_Y_1) == false then
            return ;
        else
            local v42 = not not (v32.props.formFactor == l_FormFactor_0.WIDE) and v32.props.settings.widePopupWidth or v32.compactWidth;
            if math.abs(v39.Delta.X) > 20 then
                local v43 = math.clamp(v32.state.selectedValue - math.sign(v39.Delta.X), 1, #v32.props.noticeList);
                v32:setState({
                    selectedValue = v43
                });
                local v44 = v42 * (v43 - 1);
                v32.motor:setGoal(v19.spring(v44, v20));
                v32.goalLocation = v44;
                v32.isMoving = true;
            end;
            return ;
        end;
    end;
    v32.motor = v19.createSingleMotor(1);
    v32.motor:onStep(function(v45)
        local v46 = math.abs(v45 - v32.goalLocation);
        if v46 == 0 then
            return ;
        elseif v46 < 1 then
            v32.updatePositionX(v32.goalLocation);
            return ;
        else
            v32.updatePositionX(v45);
            return ;
        end;
    end);
    v32.motor:onComplete(function()
        v32.isMoving = false;
    end);
end;
v21.didMount = function(v47)
    if v47.props.onMounted then
        v47.props.onMounted();
    end;
end;
v21.willUnmount = function(v48)
    if v48.motor then
        v48.motor:destroy();
    end;
end;
v21.render = function(v49)
    local v50 = v49.props.formFactor == l_FormFactor_0.WIDE;
    local v51 = nil;
    local v52 = nil;
    if not v50 then
        v51 = v49.compactWidth;
        v52 = v51 * v49.props.settings.compactHeightToWidthRatio;
    else
        v51 = v49.props.settings.widePopupWidth;
        v52 = v49.props.settings.widePopupHeight;
    end;
    local v53 = #v49.props.noticeList * v51;
    local l_bottomHeight_1 = v49.props.settings.bottomHeight;
    local l_headerHeight_0 = v49.props.settings.headerHeight;
    local v56 = (l_headerHeight_0 + v52) + l_bottomHeight_1;
    local v57 = #v49.props.noticeList == 1;
    v49.topHeight = l_headerHeight_0 + v52;
    local v58 = {
        Layout = v5.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Center
        })
    };
    for v59, v60 in ipairs(v49.props.noticeList) do
        v58["NoticePageControlItem" .. v59] = v5.createElement(v15, {
            headerHeight = l_headerHeight_0,
            contentHeight = v52,
            width = v51,
            notice = v60,
            layoutOrder = v59,
            hasOneNotice = v57
        });
    end;
    return l_withStyle_0(function(v61)
        local l_Theme_0 = v61.Theme;
        return v5.createElement("ImageLabel", {
            Size = UDim2.fromOffset(v51, v56),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            TopFrame = v5.createElement("Frame", {
                Size = UDim2.fromOffset(v51, v49.topHeight),
                BorderSizePixel = 0,
                BackgroundTransparency = 0,
                ClipsDescendants = true
            }, {
                PageIndicator = v49:renderIndicator(l_Theme_0, v51, l_headerHeight_0, v52),
                TouchMoved = v5.createElement(l_ExternalEventConnection_0, {
                    event = l_UserInputService_0.TouchMoved,
                    callback = v49.touchMoveCallback
                }),
                TouchTap = v5.createElement(l_ExternalEventConnection_0, {
                    event = l_UserInputService_0.TouchTap,
                    callback = v49.touchTapCallback,
                    ZIndex = 2
                }),
                ScrollingList = v5.createElement("Frame", {
                    BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
                    Size = UDim2.fromOffset(v53, l_headerHeight_0 + v52),
                    Position = v49.positionX:map(function(v63)
                        return UDim2.fromOffset(-v63, 0);
                    end),
                    BackgroundTransparency = 1,
                    ZIndex = 2
                }, v58)
            }),
            BottomFrame = v5.createElement("Frame", {
                AnchorPoint = Vector2.new(0, 1),
                Size = UDim2.fromOffset(v51, l_bottomHeight_1),
                Position = UDim2.new(0, 0, 1, 0),
                BorderSizePixel = 0,
                BackgroundTransparency = 1
            }, {
                CloseButton = v5.createElement(v11, {
                    Size = UDim2.fromOffset(48, 48),
                    Position = UDim2.new(0.5, -24, 0.5, -24),
                    Image = "LuaApp/icons/Luobu/close-circle",
                    BorderSizePixel = 0,
                    BackgroundTransparency = 1,
                    [v5.Event.Activated] = v49.props.onActivated
                })
            })
        });
    end);
end;
local function v66(v64, v65)
    return v5.createElement("Frame", {
        Size = UDim2.fromOffset(16, 16),
        Position = UDim2.fromOffset(0.5, 0.5),
        BackgroundTransparency = 1,
        ZIndex = 2,
        BorderSizePixel = 0
    }, (v5.createElement("ImageLabel", {
        BackgroundColor3 = v64.Divider.Color,
        Size = UDim2.new(0.5, 0, 0.5, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        BackgroundTransparency = v65,
        ZIndex = 3,
        BorderSizePixel = 0
    }, {
        UICorner = v5.createElement("UICorner", {
            CornerRadius = UDim.new(0, 4)
        })
    })));
end;
v21.renderIndicator = function(v67, v68, v69, v70, v71)
    local v72 = #v67.props.noticeList;
    if v72 <= 1 then
        return ;
    else
        local v73 = {};
        table.insert(v73, (v5.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            HorizontalAlignment = Enum.HorizontalAlignment.Center
        })));
        for v74 = 1, v72 do
            local v75 = 0.7;
            if v74 == v67.state.selectedValue then
                v75 = 0;
            end;
            table.insert(v73, (v66(v68, v75)));
        end;
        return v5.createElement("Frame", {
            Size = UDim2.fromOffset(v69, 48),
            Position = UDim2.fromOffset(0, (v70 + v71) - 48),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            ZIndex = 3
        }, v73);
    end;
end;
return (v6.connect(function(v76)
    return {
        formFactor = v76.FormFactor,
        screenSize = v76.ScreenSize
    };
end, function(v77)
    return {
        openNoticeDetail = function(v78, v79)
            v77(v12(v78, v79));
        end,
        decrementUnreadTencentNoticeCount = function()
            return v77(v13());
        end,
        readTencentNoticeId = function(v80)
            return v77(v14(v80));
        end
    };
end)(v21));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local v4 = require(l_CorePackages_0.Packages.t);
local v5 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v5.Style.withStyle;
local l_LoadableImage_0 = v5.App.Loading.LoadableImage;
local v8 = require(l_Modules_0.Common.Text);
local v9 = require(l_Modules_0.Luobu.Enum.TencentNoticeType);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v11 = v2.PureComponent:extend("NoticePageControlItem");
v11.validateProps = v4.strictInterface({
    headerHeight = v4.number,
    contentHeight = v4.number,
    width = v4.number,
    notice = v4.table,
    layoutOrder = v4.number,
    formFactor = v4.string,
    hasOneNotice = v4.boolean
});
v11.render = function(v12)
    local l_headerHeight_0 = v12.props.headerHeight;
    local l_contentHeight_0 = v12.props.contentHeight;
    local l_width_0 = v12.props.width;
    local l_title_0 = v12.props.notice.title;
    local l_layoutOrder_0 = v12.props.layoutOrder;
    return l_withStyle_0(function(v18)
        local l_Font_0 = v18.Font;
        local l_Theme_0 = v18.Theme;
        return v2.createElement("Frame", {
            BackgroundTransparency = l_Theme_0.BackgroundUIDefault.Transparency,
            BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
            BorderSizePixel = 0,
            Size = UDim2.fromOffset(l_width_0, l_headerHeight_0 + l_contentHeight_0),
            AnchorPoint = Vector2.new(0, 0),
            LayoutOrder = l_layoutOrder_0
        }, {
            TopFrame = v2.createElement("Frame", {
                Size = UDim2.fromOffset(l_width_0, l_headerHeight_0 + 10),
                BackgroundTransparency = l_Theme_0.BackgroundUIDefault.Transparency,
                BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
                BorderSizePixel = 0,
                ZIndex = 3
            }, {
                TitleLabel = v2.createElement("TextLabel", {
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.new(0.5, 0, 0.5, 0),
                    Size = UDim2.new(0.7, 0, 1, 0),
                    Text = l_title_0,
                    TextColor3 = l_Theme_0.TextEmphasis.Color,
                    BackgroundTransparency = 1,
                    TextTruncate = Enum.TextTruncate.AtEnd,
                    Font = l_Font_0.Header1.Font,
                    TextSize = v18.Font.BaseSize * v18.Font.Header2.RelativeSize,
                    BorderSizePixel = 0
                }),
                DividerLine = v12.props.notice.type == v9.Text and v2.createElement("Frame", {
                    BorderSizePixel = 0,
                    BackgroundColor3 = l_Theme_0.Divider.Color,
                    BackgroundTransparency = l_Theme_0.Divider.Transparency,
                    Size = UDim2.fromOffset(l_width_0 - 48, 1),
                    Position = UDim2.fromOffset(24, l_headerHeight_0 + 10)
                })
            }),
            ContentFrame = v12:renderContent(v18, l_headerHeight_0, l_width_0, l_contentHeight_0)
        });
    end);
end;
v11.renderContent = function(v21, v22, v23, v24, v25)
    local l_type_0 = v21.props.notice.type;
    if l_type_0 == v9.Text then
        return v21:renderTextContent(v22, v23, v24, v25);
    elseif l_type_0 == v9.Image then
        return v21:renderImageContent(v22, v23, v24, v25);
    else
        warn("Error: TencentNoticeType is incorrect" .. l_type_0);
        return nil;
    end;
end;
v11.renderTextContent = function(v27, v28, v29, v30, v31)
    local l_content_0 = v27.props.notice.content;
    if l_content_0 == nil then
        return nil;
    else
        local v33 = v30 - 48;
        local l_Theme_1 = v28.Theme;
        local l_Font_1 = v28.Font.Body.Font;
        local v36 = v28.Font.BaseSize * v28.Font.Body.RelativeSize;
        local l_TextDefault_0 = l_Theme_1.TextDefault;
        local v38 = v8.GetTextHeight(l_content_0, l_Font_1, v36, 10000);
        local v39 = v38 < v31 and v31 or v38;
        local v40 = v31 + 10;
        if v27.props.hasOneNotice then
            v40 = v40 - 48;
        end;
        return v2.createElement("ScrollingFrame", {
            Size = UDim2.fromOffset(v30, v40),
            Position = UDim2.new(0, 0, 0, v29 - 10),
            BorderSizePixel = 0,
            BackgroundColor3 = l_Theme_1.BackgroundUIDefault.Color,
            BackgroundTransparency = l_Theme_1.BackgroundUIDefault.Transparency,
            CanvasSize = UDim2.new(0, v30, 0, v39),
            ScrollingDirection = Enum.ScrollingDirection.Y,
            ScrollBarThickness = 0
        }, {
            Content = v2.createElement("TextLabel", {
                Size = UDim2.fromOffset(v33, v39),
                Position = UDim2.fromOffset(24, 34),
                Text = l_content_0,
                Font = l_Font_1,
                TextSize = v36,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top,
                TextColor3 = l_TextDefault_0.Color,
                TextTransparency = l_TextDefault_0.Transparency,
                TextWrapped = true,
                BackgroundTransparency = 1,
                TextTruncate = Enum.TextTruncate.AtEnd
            })
        });
    end;
end;
v11.renderImageContent = function(v41, v42, v43, v44, v45)
    local l_Theme_2 = v42.Theme;
    return v2.createElement("Frame", {
        Size = UDim2.fromOffset(v44, v45),
        Position = UDim2.fromOffset(0, v43),
        BackgroundTransparency = 1,
        BorderSizePixel = 0
    }, {
        TopCoverLayer = v2.createElement("Frame", {
            BackgroundTransparency = l_Theme_2.BackgroundUIDefault.Transparency,
            BackgroundColor3 = l_Theme_2.BackgroundUIDefault.Color,
            BorderSizePixel = 0,
            Size = UDim2.fromOffset(v44, 10),
            Position = UDim2.fromOffset(0, 0),
            ZIndex = 2
        }),
        ImageView = v2.createElement(l_LoadableImage_0, {
            Size = UDim2.fromOffset(v44, v45),
            Position = UDim2.fromOffset(0, 0),
            Image = not not (v41.props.formFactor == l_FormFactor_0.WIDE) and v41.props.notice.landscapePicUrl or v41.props.notice.portraitPicUrl,
            useShimmerAnimationWhileLoading = true,
            showFailedStateWhenLoadingFailed = true,
            BackgroundTransparency = 1
        }, {
            gradientLayer = not v41.props.hasOneNotice and v2.createElement("Frame", {
                BackgroundTransparency = 0,
                BackgroundColor3 = l_Theme_2.Overlay.Color,
                BorderSizePixel = 0,
                Size = UDim2.fromOffset(v44, 48),
                Position = UDim2.fromOffset(0, v45 - 48),
                ZIndex = 3
            }, {
                UIGradient = v2.createElement("UIGradient", {
                    Rotation = 90,
                    Color = ColorSequence.new({
                        ColorSequenceKeypoint.new(0, Color3.new(0, 0, 0)),
                        ColorSequenceKeypoint.new(1, Color3.new(0, 0, 0))
                    }),
                    Transparency = NumberSequence.new({
                        NumberSequenceKeypoint.new(0, 1),
                        NumberSequenceKeypoint.new(0.1, 1),
                        NumberSequenceKeypoint.new(1, 0)
                    })
                })
            })
        })
    });
end;
return (v3.connect(function(v47)
    return {
        formFactor = v47.FormFactor
    };
end, nil)(v11));


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 v4 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v5 = require(l_Modules_0.Luobu.Components.TencentNoticePopup.NoticePageControl);
local v6 = require(l_CorePackages_0.Packages.t);
local v7 = v2.PureComponent:extend("TencentNoticePopup");
v7.validateProps = v6.strictInterface({
    noticeList = v6.table,
    closePrompt = v6.callback
});
v7.render = function(v8)
    return v2.createElement(v5, {
        noticeList = v8.props.noticeList,
        onActivated = v8.props.closePrompt,
        settings = {
            widePopupWidth = 540,
            widePopupHeight = 268,
            headerHeight = 38,
            bottomHeight = 72,
            compactHeightToWidthRatio = 1.37614
        }
    });
end;
return (v3.connect(nil, function(v9)
    return {
        closePrompt = function()
            v9(v4());
        end
    };
end)(v7));


return {
    TENCENT_NOTICE_CENTER_PAGE_ROW_HEIGHT = 72,
    TENCENT_NOTICE_PAGE_CORNER_RADIUS = 12,
    TENCENT_SMART_HELP_CENTER = "TENCENT_SMART_HELP_CENTER"
};


local _ = game:GetService("HttpService");
local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
return function(v2, v3)
    return v2(string.format("%s/v1/%s/metadata?appType=PlayerApplication", l_Url_0.AUTH_URL, v3), "GET", {
        headers = {
            Referer = "https://roblox.cn/"
        }
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(l_CorePackages_0.Workspace.Packages.Http);
local l_Url_0 = require(l_CorePackages_0.Workspace.Packages.Http).Url;
return function(v4, v5, v6)
    return v4(string.format("%s/v1/%s/signupwithoutpassword?apiKey=%s", l_Url_0.AUTH_URL, v5, "d631f3d9-fce0-4711-8cf4-6f9a9756638b"), "POST", {
        postBody = l_HttpService_0:JSONEncode(v6)
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Url_0 = require(game:GetService("CorePackages").Workspace.Packages.Http).Url;
return function(v2, v3, v4)
    return v2(string.format("%s/v1/%s/token-authentication?apiKey=%s", l_Url_0.AUTH_URL, v3, "d631f3d9-fce0-4711-8cf4-6f9a9756638b"), "POST", {
        postBody = l_HttpService_0:JSONEncode(v4)
    });
end;


local v0 = require(game:GetService("CorePackages").Packages.t);
local v1 = {
    validateJson = v0.interface({
        appType = v0.string,
        type = v0.string,
        userAccessToken = v0.string,
        userOpenId = v0.string
    }),
    new = function()
        return {};
    end
};
v1.mock = function()
    local v2 = v1.new();
    v2.appType = "PlayerMobile";
    v2.type = "QQ";
    v2.userAccessToken = "userAccessTokenStringFromTencentMSDK";
    v2.userOpenId = "userOpenIDStringFromTencentMSDK";
    return v2;
end;
v1.fromJsonData = function(v3)
    assert(v1.validateJson(v3), "Error: TencentAuthInfo JSON is not valid.");
    local v4 = v1.new();
    v4.appType = v3.appType;
    v4.type = v3.type;
    v4.userAccessToken = v3.userAccessToken;
    v4.userOpenId = v3.userOpenId;
    return v4;
end;
return v1;


local v0 = require(game:GetService("CorePackages").Packages.t);
local v1 = {
    validateJson = v0.interface({
        NoticeId = v0.string,
        Scene = v0.string,
        Type = v0.string,
        StartTime = v0.string,
        EndTime = v0.string,
        Title = v0.optional(v0.string),
        HasRead = v0.optional(v0.boolean),
        Content = v0.optional(v0.string),
        NoticeUrl = v0.optional(v0.string),
        WebTypeUrl = v0.optional(v0.string),
        LandscapePicUrl = v0.optional(v0.string),
        PortraitPicUrl = v0.optional(v0.string)
    }),
    new = function()
        return {};
    end
};
v1.mock = function()
    local v2 = v1.new();
    v2.noticeId = 117617;
    v2.scene = "2";
    v2.type = "Image";
    v2.hasRead = false;
    v2.startTime = 1605686400;
    v2.endTime = 1614499200;
    v2.title = "Luobu";
    v2.noticeUrl = "https://www.roblox.cn/";
    return v2;
end;
local function _(v3)
    if not (v3 ~= "") or v3 == " " then
        return nil;
    else
        return v3;
    end;
end;
v1.fromJsonData = function(v5)
    assert(v1.validateJson(v5), "Error: TencentNotice JSON file is not valid.");
    local v6 = v1.new();
    v6.noticeId = tonumber(v5.NoticeId);
    v6.scene = v5.Scene;
    v6.startTime = tonumber(v5.StartTime);
    v6.endTime = tonumber(v5.EndTime);
    v6.hasRead = v5.HasRead;
    v6.title = v5.Title;
    v6.content = v5.Content;
    v6.type = v5.Type;
    local l_NoticeUrl_0 = v5.NoticeUrl;
    v6.noticeUrl = if not (l_NoticeUrl_0 ~= "") or l_NoticeUrl_0 == " " then nil else l_NoticeUrl_0;
    l_NoticeUrl_0 = v5.WebTypeUrl;
    v6.webTypeUrl = if not (l_NoticeUrl_0 ~= "") or l_NoticeUrl_0 == " " then nil else l_NoticeUrl_0;
    v6.landscapePicUrl = v5.LandscapePicUrl;
    v6.portraitPicUrl = v5.PortraitPicUrl;
    return v6;
end;
return v1;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
return require(game:GetService("CorePackages").Rodux).combineReducers({
    TencentAuthInfo = require(l_Modules_0.Luobu.Reducers.TencentAuthInfo),
    TencentNotice = require(l_Modules_0.Luobu.Reducers.TencentNotice),
    TencentNoticeReadStatus = require(l_Modules_0.Luobu.Reducers.TencentNoticeReadStatus),
    MSDKAuth = require(l_Modules_0.Luobu.Reducers.MSDKAuth),
    SignUp = require(l_Modules_0.Luobu.Reducers.SignUp)
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({
    MSDKLoginErrMessageKey = nil,
    tokenAuthErrMessageKey = nil,
    loginInProgress = false,
    openId = ""
}, {
    [require(l_Modules_0.Luobu.Actions.SetMSDKLoginErrMessageKey).name] = function(v3, v4)
        return v2.Dictionary.join(v3, {
            MSDKLoginErrMessageKey = v4.errMessageKey
        });
    end,
    [require(l_Modules_0.Luobu.Actions.SetTokenAuthErrMessageKey).name] = function(v5, v6)
        return v2.Dictionary.join(v5, {
            tokenAuthErrMessageKey = v6.errMessageKey
        });
    end,
    [require(l_Modules_0.Luobu.Actions.SetMSDKLoginInProgress).name] = function(v7, v8)
        return v2.Dictionary.join(v7, {
            loginInProgress = v8.loginInProgress
        });
    end,
    [require(l_Modules_0.Luobu.Actions.SetMSDKLoginOpenId).name] = function(v9, v10)
        return v2.Dictionary.join(v9, {
            openId = v10.openId
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({
    signUpInProgress = false,
    prefilledDisplayName = "",
    signUpVoucher = "",
    authMethod = "",
    channelId = -1,
    agreedUserAgreements = {}
}, {
    [require(l_Modules_0.Luobu.Actions.SetSignUpInProgress).name] = function(v3, v4)
        return v2.Dictionary.join(v3, {
            signUpInProgress = v4.signUpInProgress
        });
    end,
    [require(l_Modules_0.Luobu.Actions.SetSignUpInfo).name] = function(v5, v6)
        return v2.Dictionary.join(v5, {
            prefilledDisplayName = v6.prefilledDisplayName,
            signUpVoucher = v6.signUpVoucher,
            authMethod = v6.authMethod,
            channelId = v6.channelId
        });
    end,
    [require(l_Modules_0.Luobu.Actions.SetAgreedUserAgreements).name] = function(v7, v8)
        return v2.Dictionary.join(v7, {
            agreedUserAgreements = v8.agreedUserAgreements
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({}, {
    [require(l_Modules_0.Luobu.Actions.SetTencentAuthInfo).name] = function(v3, v4)
        return v2.Dictionary.join(v3, {
            tencentAuthInfo = v4.tencentAuthInfo
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({}, {
    [require(l_Modules_0.Luobu.Actions.SetTencentNoticeInfo).name] = function(v3, v4)
        return v2.Dictionary.join(v3, {
            noticeList = v4.noticeList
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
return require(l_CorePackages_0.Rodux).createReducer({}, {
    [require(l_Modules_0.Luobu.Actions.ReadTencentNoticeId).name] = function(v3, v4)
        return v2.Dictionary.join(v3, {
            [v4.noticeId] = true
        });
    end
});


local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_GuiService_0 = game:GetService("GuiService");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v5 = require(l_Modules_0.LuaApp.Experiment.RoactAppExperiment);
local v6 = require(l_Modules_0.LuaApp.Thunks.FetchLocale);
local v7 = require(l_Modules_0.LuaApp.Thunks.FetchTheme);
local v8 = require(l_Modules_0.LuaApp.Thunks.ResetNavigationHistory);
local v9 = require(l_Modules_0.LuaApp.Thunks.GetLocalUser);
local v10 = require(l_Modules_0.LuaApp.Thunks.PreloadApplicationData);
local v11 = require(l_Modules_0.LuaApp.Thunks.Authentication.User);
local v12 = require(l_Modules_0.LuaApp.Thunks.Authentication.ClearApp);
local v13 = require(l_Modules_0.LuaApp.Thunks.Authentication.AppStorageUtilities);
local v14 = require(l_Modules_0.LuaApp.Thunks.Authentication.Logout);
local v15 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.luaLogoutReasonNames);
local _ = require(l_CorePackages_0.Workspace.Packages.Http);
local l_ReceivedUserCountryCode_0 = require(l_CorePackages_0.Workspace.Packages.CountryCode).ReceivedUserCountryCode;
local l_SetAuthenticationStatus_0 = require(l_CorePackages_0.Workspace.Packages.AuthenticationStatus).Actions.SetAuthenticationStatus;
local v19 = require(l_Modules_0.LuaApp.Http.Requests.GetAccountInfo);
local v20 = require(l_Modules_0.LuaApp.Enum.LoginStatus);
local v21 = require(l_Modules_0.LuaApp.Enum.MemStorageKeys);
local v22 = require(l_Modules_0.LuaApp.Enum.LaunchContext);
local v23 = require(l_Modules_0.LuaApp.Enum.NotificationType);
local l_StatusCodes_0 = require(l_CorePackages_0.Workspace.Packages.Http).StatusCodes;
local v25 = require(l_Modules_0.Luobu.Analytics.Events.AppSessionCheckCounterNames);
local v26 = require(l_Modules_0.LuaApp.AppPage);
local l_Logger_0 = require(l_CorePackages_0.Workspace.Packages.Loggers).Logger;
local v28 = require(l_Modules_0.LuaApp.Promise);
local v29 = require(l_Modules_0.LuaApp.PromiseUtilities);
local l_AuthenticationProtocol_0 = require(l_CorePackages_0.Workspace.Packages.AuthenticationProtocol).AuthenticationProtocol;
local function _(v31)
    v5.initializeUserLayers(v31);
end;
local function _(v33, v34)
    l_GuiService_0:BroadcastNotification(v33:toJsonData(), v23.DID_LOG_IN);
    v34:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_IN));
end;
local function v41(v36, v37, v38)
    v29.Batch({
        (v6(v37))
    }):andThen(function(v39)
        v39[1]:match(function(v40)
            v13.setRobloxLocaleId(v40.signupAndLoginLocale);
            l_LocalizationService_0:SetRobloxLocaleId(v40.signupAndLoginLocale);
        end);
        if v38 then
            v36:dispatch(v12());
        end;
        v36:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_OUT));
        v36:dispatch(v8({
            {
                name = v26.Landing
            }
        }));
    end);
end;
local function v53(v42, v43, v44, v45, v46)
    return v19(v43):andThen(function(v47)
        v44.Diag:reportCounter(v25.Success, 1);
        local v48 = v11.fromRequest(v47);
        if not (v48:isEqual(v46) and not v45.useMSDKWebAuthentication()) then
            v48:setToLocalPlayer();
            v48:setToLocalStorage();
            v42:dispatch(v12());
            v42:dispatch(v9());
            v42:dispatch(l_ReceivedUserCountryCode_0(v48.countryCode));
            v42:dispatch(v8({
                {
                    name = v26.Home
                }
            }));
            v5.initializeUserLayers(v48.userId);
        end;
        v42:dispatch(v10(v43, v44, v45));
        local v49 = {};
        table.insert(v49, v6(v43):andThen(function(v50)
            v13.setRobloxLocaleId(v50.generalExperienceLocale);
            v13.setGameLocaleId(v50.ugcLocale);
            l_LocalizationService_0:SetRobloxLocaleId(v50.generalExperienceLocale);
        end));
        l_MemStorageService_0:Fire(v21.ThemeUpdate, (v13.getAuthenticatedTheme()));
        table.insert(v49, v7(v43, v48.userId):andThen(function(v51)
            v13.setAuthenticatedTheme(v51);
            l_MemStorageService_0:Fire(v21.ThemeUpdate, v51);
        end));
        v29.Batch(v49):andThen(function()
            v13.flush();
        end);
        return v28.resolve(v48);
    end, function(v52)
        if v52.StatusCodes == l_StatusCodes_0.UNAUTHORIZED then
            v44.Diag:reportCounter(v25.Failure401Unauthenticated, 1);
        end;
        v44.Diag:reportCounter(v25.Failure, 1);
        return v28.reject();
    end);
end;
local function _(v54, v55, v56, v57, v58)
    v58:setToLocalPlayer();
    v5.initializeUserLayers(v58.userId);
    spawn(function()
        v54:dispatch(v9());
        v54:dispatch(l_ReceivedUserCountryCode_0(v58.countryCode));
        v54:dispatch(v8({
            {
                name = v26.Home
            }
        }));
        v53(v54, v55, v56, v57, v58):andThen(function(v59)
            local v60, v61 = l_AuthenticationProtocol_0.default:requestAuth(l_AuthenticationProtocol_0.AuthProviders.MSDK, l_AuthenticationProtocol_0.AuthMethods.NONE):await();
            if not v60 or v61.statusCode ~= 0 then
                l_Logger_0:info("MSDK Auto Login with ErrorCode: " .. v61.statusCode);
                v41(v54, v55, true);
                v56.Diag:reportCounter("MSDKAutoLoginErrorCode_" .. v61.statusCode, 1);
                v54:dispatch(v14(v55, l_GuiService_0, v15.UnauthorizedAutoLogin));
                return ;
            else
                local l_v54_0 = v54;
                l_GuiService_0:BroadcastNotification(v59:toJsonData(), v23.DID_LOG_IN);
                l_v54_0:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_IN));
                return ;
            end;
        end, function()
            v41(v54, v55, true);
        end);
    end);
end;
local function _(v64, v65, v66, v67, v68, v69)
    if not v69 then
        spawn(function()
            v53(v64, v65, v66, v67, v68):andThen(function(v70)
                local l_v64_0 = v64;
                l_GuiService_0:BroadcastNotification(v70:toJsonData(), v23.DID_LOG_IN);
                l_v64_0:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_IN));
            end, function()
                v41(v64, v65, false);
            end);
        end);
        return ;
    else
        v41(v64, v65, false);
        return ;
    end;
end;
return function(v73, v74, v75, v76)
    return function(v77)
        local v78 = v11.fromLocalStorage();
        if v78.userId ~= -1 and not v75.useMSDKWebAuthentication() then
            l_Logger_0:info(string.format("[%f] LaunchLuobuApp::handleCachedUser()", tick()));
            local l_v73_0 = v73;
            local l_v74_0 = v74;
            local l_v75_0 = v75;
            v78:setToLocalPlayer();
            v5.initializeUserLayers(v78.userId);
            spawn(function()
                v77:dispatch(v9());
                v77:dispatch(l_ReceivedUserCountryCode_0(v78.countryCode));
                v77:dispatch(v8({
                    {
                        name = v26.Home
                    }
                }));
                v53(v77, l_v73_0, l_v74_0, l_v75_0, v78):andThen(function(v82)
                    local v83, v84 = l_AuthenticationProtocol_0.default:requestAuth(l_AuthenticationProtocol_0.AuthProviders.MSDK, l_AuthenticationProtocol_0.AuthMethods.NONE):await();
                    if not v83 or v84.statusCode ~= 0 then
                        l_Logger_0:info("MSDK Auto Login with ErrorCode: " .. v84.statusCode);
                        v41(v77, l_v73_0, true);
                        l_v74_0.Diag:reportCounter("MSDKAutoLoginErrorCode_" .. v84.statusCode, 1);
                        v77:dispatch(v14(l_v73_0, l_GuiService_0, v15.UnauthorizedAutoLogin));
                        return ;
                    else
                        local l_v77_0 = v77;
                        l_GuiService_0:BroadcastNotification(v82:toJsonData(), v23.DID_LOG_IN);
                        l_v77_0:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_IN));
                        return ;
                    end;
                end, function()
                    v41(v77, l_v73_0, true);
                end);
            end);
            return ;
        else
            l_Logger_0:info(string.format("[%f] LaunchLuobuApp::handleNoCachedUser()", tick()));
            local l_v73_1 = v73;
            local l_v74_1 = v74;
            local l_v75_1 = v75;
            if not (v76 == v22.Startup) then
                spawn(function()
                    v53(v77, l_v73_1, l_v74_1, l_v75_1, v78):andThen(function(v89)
                        local l_v77_1 = v77;
                        l_GuiService_0:BroadcastNotification(v89:toJsonData(), v23.DID_LOG_IN);
                        l_v77_1:dispatch(l_SetAuthenticationStatus_0(v20.LOGGED_IN));
                    end, function()
                        v41(v77, l_v73_1, false);
                    end);
                end);
                return ;
            else
                v41(v77, l_v73_1, false);
                return ;
            end;
        end;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_Modules_0.LuaApp.Promise);
local v4 = require(l_Modules_0.Luobu.Http.Requests.SignUpRequest);
local v5 = require(l_Modules_0.Luobu.Thunks.LaunchLuobuApp);
local v6 = require(l_Modules_0.LuaApp.Thunks.SetNetworkingErrorToast);
local v7 = require(l_Modules_0.Luobu.Analytics.Events.AppSignupCounterNames);
local v8 = v2.interface({
    birthday = v2.string,
    displayName = v2.string,
    gender = v2.number,
    voucher = v2.string,
    channelId = v2.number,
    agreementIds = v2.table
});
return function(v9, v10, v11, v12, v13)
    return function(v14)
        assert(v8(v13));
        return v4(v9, v12, v13):andThen(function(_)
            v10.Diag:reportCounter(v7.Success, 1);
            v14:dispatch(v5(v9, v10, v11));
            return v3.resolve();
        end, function(_)
            v10.Diag:reportCounter(v7.Failure, 1);
            v14:dispatch(v6({
                HttpError = Enum.HttpError.OK
            }));
            return v3.reject();
        end);
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.UIBlox);
local l_Images_0 = v3.App.ImageSet.Images;
local l_Toast_0 = v3.App.Dialog.Toast;
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v7 = require(l_RobloxGui_0.Modules.RobloxTranslator);
local l_ContentProvider_0 = game:GetService("ContentProvider");
local v9 = require(l_RobloxGui_0.Modules.Common.renderWithCoreScriptsStyleProvider);
local v10 = v2.PureComponent:extend("LuobuWarningToastComponent");
local v11 = v7:FormatByKey("InGame.CommonUI.Message.LuobuGameJoinWarning");
v10.init = function(v12)
    v12.state = {
        isLoaded = false
    };
    task.spawn(function()
        local l_Image_0 = l_Images_0["icons/status/alert"].Image;
        pcall(function()
            l_ContentProvider_0:PreloadAsync({
                l_Image_0
            });
        end);
        v12:setState({
            isLoaded = true
        });
    end);
    v12.getToastContent = function()
        return {
            iconImage = l_Images_0["icons/status/alert"],
            iconColorStyle = {
                Color = Color3.new(1, 1, 1),
                Transparency = 0
            },
            toastTitle = v11
        };
    end;
end;
v10.render = function(v14)
    if v14.state.isLoaded then
        return v9({
            RobloxCaptureNotificationGui = v2.createElement("ScreenGui", {
                AutoLocalize = false,
                DisplayOrder = 9,
                IgnoreGuiInset = true,
                OnTopOfCoreBlur = true,
                ZIndexBehavior = Enum.ZIndexBehavior.Sibling
            }, {
                Content = v2.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 1, 0)
                }, {
                    WarningToast = v2.createElement(l_Toast_0, {
                        duration = 5,
                        show = true,
                        toastContent = v14.getToastContent()
                    })
                })
            })
        });
    else
        return nil;
    end;
end;
return v10;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(script.LuobuWarningToastComponent);
local v4 = {};
v4.__index = v4;
v4.new = function()
    local v5 = setmetatable({}, v4);
    v5.element = v2.createElement(v3);
    v5.root = v2.mount(v5.element, l_CoreGui_0, "LuobuWarningToast");
    task.delay(10, function()
        v2.unmount(v5.root);
    end);
    return v5;
end;
return v4.new();


local v0 = UDim2.new(1.1, 0, 1.1, 0);
local v1 = UDim2.new(0.9, 0, 0.9, 0);
local l_TweenService_0 = game:GetService("TweenService");
local l_Modules_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui"):WaitForChild("Modules");
local l_AppFonts_0 = require(game:GetService("CorePackages").Workspace.Packages.Style).AppFonts;
local v5 = require(l_Modules_0.RobloxTranslator);
local v6 = require(l_Modules_0.Common.Create);
local v7 = TweenInfo.new(0.15, Enum.EasingStyle.Sine);
local v8 = TweenInfo.new(0.6, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true);
local v9 = game:DefineFastFlag("LocalizeGameplayPaused", false);
local v10 = game:DefineFastFlag("NetworkPauseNotifTweenCancel", false);
local v11 = game:DefineFastFlag("NetworkPauseNoAnimation", false);
local function v13()
    local v12 = not v11 and 1 or 0;
    return v6("ImageLabel")({
        Name = "NetworkPause",
        Image = "rbxasset://textures/ui/PurchasePrompt/LoadingBG.png",
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(8, 8, 12, 12),
        AnchorPoint = Vector2.new(0.5, 0.5),
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        ImageColor3 = Color3.fromRGB(122, 122, 122),
        ImageTransparency = v12,
        BackgroundTransparency = 1;
        v6("UISizeConstraint")({
            MaxSize = Vector2.new(312, 251)
        }),
        v6("UIPadding")({
            PaddingTop = UDim.new(0, 24),
            PaddingLeft = UDim.new(0, 24),
            PaddingRight = UDim.new(0, 24),
            PaddingBottom = UDim.new(0, 24)
        }),
        v6("Frame")({
            Name = "Accent",
            BorderSizePixel = 0,
            BackgroundColor3 = Color3.fromRGB(66, 66, 66),
            Size = UDim2.new(1, 0, 0, 1),
            Position = UDim2.new(0, 0, 0, 88),
            BackgroundTransparency = v12
        }),
        v6("Frame")({
            Name = "Upper",
            Size = UDim2.new(1, 0, 0, 88),
            BackgroundTransparency = 1;
            v6("Frame")({
                Name = "IconContainer",
                Size = UDim2.new(0, 40, 0, 37),
                AnchorPoint = Vector2.new(0.5, 0),
                Position = UDim2.new(0.5, 0, 0, 0),
                BackgroundTransparency = 1;
                v6("ImageLabel")({
                    Name = "Icon",
                    BackgroundTransparency = 1,
                    Image = "rbxasset://textures/ui/NetworkPause/no connection.png",
                    Size = v1,
                    Position = UDim2.new(0.5, 0, 0.88, 0),
                    AnchorPoint = Vector2.new(0.5, 0.88),
                    ImageTransparency = v12
                })
            }),
            v6("TextLabel")({
                Name = "Label",
                Font = l_AppFonts_0.default:getBold(),
                Text = not not v9 and v5:FormatByKey("InGame.GameplayPaused.Title") or "Gameplay Paused",
                TextSize = 22,
                TextWrapped = true,
                Size = UDim2.new(1, 0, 0, 22),
                Position = UDim2.new(0, 0, 0, 54),
                BackgroundTransparency = 1,
                TextColor3 = Color3.fromRGB(255, 255, 255),
                TextTransparency = v12
            })
        }),
        v6("TextLabel")({
            Name = "Lower",
            Font = l_AppFonts_0.default:getDefault(),
            Text = not not v9 and v5:FormatByKey("InGame.GameplayPaused.Body") or "Gameplay has been paused: please wait while the game content loads.",
            TextColor3 = Color3.fromRGB(190, 190, 190),
            TextSize = 18,
            TextWrapped = true,
            Position = UDim2.new(0, 0, 0, 89),
            Size = UDim2.new(1, 0, 1, -89),
            BackgroundTransparency = 1,
            TextTransparency = v12
        })
    });
end;
local v14 = {};
v14.__index = v14;
v14.new = function()
    local v15 = setmetatable({}, v14);
    local v16 = v13();
    if not v11 then
        v16:GetPropertyChangedSignal("ImageTransparency"):Connect(function()
            local l_ImageTransparency_0 = v16.ImageTransparency;
            v16.Lower.TextTransparency = l_ImageTransparency_0;
            v16.Accent.BackgroundTransparency = l_ImageTransparency_0;
            v16.Upper.Label.TextTransparency = l_ImageTransparency_0;
            v16.Upper.IconContainer.Icon.ImageTransparency = l_ImageTransparency_0;
        end);
    end;
    local v18 = l_TweenService_0:Create(v16, v7, {
        ImageTransparency = 0
    });
    local v19 = l_TweenService_0:Create(v16, v7, {
        ImageTransparency = 1
    });
    local v20 = l_TweenService_0:Create(v16.Upper.IconContainer.Icon, v8, {
        Size = v0,
        ImageTransparency = 0.75
    });
    if not v11 then
        v18.Completed:Connect(function(v21)
            if v21 == Enum.PlaybackState.Completed then
                v16.Upper.IconContainer.Icon.ImageTransparency = 0;
                v20:Play();
            end;
        end);
    end;
    v15.__gui = v16;
    v15.__guiParent = nil;
    v15.__show = false;
    v15.__animations = {
        show = v18,
        hide = v19,
        pulse = v20
    };
    return v15;
end;
v14.Show = function(v22)
    v22.__gui.Upper.IconContainer.Icon.Size = v1;
    if not v11 then
        if v10 then
            v22.__animations.hide:Cancel();
        end;
        v22.__animations.show:Play();
        return ;
    else
        v22.__gui.Upper.IconContainer.Icon.ImageTransparency = 0;
        v22.__show = true;
        v22.__gui.Parent = v22.__guiParent;
        v22.__animations.pulse:Play();
        return ;
    end;
end;
v14.Hide = function(v23)
    if not v11 then
        v23.__animations.pulse:Cancel();
        if v10 then
            v23.__animations.show:Cancel();
        end;
        v23.__animations.hide:Play();
        return ;
    else
        v23.__show = false;
        v23.__gui.Parent = nil;
        v23.__animations.pulse:Cancel();
        return ;
    end;
end;
v14.SetParent = function(v24, v25)
    if not v11 then
        v24.__gui.Parent = v25;
    else
        v24.__guiParent = v25;
        if v24.__show then
            v24.__gui.Parent = v25;
            return ;
        end;
    end;
end;
return v14;


local v0 = false;
local l_status_0, l_result_0 = pcall(function()
    return UserSettings():IsUserFeatureEnabled("UserHandleChatHotKeyWithContextActionService");
end);
if l_status_0 then
    v0 = l_result_0;
end;
l_result_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_StarterGui_0 = game:GetService("StarterGui");
local l_GuiService_0 = game:GetService("GuiService");
local l_Players_0 = game:GetService("Players");
local v6 = false;
local l_ClassicChat_0 = l_Players_0.ClassicChat;
local l_BubbleChat_0 = l_Players_0.BubbleChat;
local v9 = require(l_result_0.Modules.ChatUtil);
local v10 = require(game:GetService("CorePackages").ExperienceChat);
local v11 = {};
local v12 = {
    Visible = true,
    MessageCount = 0,
    TopbarEnabled = true,
    CoreGuiEnabled = true
};
local v13 = {
    ChatWindow = nil,
    GetCore = nil,
    SetCore = nil
};
local v14 = {};
local v15 = {};
local function _(v16, v17, v18)
    if (not v16 or not v16[v17]) or not v16[v17]:IsA(v18) then
        return nil;
    else
        return v16[v17];
    end;
end;
local function v23(v20, ...)
    local l_ChatWindow_0 = v13.ChatWindow;
    local v22 = if (not not l_ChatWindow_0 and l_ChatWindow_0[v20]) and l_ChatWindow_0[v20]:IsA("BindableEvent") then l_ChatWindow_0[v20] else nil;
    if not v22 then
        return false;
    else
        v22:Fire(...);
        return true;
    end;
end;
local function v27(v24, ...)
    local l_ChatWindow_1 = v13.ChatWindow;
    local v26 = if (not not l_ChatWindow_1 and l_ChatWindow_1[v24]) and l_ChatWindow_1[v24]:IsA("BindableFunction") then l_ChatWindow_1[v24] else nil;
    if not v26 then
        return false, nil;
    else
        return true, v26:Invoke();
    end;
end;
local function _(v28)
    l_StarterGui_0:RegisterGetCore(v28, function(v29)
        local l_GetCore_0 = v13.GetCore;
        local l_v28_0 = v28;
        local v32 = if (not not l_GetCore_0 and l_GetCore_0[l_v28_0]) and l_GetCore_0[l_v28_0]:IsA("BindableFunction") then l_GetCore_0[l_v28_0] else nil;
        l_GetCore_0 = nil;
        if v32 then
            l_GetCore_0 = v32:Invoke(v29);
        end;
        return l_GetCore_0;
    end);
end;
v11.ToggleVisibility = function(_)
    v12.Visible = not v12.Visible;
    if not v23("ToggleVisibility") then
        v11.VisibilityStateChanged:fire(v12.Visible);
    end;
    v10.Events.ChatTopBarButtonActivated(v12.Visible);
end;
v11.SetVisible = function(_, v36)
    v12.Visible = v36;
    v10.Events.ChatTopBarButtonActivated(v12.Visible);
    if not v23("SetVisible", v12.Visible) then
        v11.VisibilityStateChanged:fire(v12.Visible);
    end;
end;
v11.FocusChatBar = function(_)
    v23("FocusChatBar");
end;
v11.EnterWhisperState = function(_, v39)
    return v23("EnterWhisperState", v39);
end;
v11.GetVisibility = function(_)
    local v41, v42 = v27("GetVisibility");
    if not v41 then
        return v12.Visible;
    else
        return v42;
    end;
end;
v11.GetMessageCount = function(_)
    local v44, v45 = v27("GetMessageCount");
    if not v44 then
        return v12.MessageCount;
    else
        return v45;
    end;
end;
v11.TopbarEnabledChanged = function(_, v47)
    v12.TopbarEnabled = v47;
    v23("TopbarEnabledChanged", v12.TopbarEnabled);
end;
v11.IsFocused = function(_, v49)
    local v50, v51 = v27("IsFocused", v49);
    if not v50 then
        return false;
    else
        return v51;
    end;
end;
v11.ClassicChatEnabled = function(_)
    return l_ClassicChat_0;
end;
v11.IsBubbleChatOnly = function(_)
    return l_BubbleChat_0 and not l_ClassicChat_0;
end;
v11.IsDisabled = function(_)
    return not (l_BubbleChat_0 or l_ClassicChat_0);
end;
SetInitialChatTypes = function(v55)
    if not v6 then
        v6 = true;
        local l_BubbleChatEnabled_0 = v55.BubbleChatEnabled;
        local l_ClassicChatEnabled_0 = v55.ClassicChatEnabled;
        if type(l_BubbleChatEnabled_0) == "boolean" then
            l_BubbleChat_0 = l_BubbleChatEnabled_0;
        end;
        if type(l_ClassicChatEnabled_0) == "boolean" then
            l_ClassicChat_0 = l_ClassicChatEnabled_0;
        end;
        if not (l_ClassicChat_0 or l_BubbleChat_0) then
            v11.ChatDisabled:fire();
        end;
        if not (not l_BubbleChat_0 or l_ClassicChat_0) then
            v11.BubbleChatOnlySet:fire();
        end;
        return ;
    else
        return ;
    end;
end;
v11.ChatBarFocusChanged = v9.Signal();
v11.VisibilityStateChanged = v9.Signal();
v11.MessagesChanged = v9.Signal();
v11.BubbleChatOnlySet = v9.Signal();
v11.ChatDisabled = v9.Signal();
l_StarterGui_0.CoreGuiChangedSignal:connect(function(v58, v59)
    if not (v58 ~= Enum.CoreGuiType.All) or v58 == Enum.CoreGuiType.Chat then
        v12.CoreGuiEnabled = v59;
        v23("CoreGuiEnabled", v12.CoreGuiEnabled);
    end;
end);
if not v0 then
    l_GuiService_0:AddSpecialKey(Enum.SpecialKey.ChatHotkey);
    l_GuiService_0.SpecialKeyPressed:connect(function(v60, v61)
        if not l_GuiService_0.MenuIsOpen then
            v23("SpecialKeyPressed", v60, v61);
            return ;
        else
            return ;
        end;
    end);
end;
DoConnectSetCore = function(v62)
    l_StarterGui_0:RegisterSetCore(v62, function(v63)
        local l_SetCore_0 = v13.SetCore;
        local l_v62_0 = v62;
        local v66 = if (not not l_SetCore_0 and l_SetCore_0[l_v62_0]) and l_SetCore_0[l_v62_0]:IsA("BindableEvent") then l_SetCore_0[l_v62_0] else nil;
        if not v66 then
            if v15[v62] == nil then
                v15[v62] = {};
            end;
            table.insert(v15[v62], v63);
            return ;
        else
            v66:Fire(v63);
            return ;
        end;
    end);
end;
DoConnectSetCore("ChatMakeSystemMessage");
DoConnectSetCore("ChatWindowPosition");
DoConnectSetCore("ChatWindowSize");
DoConnectSetCore("ChatBarDisabled");
local v67 = "ChatWindowPosition";
local v68 = "ChatWindowPosition";
local l_v68_0 = v68 --[[ copy: 25 -> 26 ]];
l_StarterGui_0:RegisterGetCore(v67, function(v70)
    local l_GetCore_1 = v13.GetCore;
    local l_l_v68_0_0 = l_v68_0;
    local v73 = if (not not l_GetCore_1 and l_GetCore_1[l_l_v68_0_0]) and l_GetCore_1[l_l_v68_0_0]:IsA("BindableFunction") then l_GetCore_1[l_l_v68_0_0] else nil;
    l_GetCore_1 = nil;
    if v73 then
        l_GetCore_1 = v73:Invoke(v70);
    end;
    return l_GetCore_1;
end);
v67 = "ChatWindowSize";
v68 = "ChatWindowSize";
local l_v68_1 = v68 --[[ copy: 25 -> 27 ]];
l_StarterGui_0:RegisterGetCore(v67, function(v75)
    local l_GetCore_2 = v13.GetCore;
    local l_l_v68_1_0 = l_v68_1;
    local v78 = if (not not l_GetCore_2 and l_GetCore_2[l_l_v68_1_0]) and l_GetCore_2[l_l_v68_1_0]:IsA("BindableFunction") then l_GetCore_2[l_l_v68_1_0] else nil;
    l_GetCore_2 = nil;
    if v78 then
        l_GetCore_2 = v78:Invoke(v75);
    end;
    return l_GetCore_2;
end);
v67 = "ChatBarDisabled";
v68 = "ChatBarDisabled";
l_StarterGui_0:RegisterGetCore(v67, function(v79)
    local l_GetCore_3 = v13.GetCore;
    local l_v68_2 = v68;
    local v82 = if (not not l_GetCore_3 and l_GetCore_3[l_v68_2]) and l_GetCore_3[l_v68_2]:IsA("BindableFunction") then l_GetCore_3[l_v68_2] else nil;
    l_GetCore_3 = nil;
    if v82 then
        l_GetCore_3 = v82:Invoke(v79);
    end;
    return l_GetCore_3;
end);
do
    local l_v14_0 = v14;
    local function v102(v84)
        if type(v84) == "table" then
            local l_ChatWindow_2 = v84.ChatWindow;
            local l_SetCore_1 = v84.SetCore;
            local l_GetCore_4 = v84.GetCore;
            if type(l_ChatWindow_2) == "table" then
                for _, v89 in pairs(l_v14_0) do
                    v89:disconnect();
                end;
                if type(l_ChatWindow_2.ChatTypes) == "table" then
                    SetInitialChatTypes(l_ChatWindow_2.ChatTypes);
                end;
                l_v14_0 = {};
                v13.ChatWindow = {};
                v13.ChatWindow.ToggleVisibility = if (not not l_ChatWindow_2 and l_ChatWindow_2.ToggleVisibility) and l_ChatWindow_2.ToggleVisibility:IsA("BindableEvent") then l_ChatWindow_2.ToggleVisibility else nil;
                v13.ChatWindow.SetVisible = if (not not l_ChatWindow_2 and l_ChatWindow_2.SetVisible) and l_ChatWindow_2.SetVisible:IsA("BindableEvent") then l_ChatWindow_2.SetVisible else nil;
                v13.ChatWindow.FocusChatBar = if (not not l_ChatWindow_2 and l_ChatWindow_2.FocusChatBar) and l_ChatWindow_2.FocusChatBar:IsA("BindableEvent") then l_ChatWindow_2.FocusChatBar else nil;
                v13.ChatWindow.EnterWhisperState = if (not not l_ChatWindow_2 and l_ChatWindow_2.EnterWhisperState) and l_ChatWindow_2.EnterWhisperState:IsA("BindableEvent") then l_ChatWindow_2.EnterWhisperState else nil;
                v13.ChatWindow.TopbarEnabledChanged = if (not not l_ChatWindow_2 and l_ChatWindow_2.TopbarEnabledChanged) and l_ChatWindow_2.TopbarEnabledChanged:IsA("BindableEvent") then l_ChatWindow_2.TopbarEnabledChanged else nil;
                v13.ChatWindow.IsFocused = if (not not l_ChatWindow_2 and l_ChatWindow_2.IsFocused) and l_ChatWindow_2.IsFocused:IsA("BindableFunction") then l_ChatWindow_2.IsFocused else nil;
                if not v0 then
                    v13.ChatWindow.SpecialKeyPressed = if (not not l_ChatWindow_2 and l_ChatWindow_2.SpecialKeyPressed) and l_ChatWindow_2.SpecialKeyPressed:IsA("BindableEvent") then l_ChatWindow_2.SpecialKeyPressed else nil;
                end;
                local function v93(v90)
                    local l_ChatWindow_3 = v13.ChatWindow;
                    local l_l_ChatWindow_2_0 = l_ChatWindow_2;
                    l_ChatWindow_3[v90] = if (not not l_l_ChatWindow_2_0 and l_l_ChatWindow_2_0[v90]) and l_l_ChatWindow_2_0[v90]:IsA("BindableEvent") then l_l_ChatWindow_2_0[v90] else nil;
                    if v13.ChatWindow[v90] then
                        table.insert(l_v14_0, (v13.ChatWindow[v90].Event:connect(function(...)
                            v11[v90]:fire(...);
                        end)));
                    end;
                end;
                v93("ChatBarFocusChanged");
                v93("VisibilityStateChanged");
                v93("MessagesChanged");
                v13.ChatWindow.MessagePosted = if (not not l_ChatWindow_2 and l_ChatWindow_2.MessagePosted) and l_ChatWindow_2.MessagePosted:IsA("BindableEvent") then l_ChatWindow_2.MessagePosted else nil;
                if v13.ChatWindow.MessagePosted then
                    table.insert(l_v14_0, (v13.ChatWindow.MessagePosted.Event:connect(function(v94)
                        game:GetService("Players"):Chat(v94);
                    end)));
                end;
                v11:SetVisible(v12.Visible);
                v11:TopbarEnabledChanged(v12.TopbarEnabled);
                local v95 = if (not not l_ChatWindow_2 and l_ChatWindow_2.CoreGuiEnabled) and l_ChatWindow_2.CoreGuiEnabled:IsA("BindableEvent") then l_ChatWindow_2.CoreGuiEnabled else nil;
                if v95 then
                    v13.ChatWindow.CoreGuiEnabled = v95;
                    v95:Fire(v12.CoreGuiEnabled);
                end;
            else
                error("Table 'ChatWindow' must be provided");
            end;
            if type(l_SetCore_1) == "table" and type(l_GetCore_4) == "table" then
                v13.SetCore = {};
                v13.GetCore = {};
                local function v101(v96)
                    local l_l_SetCore_1_0 = l_SetCore_1;
                    local v98 = if (not not l_l_SetCore_1_0 and l_l_SetCore_1_0[v96]) and l_l_SetCore_1_0[v96]:IsA("BindableEvent") then l_l_SetCore_1_0[v96] else nil;
                    if v98 then
                        v13.SetCore[v96] = v98;
                        if v15[v96] then
                            for _, v100 in pairs(v15[v96]) do
                                v98:Fire(v100);
                            end;
                            v15[v96] = nil;
                        end;
                    end;
                end;
                v101("ChatMakeSystemMessage");
                v101("ChatWindowPosition");
                v101("ChatWindowSize");
                v101("ChatBarDisabled");
                v13.GetCore.ChatWindowPosition = if (not not l_GetCore_4 and l_GetCore_4.ChatWindowPosition) and l_GetCore_4.ChatWindowPosition:IsA("BindableFunction") then l_GetCore_4.ChatWindowPosition else nil;
                v13.GetCore.ChatWindowSize = if (not not l_GetCore_4 and l_GetCore_4.ChatWindowSize) and l_GetCore_4.ChatWindowSize:IsA("BindableFunction") then l_GetCore_4.ChatWindowSize else nil;
                v13.GetCore.ChatBarDisabled = if (not not l_GetCore_4 and l_GetCore_4.ChatBarDisabled) and l_GetCore_4.ChatBarDisabled:IsA("BindableFunction") then l_GetCore_4.ChatBarDisabled else nil;
                return ;
            elseif not (type(l_SetCore_1) == "nil") or type(l_GetCore_4) ~= "nil" then
                error("Both 'SetCore' and 'GetCore' must be tables if provided");
            end;
        end;
    end;
    v10.listenToDispatch(function(v103)
        if v103.type == "FocusChatHotKeyActivated" then
            v11:SetVisible(true);
        end;
    end);
    l_StarterGui_0:RegisterSetCore("CoreGuiChatConnections", v102);
end;
return v11;


return {
    eventName = "feedItemRowDataHitCounter",
    backends = {
        require(game:GetService("CorePackages").Workspace.Packages.LoggingProtocol).TelemetryBackends.Counter
    },
    throttlingPercentage = require(game:GetService("CoreGui").RobloxGui.Modules.Personalization.Flags.FIntFeedItemRowDataCounterThrottle),
    lastUpdated = {
        24,
        5,
        29
    },
    description = "Count the number of times feed item row data is accessible when game impression is sent"
};


return {
    eventName = "feedItemRowDataMissingCounter",
    backends = {
        require(game:GetService("CorePackages").Workspace.Packages.LoggingProtocol).TelemetryBackends.Counter
    },
    throttlingPercentage = require(game:GetService("CoreGui").RobloxGui.Modules.Personalization.Flags.FIntFeedItemRowDataCounterThrottle),
    lastUpdated = {
        24,
        5,
        29
    },
    description = "Count the number of times feed item data is missing when game impression is sent"
};


return {
    eventName = "ScrollingPerformance",
    backends = {
        require(game:GetService("CorePackages").Workspace.Packages.LoggingProtocol).TelemetryBackends.Points
    },
    throttlingPercentage = 10000,
    lastUpdated = {
        23,
        10,
        18
    },
    description = "Reporting the scrolling performance of ScrollingFrames",
    links = "https://roblox.atlassian.net/wiki/spaces/APEX/pages/2276295974/Scrolling+Performance+Tracker"
};


local v0 = require(game:GetService("CorePackages").Packages.React);
local l_RunService_0 = game:GetService("RunService");
game:DefineFastInt("ScrollDetectorTimeThresholdMillis", 300000);
game:DefineFastInt("ScrollDetectorDelayMillis", 250);
local function _()
    return game:GetFastInt("ScrollDetectorDelayMillis") / 1000;
end;
local function _()
    return game:GetFastInt("ScrollDetectorTimeThresholdMillis") / 1000;
end;
return function(v4)
    local v5 = v0.useRef(0);
    local v6 = v0.useRef(0);
    local v7 = v0.useRef(nil);
    local v8 = v0.useRef(nil);
    local v9 = v0.useRef(0);
    local v10 = v0.useRef(0);
    local v11 = v0.useRef(nil);
    local function _(v12)
        local v13 = v5.current - v6.current;
        if v13 == 0 then
            return ;
        else
            v4.sendScrollEvent(v13, v12 - v9.current, v6.current);
            return ;
        end;
    end;
    local function v27()
        if v4.scrollingFrameRef and v4.scrollingFrameRef.current then
            local v15 = nil;
            local v16 = time();
            local v17 = v16 - v9.current;
            if not (not v4.scrollingFrameRef or not v4.scrollingFrameRef.current) then
                v15 = if v4.scrollingFrameRef.current.ScrollingDirection == Enum.ScrollingDirection.Y then v4.scrollingFrameRef.current.CanvasPosition.Y else v4.scrollingFrameRef.current.CanvasPosition.X;
            end;
            local v18 = v5.current - v6.current;
            local v19 = v15 - v5.current;
            if not v11.current and v19 == 0 then
                v11.current = v10.current;
            elseif v11.current and v19 ~= 0 then
                v11.current = nil;
            end;
            if v11.current and v11.current + game:GetFastInt("ScrollDetectorDelayMillis") / 1000 < v16 then
                v5.current = v15;
                local l_current_0 = v11.current;
                local v21 = v5.current - v6.current;
                if not (v21 == 0) then
                    v4.sendScrollEvent(v21, l_current_0 - v9.current, v6.current);
                end;
                v6.current = v15;
                l_current_0 = v7.current;
                if l_current_0 then
                    l_current_0:Disconnect();
                end;
                v7.current = nil;
                return ;
            else
                if (v18 ~= 0 and v19 ~= 0) and math.sign(v18) ~= math.sign(v19) then
                    local l_current_1 = v10.current;
                    local v23 = v5.current - v6.current;
                    if not (v23 == 0) then
                        v4.sendScrollEvent(v23, l_current_1 - v9.current, v6.current);
                    end;
                    v6.current = v5.current;
                    v9.current = v10.current;
                elseif not v11.current and game:GetFastInt("ScrollDetectorTimeThresholdMillis") / 1000 <= v17 then
                    v5.current = v15;
                    local v24 = v5.current - v6.current;
                    if not (v24 == 0) then
                        v4.sendScrollEvent(v24, v16 - v9.current, v6.current);
                    end;
                    v6.current = v15;
                    v9.current = v16;
                end;
                v5.current = v15;
                v10.current = v16;
                return ;
            end;
        else
            local l_current_2 = v10.current;
            local v26 = v5.current - v6.current;
            if not (v26 == 0) then
                v4.sendScrollEvent(v26, l_current_2 - v9.current, v6.current);
            end;
            if v7.current then
                v7.current:Disconnect();
            end;
            v7.current = nil;
            return ;
        end;
    end;
    local function v28()
        if not v7.current then
            v9.current = time();
            v10.current = v9.current;
            v6.current = v5.current;
            v7.current = l_RunService_0.Stepped:Connect(function()
                v27();
            end);
        end;
    end;
    v0.useEffect(function()
        local v29 = nil;
        if not (not v4.scrollingFrameRef or not v4.scrollingFrameRef.current) and v8.current ~= v4.scrollingFrameRef.current then
            v5.current = if v4.scrollingFrameRef.current.ScrollingDirection == Enum.ScrollingDirection.Y then v4.scrollingFrameRef.current.CanvasPosition.Y else v4.scrollingFrameRef.current.CanvasPosition.X;
            v29 = v4.scrollingFrameRef.current:GetPropertyChangedSignal("CanvasPosition"):Connect(function()
                v28();
            end);
            v8.current = v4.scrollingFrameRef.current;
        end;
        return function()
            if v7.current then
                local l_current_3 = v10.current;
                local v31 = v5.current - v6.current;
                if not (v31 == 0) then
                    v4.sendScrollEvent(v31, l_current_3 - v9.current, v6.current);
                end;
                v7.current:Disconnect();
            end;
            v7.current = nil;
            if v29 then
                v29:Disconnect();
            end;
            v29 = nil;
            if not (v4.scrollingFrameRef and v4.scrollingFrameRef.current) then
                v8.current = nil;
            end;
        end;
    end, {
        v4.scrollingFrameRef
    });
    return nil;
end;


local v0 = game:DefineFastInt("ScrollingPerfTrackerEventStream", 0);
local v1 = game:DefineFastInt("ScrollingPerfTrackerKibana", 0);
local v2 = game:DefineFastFlag("ScrollingPerfTrackerSampleLocalId", false);
local v3 = game:DefineFastInt("ScrollingPerfTrackerSampleCountThreshold", 50);
applicationId = function()
    local l_AppStorageService_0 = game:GetService("AppStorageService");
    if l_AppStorageService_0 then
        local l_l_AppStorageService_0_Item_0 = l_AppStorageService_0:GetItem("AppInstallationId");
        local v6 = typeof(l_l_AppStorageService_0_Item_0);
        if v6 == "number" then
            return tonumber(l_l_AppStorageService_0_Item_0) or nil;
        elseif v6 == "string" then
            if string.len(l_l_AppStorageService_0_Item_0) <= 0 then
                return nil;
            else
                return (tonumber((string.sub(l_l_AppStorageService_0_Item_0, -string.len((tostring(1000)))))));
            end;
        else
            return nil;
        end;
    else
        return nil;
    end;
end;
local l_v0_0 = v0;
local l_v1_0 = v1;
local v9 = true;
if l_v0_0 <= 0 then
    v9 = l_v1_0 > 0;
end;
if v9 then
    local v10 = math.random(0, 1000);
    if v2 then
        local v11 = applicationId();
        if v11 ~= nil then
            v10 = (v11 + 647) % 1000;
        else
            local l_Players_0 = game:GetService("Players");
            local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            while not l_LocalPlayer_0 do
                l_Players_0:GetPropertyChangedSignal("LocalPlayer"):Wait();
                l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            end;
            if l_LocalPlayer_0 and l_LocalPlayer_0.UserId > 0 then
                v10 = (l_LocalPlayer_0.UserId + 647) % 1000;
            end;
        end;
    end;
    if not (v10 < l_v0_0) then
        l_v0_0 = 0;
    end;
    if not (v10 < l_v1_0) then
        l_v1_0 = 0;
    end;
    local v14 = true;
    if l_v0_0 <= 0 then
        v14 = l_v1_0 > 0;
    end;
    if v14 then
        v14 = game:GetService("RunService");
        local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
        local v16 = require(script.Parent.RobloxTelemetryConfigs.ScrollingPerformance);
        local v17 = {};
        v17.__index = v17;
        local v18 = {};
        v18.__index = v18;
        v18.new = function(v19, v20)
            local v21 = {
                id = v19,
                lastScrollPosition = 0,
                histogram = {},
                sampleCount = 0,
                renderStepConn = nil,
                canvasPositionConn = nil,
                scrollingFrame = nil,
                totalScrollDistance = 0
            };
            if v20 then
                if v20.analyticsService then
                    v21.analyticsService = v20.analyticsService.EventStream;
                end;
                v21.loggingProtocol = v20.loggingProtocol;
            end;
            return (setmetatable(v21, v18));
        end;
        v18.eventData = function(v22)
            if v22.sampleCount == 0 then
                return {};
            else
                local v23 = (v22.histogram[1] or 0) / v22.sampleCount;
                local v24 = 0;
                local v25 = 0;
                if v22.scrollingFrame then
                    local l_AbsoluteSize_0 = v22.scrollingFrame.AbsoluteSize;
                    v24 = l_AbsoluteSize_0.X;
                    v25 = l_AbsoluteSize_0.Y;
                end;
                return {
                    component_id = v22.id,
                    sessionid = not l_RbxAnalyticsService_0 and "" or l_RbxAnalyticsService_0:GetSessionId(),
                    smooth_ratio = v23,
                    drop_count_0 = v22.histogram[1] or 0,
                    drop_count_1 = v22.histogram[2] or 0,
                    drop_count_2 = v22.histogram[3] or 0,
                    drop_count_3 = v22.histogram[4] or 0,
                    distance_pixels = math.ceil(v22.totalScrollDistance),
                    frame_width = v24,
                    frame_height = v25
                };
            end;
        end;
        v18.sendEvent = function(v27)
            if not (v27.sampleCount >= v3) or v27.sampleCount == 0 then
                return ;
            else
                local v28 = v27:eventData();
                v27:resetCounts();
                if not (not (l_v0_0 > 0) or not v27.analyticsService) then
                    v27.analyticsService:sendEventDeferred(v27.id, "scrolling_performance", v28);
                end;
                if not (not (l_v1_0 > 0) or not v27.loggingProtocol) then
                    v27.loggingProtocol:logRobloxTelemetryEvent(v16, {}, v28);
                end;
                return ;
            end;
        end;
        v18.resetCounts = function(v29)
            v29.histogram = {};
            v29.sampleCount = 0;
            v29.totalScrollDistance = 0;
        end;
        v18.canvasPositionChanged = function(v30)
            if not v30.renderStepConn then
                v30.renderStepConn = v14.Heartbeat:Connect(function(v31)
                    v30:captureFrameUpdate(v31);
                end);
            end;
        end;
        v18.captureFrameUpdate = function(v32, v33)
            local v34 = not not v32.scrollingFrame and v32.scrollingFrame.CanvasPosition.Y or 0;
            if v34 == v32.lastScrollPosition then
                local l_renderStepConn_0 = v32.renderStepConn;
                if l_renderStepConn_0 then
                    l_renderStepConn_0:Disconnect();
                end;
                v32.renderStepConn = nil;
                v32:sendEvent();
                return ;
            else
                v32.totalScrollDistance = v32.totalScrollDistance + math.abs(v34 - v32.lastScrollPosition);
                local v36 = math.min(4, math.floor(math.max(0, v33 - 0.002) / 0.016666666666666666) + 1);
                v32.histogram[v36] = (v32.histogram[v36] or 0) + 1;
                v32.lastScrollPosition = v34;
                v32.sampleCount = v32.sampleCount + 1;
                return ;
            end;
        end;
        v18.setScrollingFrame = function(v37, v38)
            if v37.scrollingFrame ~= v38 then
                v37.scrollingFrame = v38;
                local l_canvasPositionConn_0 = v37.canvasPositionConn;
                if not v38 then
                    v37.canvasPositionConn = nil;
                else
                    v37.lastScrollPosition = v38.CanvasPosition.Y;
                    v37.canvasPositionConn = v38:GetPropertyChangedSignal("CanvasPosition"):Connect(function(_, _, _)
                        v37:canvasPositionChanged();
                    end);
                end;
                if l_canvasPositionConn_0 then
                    l_canvasPositionConn_0:Disconnect();
                end;
            end;
        end;
        v18.clean = function(v43)
            v43:setScrollingFrame(nil);
            local l_renderStepConn_1 = v43.renderStepConn;
            if l_renderStepConn_1 then
                l_renderStepConn_1:Disconnect();
            end;
            v43.renderStepConn = nil;
            v43:resetCounts();
        end;
        return v18;
    else
        return nil;
    end;
else
    return nil;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Packages.t);
local l_mutedError_0 = require(l_CorePackages_0.Workspace.Packages.Loggers).mutedError;
local v5 = v3.strictInterface({
    distance = v3.number,
    screenSizeX = v3.number,
    screenSizeY = v3.number,
    scrollAreaSize = v3.number,
    scrollDepth = v3.optional(v3.number),
    startDepth = v3.optional(v3.number),
    startPos = v3.number,
    scrollDuration = v3.number
});
local v6 = v3.strictInterface({
    distance = v3.number,
    screenSizeX = v3.number,
    screenSizeY = v3.number,
    scrollAreaSize = v3.number,
    scrollDepth = v3.optional(v3.number),
    startDepth = v3.optional(v3.number),
    startPos = v3.number,
    scrollDuration = v3.number,
    sortPos = v3.number,
    gameSetTypeId = v3.string,
    gameSetTargetId = v3.optional(v3.number)
});
return function(v7, v8, v9, v10)
    v1.isType(v8, "string", "eventContext");
    local v11 = "unknown";
    local v12 = nil;
    if v9 == Enum.ScrollingDirection.Y then
        v11 = "vertical";
        v12 = v5;
    elseif v9 == Enum.ScrollingDirection.X then
        v11 = "horizontal";
        v12 = v6;
    elseif v9 == Enum.ScrollingDirection.XY then
        l_mutedError_0((("Direction %* is an unsupported option for feedScroll event"):format(v9.Name)));
    end;
    if not v12 then
        l_mutedError_0((("Missing interface for unknown direction %* to type check feedScroll event parameters"):format(v9.Name)));
    else
        local v13, v14 = v12(v10);
        if not v13 then
            l_mutedError_0(v14);
        end;
    end;
    v7:sendEventDeferred(v8, "feedScroll", (v2.Dictionary.join(v10, {
        direction = v11
    })));
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_Modules_0.LuaApp.Constants);
local v4 = require(l_Modules_0.LuaApp.AppPage);
local v5 = require(l_Modules_0.LuaApp.mutedError);
local v6 = require(l_Modules_0.Personalization.Flags.FFlagOmniItemsRowDataEnabled);
local v7 = v2.strictInterface({
    absPositions = v2.string,
    rootPlaceIds = v2.string,
    universeIds = v2.string,
    gameSetTypeId = v2.string,
    sortPos = v2.number,
    locale = v2.string,
    thumbnailAssetIds = v2.optional(v2.string),
    componentType = v2.optional(v2.string),
    gameSetTargetId = v2.optional(v2.number),
    pageId = v2.optional(v2.string),
    adFlags = v2.optional(v2.string),
    adIds = v2.optional(v2.string),
    rows = v2.optional(v2.string),
    rowsOnPage = if not v6 then nil else v2.optional(v2.string),
    positionsInRows = if not v6 then nil else v2.optional(v2.string)
});
local v8 = v2.strictInterface({
    absPositions = v2.string,
    rootPlaceIds = v2.string,
    universeIds = v2.string,
    gameSetTypeId = v2.string,
    locale = v2.string,
    seeAllFlag = v2.number,
    gameSetTargetId = v2.optional(v2.number),
    pageId = v2.optional(v2.string),
    adFlags = v2.optional(v2.string),
    adIds = v2.optional(v2.string)
});
local v9 = {
    [v4.Home] = v7,
    [v4.Games] = v7,
    [v4.SearchPage] = v2.strictInterface({
        absPositions = v2.string,
        rootPlaceIds = v2.string,
        universeIds = v2.string,
        searchUuid = v2.string,
        emphasisFlag = v2.number,
        seeAllFlag = v2.number,
        sortPos = v2.optional(v2.number),
        gameSetTypeId = v2.optional(v2.string),
        locale = v2.optional(v2.string),
        adFlags = v2.optional(v2.string),
        adIds = v2.optional(v2.string)
    }),
    recommended = v2.strictInterface({
        absPositions = v2.string,
        rootPlaceIds = v2.string,
        universeIds = v2.string,
        refId = v2.string,
        adFlags = v2.optional(v2.string),
        adIds = v2.optional(v2.string),
        locale = v2.optional(v2.string)
    })
};
return function(v10, v11, v12)
    local v13 = nil;
    v13 = if not not v12.seeAllFlag and (not (v11 ~= v4.Home) or v11 == v4.Games) then v8 else v9[v11];
    if not v13 then
        v5(string.format("Missing interface for eventContext %s to type check gameImpressions event parameters", v11));
    else
        local v14, v15 = v13(v12);
        if not v14 then
            v5(v15);
        end;
    end;
    v10:sendEventDeferred(v11, v3.ImpressionsEvents.Game, v12);
end;


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


local v0 = require(script.Parent.GetFFlagExploreApiSortsEnabledByDefault);
local v1 = require(script.Parent.GetFFlagExploreApiSortsEnabledIXP);
return function()
    return v1() or v0();
end;


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


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


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


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


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


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Personalization.Flags.GetFFlagLuaAppSortHideSeeAll);
game:DefineFastFlag("LuaAppFixHideSeeAllRefresh", false);
return function()
    return v0() and game:GetFastFlag("LuaAppFixHideSeeAllRefresh");
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Personalization.Flags.GetFFlagLuaAppFullRefreshOmniRecOnGameExitIXP);
game:DefineFastFlag("LuaAppFullRefreshOmniRecOnGameExit", false);
return function()
    return game:GetFastFlag("LuaAppFullRefreshOmniRecOnGameExit") or v0();
end;


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


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


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


game:DefineFastFlag("OmniLoadMoreHeuristicMount2", false);
local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Flags.GetFFlagRSFLoadMoreFix);
return function()
    return v0() and game:GetFastFlag("OmniLoadMoreHeuristicMount2");
end;


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


game:DefineFastFlag("UseUpsellCardOmniFeedItem", false);
local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Flags.GetFFlagUseUIBloxButtonsUpsellCard);
return function()
    return game:GetFastFlag("UseUpsellCardOmniFeedItem") and v0();
end;


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


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


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


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


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


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


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


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


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


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


game:DefineFastInt("LuaAppInitialGameSortsFetchCount", 3);
return function()
    return game:GetFastInt("LuaAppInitialGameSortsFetchCount");
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Util.ExperimentCacheManager);
local v2 = require(l_Modules_0.Personalization.Flags.FFlagLuaAppChartsExpCustomExposureLog);
local v3 = require(l_Modules_0.Personalization.Flags.FStringLuaAppChartsPageExpLayer);
return {
    getIsChartsPageRenameEnabled = function()
        local l_v3_0 = v3;
        local v5 = v1.default:getLayerVariables(l_v3_0, v2);
        if v5 and v5.IsChartsPageRenameEnabled ~= nil then
            if v2 then
                v1.default:sendCustomExposureLog(l_v3_0);
            end;
            return v5.IsChartsPageRenameEnabled;
        else
            return false;
        end;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Action);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
return v1(script.Name, function(v3, v4, v5)
    return {
        topicKey = v3,
        topicContents = v4,
        isAppend = v5
    };
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.Personalization.Games.DataStore.TopicContentsModel);
local v4 = require(l_Modules_0.LuaApp.Util.Omni.OmniUtils);
local v5 = require(l_Modules_0.Personalization.Games.DataStore.AddTopicContents);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
local function _(v7)
    return function(v8)
        return v4.storeForContentType(v7:getState(), v8);
    end;
end;
local function _()
    return function(v10, v11)
        local v12 = v11[v10.contentId];
        if v12 ~= nil then
            return (v2.Dictionary.join(v12, v10));
        else
            return nil;
        end;
    end;
end;
local function _(v14, v15, v16, v17)
    if not v14 then
        return nil;
    else
        return v3.fromContentList(v14, v15, v16, v17);
    end;
end;
return function(v19, v20, v21)
    return function(v22)
        local v23 = v22:getState();
        local function v25(v24)
            return v4.storeForContentType(v22:getState(), v24);
        end;
        local function v29(v26, v27)
            local v28 = v27[v26.contentId];
            if v28 ~= nil then
                return (v2.Dictionary.join(v28, v26));
            else
                return nil;
            end;
        end;
        local v30 = v23.OmniRecommendations[v19];
        local v31 = {};
        for _, v33 in ipairs(v30.sorts) do
            if v33.topicId then
                local v34 = tostring(v33.topicId);
                if not (v20 ~= nil) or v20 == v33.topicId then
                    local l_recommendations_0 = v33.recommendations;
                    local v36 = if not l_recommendations_0 then nil else v3.fromContentList(l_recommendations_0, v25, v29, v21);
                    if v36 then
                        if not v31[v34] then
                            v22:dispatch(v5(v34, v36));
                            v31[v34] = true;
                        else
                            v22:dispatch(v5(v34, v36, true));
                        end;
                    end;
                end;
            end;
        end;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.Personalization.Games.DataStore.AddTopicContents);
local v4 = require(l_Modules_0.LuaApp.Actions.Games.AddGameSorts);
local v5 = require(l_Modules_0.Personalization.Games.DataStore.TopicContentsModel);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
return function(v7, v8)
    local v9 = v7 or {};
    if v8.type == v4.name then
        local v10 = {};
        for _, v12 in pairs(v8.sorts) do
            v10[v12.name] = v9[v12.name] or v5.new();
        end;
        return (v2.Dictionary.join(v9, v10));
    else
        if v8.type == v3.name then
            local l_topicContents_0 = v8.topicContents;
            local v14 = v9[v8.topicKey];
            if v14 ~= nil then
                if v8.isAppend then
                    l_topicContents_0.entries = v2.List.join(v14.entries, l_topicContents_0.entries);
                end;
                if l_topicContents_0.updatedTimestamp == nil then
                    l_topicContents_0.updatedTimestamp = v14.updatedTimestamp;
                end;
            end;
            if l_topicContents_0.updatedTimestamp == nil then
                l_topicContents_0.updatedTimestamp = tick();
            end;
            v9 = v2.Dictionary.join(v9, {
                [v8.topicKey] = l_topicContents_0
            });
        end;
        return v9;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local _ = game:GetService("CorePackages");
local v2 = require(l_Modules_0.LuaApp.Result);
local v3 = require(l_Modules_0.LuaApp.Constants);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
local v7 = {
    new = function()
        return {};
    end,
    mock = function(v5)
        local v6 = {
            contentType = v3.OmniRecommendationsContentType.Game,
            contentId = v5 or "149757",
            isSponsored = false
        };
        v6.isShowSponsoredLabel = v6.isSponsored;
        v6.adId = nil;
        return v6;
    end
};
v7.fromGamesApiData = function(v8)
    if type(v8.universeId) ~= "number" and type(v8.universeId) ~= "string" then
        return v2.error("TopicContentsEntryModel.fromGamesApiData expects universeId to be a number or a string");
    else
        local v9 = v7.new();
        v9.contentType = v3.OmniRecommendationsContentType.Game;
        v9.contentId = tostring(v8.universeId);
        v9.isSponsored = v8.isSponsored;
        v9.isShowSponsoredLabel = nil;
        if v8.isShowSponsoredLabel == nil then
            v9.isShowSponsoredLabel = true;
        else
            v9.isShowSponsoredLabel = v8.isShowSponsoredLabel;
        end;
        v9.adId = v8.nativeAdData;
        return v2.success(v9);
    end;
end;
v7.fromExploreApiData = function(v10)
    if type(v10.universeId) ~= "number" and type(v10.universeId) ~= "string" then
        return v2.error("TopicContentsEntryModel.fromExploreApiData expects universeId to be a number or a string");
    else
        local v11 = v7.new();
        v11.contentType = v3.OmniRecommendationsContentType.Game;
        v11.contentId = tostring(v10.universeId);
        v11.isSponsored = v10.isSponsored;
        v11.adId = v10.nativeAdData;
        v11.isShowSponsoredLabel = nil;
        return v2.success(v11);
    end;
end;
v7.fromOmniRecommendations = function(v12)
    local v13 = v7.new();
    v13.contentType = v12.contentType;
    v13.contentId = tostring(v12.contentId);
    v13.adId = not not v12.contentMetadata and v12.contentMetadata.EncryptedAdTrackingData or nil;
    local v14 = false;
    if v13.adId ~= nil then
        v14 = v13.adId ~= "";
    end;
    v13.isSponsored = v14;
    v13.isShowSponsoredLabel = nil;
    return v2.success(v13);
end;
return v7;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Personalization.Games.DataStore.TopicContentsEntryModel);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
local v3 = {
    new = function()
        return {
            entries = {},
            rowsRequested = 0,
            hasMoreRows = false,
            nextPageExclusiveStartId = 0,
            updatedTimestamp = nil,
            nextPageToken = ""
        };
    end
};
v3.mock = function()
    local v4 = v3.new();
    v4.entries = {
        v1.mock()
    };
    v4.rowsRequested = 1;
    v4.hasMoreRows = false;
    v4.nextPageExclusiveStartId = 0;
    v4.updatedTimestamp = nil;
    v4.nextPageToken = "";
    return v4;
end;
v3.fromData = function(v5)
    return {
        entries = v5.entries,
        rowsRequested = v5.rowsRequested,
        hasMoreRows = v5.hasMoreRows,
        nextPageExclusiveStartId = v5.nextPageExclusiveStartId,
        updatedTimestamp = v5.updatedTimestamp,
        nextPageToken = not v5.nextPageToken and "" or v5.nextPageToken
    };
end;
v3.fromContentList = function(v6, v7, v8, v9)
    local v10 = v3.new();
    v10.updatedTimestamp = v9;
    v10.entries = {};
    v10.hasMoreRows = false;
    if v6 then
        for _, v12 in ipairs(v6) do
            if not v10.hasMoreRows then
                v1.fromOmniRecommendations(v12):match(function(v13)
                    local v14 = v7(v12.contentType);
                    if v14 ~= nil then
                        local v15 = v8(v13, v14);
                        if v15 ~= nil then
                            table.insert(v10.entries, v15);
                            return ;
                        else
                            v10.hasMoreRows = true;
                        end;
                    end;
                end):matchError(function(v16)
                    warn(v16);
                end);
            else
                return v10;
            end;
        end;
    end;
    return v10;
end;
return v3;