local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_AssetManager_0 = require(l_Shell_0:FindFirstChild("AssetManager"));
local l_BaseScreen_0 = require(l_Shell_0:FindFirstChild("BaseScreen"));
local l_GlobalSettings_0 = require(l_Shell_0:FindFirstChild("GlobalSettings"));
local l_SoundManager_0 = require(l_Shell_0:FindFirstChild("SoundManager"));
local l_LocalizedStrings_0 = require(l_Shell_0:FindFirstChild("LocalizedStrings"));
local l_TextBox_0 = require(l_Shell_0:FindFirstChild("TextBox"));
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_ScrollingTextBox_0 = require(l_Shell_0:FindFirstChild("ScrollingTextBox"));
local l_GuiUtilities_0 = require(l_Shell_0:FindFirstChild("GuiUtilities"));
local l_LinkingProtocol_0 = require(l_CorePackages_0.Workspace.Packages.LinkingProtocol).LinkingProtocol;
local v12 = nil;
pcall(function()
    v12 = game:GetService("PlatformService");
end);
local l_game_EngineFeature_0 = game:GetEngineFeature("EnableLinkingProtocolOpenUrlForXbox");
return function()
    local v14 = l_BaseScreen_0();
    local l_GreyButtonColor_0 = l_GlobalSettings_0.GreyButtonColor;
    local l_GreySelectedButtonColor_0 = l_GlobalSettings_0.GreySelectedButtonColor;
    local l_WhiteTextColor_0 = l_GlobalSettings_0.WhiteTextColor;
    local l_TextSelectedColor_0 = l_GlobalSettings_0.TextSelectedColor;
    local v19 = l_Utility_0.Create("Frame")({
        Name = "ScreenDivide",
        Size = UDim2.new(0, 2, 0, 610),
        Position = UDim2.new(0, 822, 0.5, -305),
        BorderSizePixel = 0,
        BackgroundColor3 = l_GlobalSettings_0.PageDivideColor,
        Parent = v14.Container
    });
    local _ = l_Utility_0.Create("TextLabel")({
        Name = "TermsOfServiceText",
        Size = UDim2.new(0, 740, 0, 128),
        Position = UDim2.new(0, 16, 0, 835),
        BackgroundTransparency = 1,
        Font = l_GlobalSettings_0.LightFont,
        FontSize = l_GlobalSettings_0.ButtonSize,
        TextColor3 = l_GlobalSettings_0.WhiteTextColor,
        TextXAlignment = Enum.TextXAlignment.Left,
        TextYAlignment = Enum.TextYAlignment.Top,
        TextWrapped = true,
        Text = l_LocalizedStrings_0:LocalizedString("ToSInfoLinkPhrase"),
        Parent = v14.Container
    });
    local v21 = l_TextBox_0(UDim2.new(0, 656, 0, 84));
    v21:SetPosition(UDim2.new(0, (v19.Position.X.Offset + v19.Size.X.Offset) + 86, 0, 334));
    v21:SetSpacing(Vector2.new(20, 0));
    v21:SetParent(v14.Container);
    v21:SetClipsDescendants(true);
    local l_v21_TextBox_0 = v21:GetTextBox();
    local l_v21_Container_0 = v21:GetContainer();
    v14.UsernameObject = v21;
    v14.UsernameTextBox = l_v21_TextBox_0;
    v14.UsernameSelection = l_v21_Container_0;
    local v24 = l_TextBox_0(UDim2.new(0, 656, 0, 84));
    v24:SetPosition(UDim2.new(0, (v19.Position.X.Offset + v19.Size.X.Offset) + 86, 0, 484));
    v24:SetSpacing(Vector2.new(20, 0));
    v24:SetParent(v14.Container);
    v24:SetClipsDescendants(true);
    local l_v24_TextBox_0 = v24:GetTextBox();
    local l_v24_Container_0 = v24:GetContainer();
    v14.PasswordObject = v24;
    v14.PasswordTextBox = l_v24_TextBox_0;
    v14.PasswordSelection = l_v24_Container_0;
    local function _(v27, v28, v29)
        v27 = v27 or "";
        local v30 = l_Utility_0.Create("Frame")({
            Name = v27 .. "Container",
            Position = v29 or UDim2.new(),
            Size = UDim2.new(0, 376, 0, 64),
            BackgroundTransparency = 1,
            Parent = v14.Container;
            l_AssetManager_0.CreateShadow(1)
        });
        local v31 = l_Utility_0.Create("ImageButton")({
            Name = v27 .. "Button",
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = 1,
            ImageColor3 = l_GreyButtonColor_0,
            Image = l_GlobalSettings_0.RoundCornerButtonImage,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = Rect.new(Vector2.new(4, 4), Vector2.new(28, 28)),
            ZIndex = 2,
            Parent = v30;
            l_SoundManager_0:CreateSound("MoveSelection")
        });
        local v32 = l_Utility_0.Create("TextLabel")({
            Name = v27 .. "Text",
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = 1,
            Font = l_GlobalSettings_0.RegularFont,
            FontSize = l_GlobalSettings_0.ButtonSize,
            TextColor3 = l_WhiteTextColor_0,
            Text = v28,
            ZIndex = 2,
            Parent = v31
        });
        v31.SelectionGained:connect(function()
            v31.ImageColor3 = l_GreySelectedButtonColor_0;
            v32.TextColor3 = l_TextSelectedColor_0;
        end);
        v31.SelectionLost:connect(function()
            v31.ImageColor3 = l_GreyButtonColor_0;
            v32.TextColor3 = l_WhiteTextColor_0;
        end);
        return v30, v31, v32;
    end;
    local function v38(v34)
        if not l_game_EngineFeature_0 then
            local l_status_0, l_result_0 = pcall(function()
                assert(not UserSettings().GameSettings:InStudioMode() or game:GetService("UserInputService"):GetPlatform() == Enum.Platform.Windows, "Can't use in studio");
                v12:LaunchPlatformUri(v34);
            end);
            if not l_status_0 then
                l_Utility_0.DebugLog(string.format("PlatformService:LaunchPlatformUri failed to launch uri: %s, for reason: %s", v34, l_result_0));
            end;
            return ;
        else
            l_LinkingProtocol_0.default:openURL(v34):andThen(function(v37)
                if v37 == false then
                    l_Utility_0.DebugLog("LinkingProtocol:openURL failed.");
                end;
            end);
            return ;
        end;
    end;
    local v39, v40, v41 = l_GuiUtilities_0.CreateSlicedTextButton("SignIn", l_LocalizedStrings_0:LocalizedString("SignInPhrase"), UDim2.new(0, l_v24_Container_0.Position.X.Offset, 0, (l_v24_Container_0.Position.Y.Offset + l_v24_Container_0.Size.Y.Offset) + 66));
    v39.Size = UDim2.new(0, 656, 0, 64);
    v39.Parent = v14.Container;
    v14.SignInButton = v40;
    local v42 = l_Utility_0.Create("TextButton")({
        Name = "ToSButton",
        AutomaticSize = Enum.AutomaticSize.XY,
        BackgroundTransparency = 1,
        Position = UDim2.new(0, v39.Position.X.Offset, 0, (v39.Position.Y.Offset + v39.Size.Y.Offset) + 251),
        Font = l_GlobalSettings_0.RegularFont,
        FontSize = l_GlobalSettings_0.ButtonSize,
        TextColor3 = l_GlobalSettings_0.WhiteTextColor,
        Text = l_LocalizedStrings_0:LocalizedString("ViewTermsPhrase"),
        Parent = v14.Container
    });
    l_Utility_0.Create("UIPadding")({
        Name = "ToSButtonPadding",
        PaddingTop = UDim.new(0, 16),
        PaddingBottom = UDim.new(0, 16),
        PaddingLeft = UDim.new(0, 16),
        PaddingRight = UDim.new(0, 16),
        Parent = v42
    });
    local v43 = tick() - 1;
    v42.MouseButton1Click:connect(function()
        if tick() - v43 < 1 then
            return ;
        else
            v43 = tick();
            v38("https://en.help.roblox.com/hc/en-us/articles/205358110");
            return ;
        end;
    end);
    local v44 = l_ScrollingTextBox_0(UDim2.new(0, 740, 0, 460), UDim2.new(0, 16, 0, 334), v14.Container);
    v44:SetFont(l_GlobalSettings_0.RegularFont);
    v44:SetFontSize(l_GlobalSettings_0.TitleSize);
    v44.OnSelectableChanged:connect(function(v45)
        local l_v44_SelectableObject_0 = v44:GetSelectableObject();
        if v45 == true then
            l_v44_SelectableObject_0.NextSelectionRight = v40;
            l_v44_SelectableObject_0.NextSelectionLeft = l_v44_SelectableObject_0;
            l_v44_SelectableObject_0.NextSelectionUp = l_v44_SelectableObject_0;
            l_v44_SelectableObject_0.NextSelectionDown = l_v44_SelectableObject_0;
            return ;
        else
            l_v44_SelectableObject_0.NextSelectionRight = nil;
            l_v44_SelectableObject_0.NextSelectionLeft = nil;
            l_v44_SelectableObject_0.NextSelectionUp = nil;
            l_v44_SelectableObject_0.NextSelectionDown = nil;
            return ;
        end;
    end);
    v14.GetDefaultSelectionObject = function(_)
        return l_v21_Container_0;
    end;
    v14.SetDescriptionText = function(_, v49)
        v44:SetText(v49);
    end;
    v14.SetButtonText = function(_, v51)
        v41.Text = v51;
    end;
    return v14;
end;


local l_Shell_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_SoundManager_0 = require(l_Shell_0:FindFirstChild("SoundManager"));
local l_AssetManager_0 = require(l_Shell_0:FindFirstChild("AssetManager"));
local l_PopupText_0 = require(l_Shell_0:FindFirstChild("PopupText"));
local l_Analytics_0 = require(l_Shell_0:FindFirstChild("Analytics"));
local v6 = Color3.new(0.17647058823529413, 0.3764705882352941, 0.5019607843137255);
local v7 = Color3.new(0.15294117647058825, 0.27058823529411763, 0.3215686274509804);
return function()
    local v8 = {
        focused = false,
        active = false
    };
    local v9 = l_Utility_0.Create("ImageButton")({
        Name = "AvatarItemContainer",
        Size = UDim2.new(0, 220, 0, 220),
        BackgroundTransparency = 1,
        ZIndex = 2;
        l_AssetManager_0.CreateShadow(1),
        l_SoundManager_0:CreateSound("MoveSelection")
    });
    local v10 = l_Utility_0.Create("Frame")({
        Name = "AvatarItemContents",
        Size = UDim2.new(1, 0, 1, 0),
        BorderSizePixel = 0,
        BackgroundTransparency = 0,
        BackgroundColor3 = not not v8.active and v6 or v7,
        ClipsDescendants = true,
        ZIndex = 2,
        Parent = v9;
        l_SoundManager_0:CreateSound("MoveSelection")
    });
    local v11 = l_PopupText_0(v9, "");
    v11:SetZIndex(3);
    local v12 = l_Utility_0.Create("ImageLabel")({
        Name = "AvatarImage",
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        BackgroundTransparency = 1,
        ZIndex = 2,
        Parent = v10
    });
    local v13 = l_Utility_0.Create("ImageLabel")({
        Name = "EquippedCheckmark",
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        BackgroundTransparency = 1,
        ZIndex = 3,
        Visible = false,
        Image = "rbxasset://textures/ui/Shell/Icons/EquippedOverlay.png",
        Parent = v10
    });
    v8.AvatarItemContainer = v9;
    v8.AvatarImage = v12;
    v8.EquippedCheckmark = v13;
    local function _(v14, v15)
        l_Utility_0.PropertyTweener(v12, "ImageColor3", v12.ImageColor3.r, v14, v15 or 0.2, function(...)
            local v16 = l_Utility_0.EaseOutQuad(...);
            return Color3.new(v16, v16, v16);
        end, true);
    end;
    v8.UpdateEquipButton = function(_)
    end;
    v8.ColorizeImage = function(_, ...)
        local v20, v21 = ...;
        l_Utility_0.PropertyTweener(v12, "ImageColor3", v12.ImageColor3.r, v20, v21 or 0.2, function(...)
            local v22 = l_Utility_0.EaseOutQuad(...);
            return Color3.new(v22, v22, v22);
        end, true);
    end;
    v8.SetPopupText = function(_, v24)
        v11:SetText(v24);
    end;
    v8.SetImage = function(_, v26)
        v12.Image = v26;
    end;
    v8.GetGuiObject = function(_)
        return v9;
    end;
    v8.GetAnalyticsInfo = function(_)
        return {
            [l_Analytics_0.WidgetNames("WidgetId")] = l_Analytics_0.WidgetNames("BaseTileId")
        };
    end;
    v8.GetPackageInfo = function(_)
    end;
    v8.OnClick = function(_)
    end;
    v8.SetActive = function(v31, v32)
        v31.active = v32;
        v10.BackgroundColor3 = not not v31.active and v6 or v7;
    end;
    v8.Select = function(_)
    end;
    v8.Show = function(_)
    end;
    v8.Hide = function(_)
    end;
    v8.Focus = function(v36)
        v36.focused = true;
    end;
    v8.RemoveFocus = function(v37)
        v37.focused = false;
    end;
    return v8;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_ContentProvider_0 = game:GetService("ContentProvider");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_Modules_0.Shell.Http);
local v4 = require(l_Modules_0.Shell.LoadingWidget);
local v5 = require(l_Modules_0.Shell.Utility);
local l_Decal_0 = Instance.new("Decal");
local function _(v7)
    l_Decal_0.Texture = v7;
    l_ContentProvider_0:PreloadAsync({
        l_Decal_0
    });
end;
local v10 = {
    Sizes = {
        Small = Vector2.new(100, 100),
        Medium = Vector2.new(250, 250),
        Large = Vector2.new(576, 324)
    },
    Init = function(v9)
        v9._active = true;
        v9.isLoading = false;
        v9.isRequesting = false;
        v9.imageObjects = {};
        v9.loadingProps = {};
        v9.newRequests = nil;
        v9.requests = nil;
        v9.uriMap = {};
        v9.loaders = {};
        v9.activeTry = 0;
    end
};
local function _(v11, v12)
    return tostring(v11) .. tostring(v12);
end;
v10.CreateThumbnail = function(v14, v15, v16, v17, v18, v19, v20)
    v20 = v20 or {};
    if v18 == nil then
        v18 = true;
    end;
    if v19 == nil then
        v19 = true;
    end;
    local v21 = false;
    local v22 = tostring(v16) .. tostring(v17);
    if not v14._active then
        v10:Init();
    end;
    if v14.isLoading == false then
        v21 = true;
        if v14.newRequests == nil then
            v14.newRequests = {};
        end;
    end;
    if v14.newRequests[v17] == nil then
        v14.newRequests[v17] = {};
    end;
    table.insert(v14.newRequests[v17], v16);
    if v14.imageObjects[v22] == nil then
        v14.imageObjects[v22] = {};
    end;
    v14.imageObjects[v22][v15] = v15;
    v14.loadingProps[v15] = {};
    v14.loadingProps[v15].showSpinner = v18;
    v14.loadingProps[v15].fadeImage = v19;
    v14.loadingProps[v15].spinnerProperties = v20;
    if v14.uriMap[v22] ~= nil then
        spawn(function()
            l_Decal_0.Texture = v14.uriMap[v22];
            l_ContentProvider_0:PreloadAsync({
                l_Decal_0
            });
            v10:_loadImage(v15, v14.uriMap[v22]);
        end);
        return ;
    else
        v10:_loadImage(v15, nil);
        if v21 then
            spawn(function()
                v10:BatchLoadThumbnailsAsync();
            end);
        end;
        return ;
    end;
end;
v10._loadImage = function(v23, v24, v25)
    local v26 = v25 ~= nil;
    if v24 == nil then
        return ;
    else
        v24.Image = "";
        if v23.loadingProps[v24].fadeImage then
            local _ = v5.PropertyTweener(v24, "ImageTransparency", 1, 1, 0, v5.EaseInOutQuad, true, nil);
        end;
        if v26 then
            if v23.loaders[v24] then
                v23.loaders[v24]:Cleanup();
                v23.loaders[v24] = nil;
            end;
            v24.Image = v25;
            if v23.loadingProps[v24].fadeImage then
                local _ = v5.PropertyTweener(v24, "ImageTransparency", 1, 0, 0.25, v5.EaseInOutQuad, true, nil);
            end;
        elseif v23.loadingProps[v24].showSpinner then
            v23.loadingProps[v24].spinnerProperties.Parent = v23.loadingProps[v24].spinnerProperties.Parent or v24;
            v23.loaders[v24] = v4(v23.loadingProps[v24].spinnerProperties, nil, true);
            return ;
        end;
        return ;
    end;
end;
v10._loadThumbnails = function(v29, v30, v31)
    local v32 = nil;
    local v33 = {};
    local v34 = 0;
    while #v30 > 0 do
        v34 = v34 + 1;
        v32 = {};
        if #v30 <= 30 then
            v32 = v30;
            v30 = {};
        else
            for _ = 1, 30 do
                table.insert(v32, (table.remove(v30)));
            end;
        end;
        local v36 = v3.GetAssetThumbnailBatchAsync(v32, v31.x, v31.y);
        if not v36 then
            for _, v38 in ipairs(v32) do
                table.insert(v33, v38);
            end;
        else
            for v39, v40 in ipairs(v36) do
                local v41 = v32[v39];
                if not v40.final then
                    table.insert(v33, v41);
                else
                    local l_url_0 = v40.url;
                    local v43 = tostring(v41) .. tostring(v31);
                    v29.uriMap[v43] = l_url_0;
                    for _, v45 in pairs(v29.imageObjects[v43]) do
                        spawn(function()
                            l_Decal_0.Texture = v29.uriMap[v43];
                            l_ContentProvider_0:PreloadAsync({
                                l_Decal_0
                            });
                            v10:_loadImage(v45, v29.uriMap[v43]);
                        end);
                    end;
                end;
            end;
        end;
    end;
    return v33;
end;
v10._batchLoadThumbnails = function(_, v47)
    if v47 == nil then
        return nil;
    else
        local v48 = false;
        local v49 = {};
        for v50, v51 in pairs(v47) do
            local v52 = v10:_loadThumbnails(v51, v50);
            if #v52 ~= 0 then
                if v49[v50] == nil then
                    v49[v50] = {};
                end;
                v48 = true;
                v49[v50] = v52;
            end;
        end;
        if v48 then
            return v49;
        else
            return nil;
        end;
    end;
end;
local function v64(v53, v54)
    local v55 = {};
    if v54 ~= nil then
        for v56, v57 in pairs(v54) do
            v55[v56] = {};
            for _, v59 in ipairs(v57) do
                table.insert(v55[v56], v59);
            end;
        end;
    end;
    if v53 ~= nil then
        for v60, v61 in pairs(v53) do
            if v55[v60] == nil then
                v55[v60] = {};
            end;
            for _, v63 in ipairs(v61) do
                table.insert(v55[v60], v63);
            end;
        end;
    end;
    return v55;
end;
v10._tryBatchLoadThumbnails = function(v65, v66)
    local v67 = 1;
    while v67 <= 6 and v66 == v65.activeTry do
        v65.isRequesting = true;
        v65.requests = v10:_batchLoadThumbnails(v65.requests);
        v65.isRequesting = false;
        if v65.requests ~= nil then
            v67 = v67 + 1;
            wait(v67 ^ 2);
        else
            break;
        end;
    end;
end;
v10.BatchLoadThumbnailsAsync = function(v68)
    while true do
        wait(0.1);
        if not (not (v68.isRequesting == false) or v68.isLoading ~= false) then
            break;
        end;
    end;
    v68.isLoading = true;
    if v68.newRequests == nil then
        v68.isLoading = false;
        return ;
    else
        v68.requests = v64(v68.newRequests, v68.requests);
        v68.newRequests = nil;
        v68.isLoading = false;
        if v68.requests ~= nil then
            v68.activeTry = tick();
            v10:_tryBatchLoadThumbnails(v68.activeTry);
        end;
        return ;
    end;
end;
v10.SetTransparency = function(v69, v70, v71)
    if v69.loaders[v71] ~= nil then
        v69.loaders[v71]:SetTransparency(v70);
    end;
end;
return v10;


return function(v0, v1, v2, v3)
    local v4 = {
        Data = v0,
        Version = v1,
        GetRefreshIntervalFunc = v2,
        RefreshFunc = v3
    };
    local v5 = false;
    v4.Update = function(v6, v7)
        if not (not v7 or not v7.Version) and v6.Version <= v7.Version then
            v6.Version = v7.Version;
            v6.Data = v7.Data;
        end;
    end;
    v4.Refresh = function(v8, v9)
        if v8.RefreshFunc and type(v8.RefreshFunc) == "function" then
            while v5 do
                wait();
            end;
            local v10 = nil;
            if v8.GetRefreshIntervalFunc and type(v8.GetRefreshIntervalFunc) == "function" then
                v10 = tonumber(v8.GetRefreshIntervalFunc());
            end;
            if ((v9 or not v8.Version) or not v10) or v10 <= tick() - v8.Version then
                v5 = true;
                if not v8.RefreshFunc(v8.Data) then
                    v8.Version = nil;
                else
                    v8.Version = tick();
                end;
                v5 = false;
            end;
        end;
    end;
    return v4;
end;


local l_Utility_0 = require(game:GetService("CoreGui"):FindFirstChild("RobloxGui"):FindFirstChild("Modules"):FindFirstChild("Shell"):FindFirstChild("Utility"));
local l_RunService_0 = game:GetService("RunService");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_Lighting_0 = game:GetService("Lighting");
local v4 = false;
local v5 = Color3.new(0.0784, 0.1686, 0.2353);
local v6 = l_Utility_0.Create("ColorCorrectionEffect")({
    Brightness = 0.3,
    Contrast = 0.5,
    Saturation = -1,
    TintColor = v5,
    Enabled = true,
    Parent = l_Lighting_0
});
local v7 = l_Utility_0.Create("BlurEffect")({
    Size = 10,
    Enabled = true,
    Parent = l_Lighting_0
});
local v8 = l_Utility_0.Create("BloomEffect")({
    Intensity = 0.05,
    Size = 24,
    Threshold = 0.95,
    Enabled = true,
    Parent = l_Lighting_0
});
local function _()
    v7.Enabled = false;
    v6.Contrast = 0.35;
    v6.Saturation = 0.175;
    v6.TintColor = Color3.fromRGB(255, 255, 255);
    v6.Brightness = 0.02;
end;
local function v14(v10)
    local v11 = {};
    for _, v13 in pairs(v10:GetChildren()) do
        v11[tonumber(v13.Name:sub(4, -1))] = v13;
        v13.Transparency = 1;
    end;
    return v11;
end;
local v15 = nil;
local function v18()
    if v15 == nil then
        v15 = {};
        for _, v17 in pairs(workspace:WaitForChild("Cameras"):GetChildren()) do
            v15[v17.Name] = v14(v17);
        end;
    end;
    return v15;
end;
local function _()
    if workspace.CurrentCamera then
        workspace.CurrentCamera.CameraType = "Scriptable";
    end;
end;
workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
    if workspace.CurrentCamera then
        workspace.CurrentCamera.CameraType = "Scriptable";
    end;
end);
if workspace.CurrentCamera then
    workspace.CurrentCamera.CameraType = "Scriptable";
end;
local v20 = nil;
local v21 = Vector2.new(0, 0);
local v25 = {
    EnableCameraControl = function(_)
        v20 = l_Utility_0.DisconnectEvent(v20);
        v20 = l_UserInputService_0.InputChanged:connect(function(v23)
            if v23.KeyCode == Enum.KeyCode.Thumbstick2 then
                v21 = v23.Position or v21;
                v21 = Vector2.new(v21.X, v21.Y);
            end;
        end);
    end,
    DisableCameraControl = function(_)
        v20 = l_Utility_0.DisconnectEvent(v20);
        v21 = Vector2.new(0, 0);
    end
};
local v26 = nil;
local v27 = Vector2.new(0, 0);
local v28 = tick();
do
    local l_v27_0, l_v28_0 = v27, v28;
    v26 = function()
        local v31 = tick();
        local v32 = v31 - l_v28_0;
        l_v28_0 = v31;
        local v33 = 0.125 ^ v32;
        l_v27_0 = l_v27_0 * v33 + v21 * (1 - v33);
        return (CFrame.new(l_v27_0.X / 8, l_v27_0.Y / 8, 0) * CFrame.Angles(0, -l_v27_0.X / 12, 0)) * CFrame.Angles(l_v27_0.Y / 12, 0, 0);
    end;
end;
v27 = CFrame.new();
local function v34()
    return {
        CFrame = v27,
        Contrast = 0.5,
        Saturation = -1,
        TintColor = v5,
        BlurSize = 10
    };
end;
local function _()
    v4 = true;
    l_RunService_0:BindToRenderStep("CameraScriptCutsceneLerp", Enum.RenderPriority.Camera.Value, function()
        local v35 = v34();
        workspace.CurrentCamera.CoordinateFrame = v35.CFrame;
        v6.Contrast = v35.Contrast;
        v6.Saturation = v35.Saturation;
        v6.TintColor = v35.TintColor;
        v7.Size = v35.BlurSize;
    end);
end;
local function _()
    v4 = false;
    l_RunService_0:UnbindFromRenderStep("CameraScriptCutsceneLerp");
end;
local function _(v38, v39, v40, v41, v42)
    l_Utility_0.PropertyTweener(v6, "Brightness", v6.Brightness, -1, v39, l_Utility_0.EaseInOutQuad, true, function()
        v34 = v38:get_getFrameInfo();
        v7.Enabled = v41;
        v8.Enabled = v42;
        l_Utility_0.PropertyTweener(v6, "Brightness", v6.Brightness, v40, v39, l_Utility_0.EaseInOutQuad, true, function()
            if not v4 then
                v7.Enabled = false;
                v6.Contrast = 0.35;
                v6.Saturation = 0.175;
                v6.TintColor = Color3.fromRGB(255, 255, 255);
                v6.Brightness = 0.02;
            end;
        end);
    end);
end;
local function v44(v45, v46)
    local v47 = {};
    for v48 = 1, #v45 - 1 do
        v47[v48] = v45[v48]:lerp(v45[v48 + 1], v46);
    end;
    if #v47 == 1 then
        return v47[1];
    else
        return v44(v47, v46);
    end;
end;
local function _(v49)
    local v50 = {};
    for v51 = 1, #v49 do
        v50[v51] = v49[v51].CFrame;
    end;
    return v50;
end;
local function v81(v53, v54)
    local v55 = 0;
    local v56 = 0;
    local v57 = nil;
    local v58 = false;
    local v59 = {};
    local v60 = {
        Contrast = -1,
        BlurSize = 50
    };
    local function v61()
        return {
            CFrame = v44(v57, (l_Utility_0.Clamp(0, 1, (tick() - v55) / v54))) * v26(),
            Contrast = v60.Contrast,
            Saturation = -1,
            TintColor = v5,
            BlurSize = v60.BlurSize
        };
    end;
    local function _()
        if v58 then
            v56 = v56 + 1;
            if #v53 < v56 then
                v56 = 1;
            end;
            v53[v56].init();
            local l_cameras_0 = v53[v56].cameras;
            local v63 = {};
            for v64 = 1, #l_cameras_0 do
                v63[v64] = l_cameras_0[v64].CFrame;
            end;
            v57 = v63;
            v55 = tick();
            return ;
        else
            return ;
        end;
    end;
    local function v72(v66)
        local v67 = tick() - v55;
        for v68 = #v59, 1, -1 do
            if v59[v68]:IsFinished() then
                table.remove(v59, v68);
            end;
        end;
        if v54 <= v67 then
            table.insert(v59, (l_Utility_0.PropertyTweener(v60, "Contrast", v60.Contrast, 0.5, v66, l_Utility_0.EaseInOutQuad, true)));
            table.insert(v59, (l_Utility_0.PropertyTweener(v60, "BlurSize", v60.BlurSize, 10, v66, l_Utility_0.EaseInOutQuad, true)));
            if v58 then
                v56 = v56 + 1;
                if #v53 < v56 then
                    v56 = 1;
                end;
                v53[v56].init();
                local l_cameras_1 = v53[v56].cameras;
                local v70 = {};
                for v71 = 1, #l_cameras_1 do
                    v70[v71] = l_cameras_1[v71].CFrame;
                end;
                v57 = v70;
                v55 = tick();
                return ;
            else
                return ;
            end;
        else
            if v54 - v66 <= v67 and #v59 == 0 then
                table.insert(v59, (l_Utility_0.PropertyTweener(v60, "Contrast", v60.Contrast, -1, v66, l_Utility_0.EaseInOutQuad, true)));
                table.insert(v59, (l_Utility_0.PropertyTweener(v60, "BlurSize", v60.BlurSize, 50, v66, l_Utility_0.EaseInOutQuad, true)));
            end;
            return ;
        end;
    end;
    local function v76()
        table.insert(v59, (l_Utility_0.PropertyTweener(v60, "Contrast", v60.Contrast, 0.5, 4, l_Utility_0.EaseInOutQuad, true)));
        table.insert(v59, (l_Utility_0.PropertyTweener(v60, "BlurSize", v60.BlurSize, 10, 4, l_Utility_0.EaseInOutQuad, true)));
        if v58 then
            v56 = v56 + 1;
            if #v53 < v56 then
                v56 = 1;
            end;
            v53[v56].init();
            local l_cameras_2 = v53[v56].cameras;
            local v74 = {};
            for v75 = 1, #l_cameras_2 do
                v74[v75] = l_cameras_2[v75].CFrame;
            end;
            v57 = v74;
            v55 = tick();
            return ;
        else
            return ;
        end;
    end;
    return {
        Start = function(_)
            v58 = true;
            v76();
            l_RunService_0:BindToRenderStep("runCameraSeries", Enum.RenderPriority.Camera.Value + 1, function()
                v72(1.7);
            end);
        end,
        Stop = function(_)
            v58 = false;
            for v79 = #v59, 1, -1 do
                table.remove(v59, v79):Finish();
            end;
            v60 = {
                Contrast = 0.5,
                BlurSize = 10
            };
            l_RunService_0:UnbindFromRenderStep("runCameraSeries");
        end,
        get_getFrameInfo = function(_)
            return v61;
        end
    };
end;
local function v93(v82, v83, v84)
    local v85 = 0;
    local v90 = {
        Reset = function(_)
            v85 = tick();
        end,
        Update = function(_, v88, _)
            v82 = v88;
            v85 = tick();
        end
    };
    local function v91()
        return {
            CFrame = v44(v82, v84((l_Utility_0.Clamp(0, 1, (tick() - v85) / v83)))),
            Contrast = 0.35,
            Saturation = 0.175,
            TintColor = Color3.fromRGB(255, 255, 255),
            BlurSize = 1
        };
    end;
    v90.get_getFrameInfo = function(_)
        return v91;
    end;
    return v90;
end;
pcall(function()
    local function v94(v95)
        local l_v95_Children_0 = v95:GetChildren();
        for v97 = 1, #l_v95_Children_0 do
            local v98 = l_v95_Children_0[v97];
            if v98:IsA("BasePart") then
                v98.Locked = true;
                v98.Anchored = true;
                v98.CanCollide = false;
            end;
            v94(v98);
        end;
    end;
    v94(workspace);
end);
local l_ZoneManager_0 = require(script.Parent:WaitForChild("CameraManagerModules"):WaitForChild("ZoneManager"));
local v100 = nil;
local v101 = nil;
local v102 = false;
local v103 = {
    CFrame.new(10.2426682, 5.1197648, -30.9536419, -0.946675897, 0.123298854, -0.297661126, 0, 0.92387563, 0.382692933, 0.322187454, 0.36228618, -0.874610782),
    CFrame.new(12.50625, 4.8365, -24.764325, -0.94241035, 0.0557777137, -0.329775006, 0, 0.98599577, 0.166770056, 0.334458828, 0.157165825, -0.92921263)
};
v25.CameraMoveToAsync = function(_)
    local v105 = v18();
    v4 = true;
    l_RunService_0:BindToRenderStep("CameraScriptCutsceneLerp", Enum.RenderPriority.Camera.Value, function()
        local v106 = v34();
        workspace.CurrentCamera.CoordinateFrame = v106.CFrame;
        v6.Contrast = v106.Contrast;
        v6.Saturation = v106.Saturation;
        v6.TintColor = v106.TintColor;
        v7.Size = v106.BlurSize;
    end);
    v101 = v81({
        {
            init = function()
                l_ZoneManager_0:SetZone("City");
            end,
            cameras = v105.City
        },
        {
            init = function()
                l_ZoneManager_0:SetZone("Space");
            end,
            cameras = v105.Space
        },
        {
            init = function()
                l_ZoneManager_0:SetZone("Volcano");
            end,
            cameras = v105.Volcano
        }
    }, 60);
    v100 = v93(v103, 1, function(v107)
        v107 = l_Utility_0.Clamp(0, 1, v107);
        return v107 * (2 - v107);
    end);
    v101:Start();
    local l_v101_0 = v101;
    local l_PropertyTweener_0 = l_Utility_0.PropertyTweener;
    local l_v6_0 = v6;
    local v111 = "Brightness";
    local l_Brightness_0 = v6.Brightness;
    local v113 = -1;
    local v114 = 0.25;
    local l_EaseInOutQuad_0 = l_Utility_0.EaseInOutQuad;
    local v116 = true;
    local v117 = true;
    local v118 = false;
    local v119 = 0.3;
    local v120 = 0.25;
    l_PropertyTweener_0(l_v6_0, v111, l_Brightness_0, v113, v114, l_EaseInOutQuad_0, v116, function()
        v34 = l_v101_0:get_getFrameInfo();
        v7.Enabled = v117;
        v8.Enabled = v118;
        l_Utility_0.PropertyTweener(v6, "Brightness", v6.Brightness, v119, v120, l_Utility_0.EaseInOutQuad, true, function()
            if not v4 then
                v7.Enabled = false;
                v6.Contrast = 0.35;
                v6.Saturation = 0.175;
                v6.TintColor = Color3.fromRGB(255, 255, 255);
                v6.Brightness = 0.02;
            end;
        end);
    end);
    if v102 then
        v25:SwitchToAvatarEditor();
    end;
end;
v25.SwitchToFlyThrough = function(_)
    v102 = false;
    if v101 then
        if not v4 then
            v4 = true;
            l_RunService_0:BindToRenderStep("CameraScriptCutsceneLerp", Enum.RenderPriority.Camera.Value, function()
                local v122 = v34();
                workspace.CurrentCamera.CoordinateFrame = v122.CFrame;
                v6.Contrast = v122.Contrast;
                v6.Saturation = v122.Saturation;
                v6.TintColor = v122.TintColor;
                v7.Size = v122.BlurSize;
            end);
        end;
        local l_v101_1 = v101;
        local l_PropertyTweener_1 = l_Utility_0.PropertyTweener;
        local l_v6_1 = v6;
        local v126 = "Brightness";
        local l_Brightness_1 = v6.Brightness;
        local v128 = -1;
        local v129 = 0.25;
        local l_EaseInOutQuad_1 = l_Utility_0.EaseInOutQuad;
        local v131 = true;
        local v132 = true;
        local v133 = false;
        local v134 = 0.3;
        local v135 = 0.25;
        l_PropertyTweener_1(l_v6_1, v126, l_Brightness_1, v128, v129, l_EaseInOutQuad_1, v131, function()
            v34 = l_v101_1:get_getFrameInfo();
            v7.Enabled = v132;
            v8.Enabled = v133;
            l_Utility_0.PropertyTweener(v6, "Brightness", v6.Brightness, v134, v135, l_Utility_0.EaseInOutQuad, true, function()
                if not v4 then
                    v7.Enabled = false;
                    v6.Contrast = 0.35;
                    v6.Saturation = 0.175;
                    v6.TintColor = Color3.fromRGB(255, 255, 255);
                    v6.Brightness = 0.02;
                end;
            end);
        end);
        v101:Start();
        return ;
    else
        return ;
    end;
end;
v25.SwitchToAvatarEditor = function(_)
    if v101 and v100 then
        v4 = false;
        l_RunService_0:UnbindFromRenderStep("CameraScriptCutsceneLerp");
        v101:Stop();
        l_ZoneManager_0:SetZone("AvatarEditor");
        v100:Reset();
        v7.Enabled = false;
        v6.Contrast = 0.35;
        v6.Saturation = 0.175;
        v6.TintColor = Color3.fromRGB(255, 255, 255);
        v6.Brightness = 0.02;
        return ;
    else
        v102 = true;
        return ;
    end;
end;
local v137 = v103[2];
v25.UpdateAvatarEditorCamera = function(_, v139)
    if v100 then
        v137 = v139;
        v100:Update({
            v100:get_getFrameInfo()().CFrame,
            v137
        }, 0.5);
        return ;
    else
        return ;
    end;
end;
return v25;


local l_RunService_0 = game:GetService("RunService");
local v1 = nil;
local v2 = {};
local l_v2_0 = v2 --[[ copy: 2 -> 5 ]];
local function v7(v4)
    if not l_v2_0[v4] then
        local l_FirstChild_0 = script.Parent:WaitForChild("CameraManager_Zones"):FindFirstChild("CameraManagerZone_" .. tostring(v4));
        if l_FirstChild_0 then
            local v6 = require(l_FirstChild_0);
            l_v2_0[v4] = v6;
            return v6;
        else
            return ;
        end;
    else
        return l_v2_0[v4];
    end;
end;
v1 = {
    CurrentZone = nil
};
local v8 = nil;
do
    local l_v8_0 = v8;
    v1.SetZone = function(_, v11)
        if v1.CurrentZone == v11 then
            return ;
        else
            v1.CurrentZone = v11;
            if l_v8_0 then
                l_v8_0:disconnect();
                l_v8_0 = nil;
            end;
            local v12;
            if not l_v2_0[v11] then
                local l_FirstChild_1 = script.Parent:WaitForChild("CameraManager_Zones"):FindFirstChild("CameraManagerZone_" .. tostring(v11));
                if l_FirstChild_1 then
                    local v14 = require(l_FirstChild_1);
                    l_v2_0[v11] = v14;
                    v12 = v14;
                else
                    v12 = nil;
                end;
            else
                v12 = l_v2_0[v11];
            end;
            if v12 then
                v12:SetEnabled(true);
                l_v8_0 = {
                    disconnect = function()
                        v12:SetEnabled(false);
                    end
                };
                return ;
            else
                return ;
            end;
        end;
    end;
end;
v2 = nil;
v2 = {};
v7 = nil;
do
    local l_v7_0 = v7;
    v2.SetZone = function(_, v17)
        if l_v7_0 then
            l_v7_0.Parent = nil;
            l_v7_0 = nil;
        end;
        local l_FirstChild_2 = game:GetService("ReplicatedStorage"):WaitForChild("Skyboxes"):FindFirstChild(v17 or "default");
        if l_FirstChild_2 then
            l_v7_0 = l_FirstChild_2:Clone();
            local l_Lighting_0 = game:GetService("Lighting");
            l_FirstChild_2.Parent = l_Lighting_0;
            pcall(function()
                for _, v21 in pairs(l_FirstChild_2:GetChildren()) do
                    l_Lighting_0[v21.Name] = v21.Value;
                end;
            end);
        end;
    end;
end;
v7 = {
    Zone = nil
};
v8 = function(v22)
    v7.Zone = v22;
    v2:SetZone(v22);
    v1:SetZone(v22);
end;
v7.SetZone = function(_, v24)
    if v24 == v7.Zone then
        return ;
    elseif not l_RunService_0:IsRunning() then
        spawn(function()
            while not l_RunService_0:IsRunning() do
                wait();
            end;
            local l_v24_0 = v24;
            v7.Zone = l_v24_0;
            v2:SetZone(l_v24_0);
            v1:SetZone(l_v24_0);
        end);
        return ;
    else
        v7.Zone = v24;
        v2:SetZone(v24);
        v1:SetZone(v24);
        return ;
    end;
end;
return v7;


local l_RunService_0 = game:GetService("RunService");
local l_Zones_0 = workspace:FindFirstChild("Zones");
local v2 = l_Zones_0 and l_Zones_0:FindFirstChild("City");
local v3 = {};
v3.GetAllParts = function(v4, v5)
    v5 = v5 or {};
    if v4:IsA("BasePart") then
        v5[#v5 + 1] = v4;
    end;
    local l_v4_Children_0 = v4:GetChildren();
    for v7 = 1, #l_v4_Children_0 do
        v3.GetAllParts(l_v4_Children_0[v7], v5);
    end;
    return v5;
end;
v3.GetAllPartOffsets = function(v8, v9)
    local v10 = {};
    local v11 = v9:inverse();
    for v12 = 1, #v8 do
        v10[v12] = v11 * v8[v12].CFrame;
    end;
    return v10;
end;
v3.newCFramer = function(v13, v14)
    return function(v15)
        for v16 = 1, #v13 do
            v13[v16].CFrame = v15 * v14[v16];
        end;
    end;
end;
v3.newCFramerFromModel = function(v17, v18)
    local v19 = v3.GetAllParts(v17);
    return v3.newCFramer(v19, (v3.GetAllPartOffsets(v19, v18)));
end;
local v20 = nil;
spawn(function()
    while not l_RunService_0:IsRunning() do
        wait(0.1);
    end;
    if not v2 then
        v2 = workspace:WaitForChild("Zones"):WaitForChild("City");
    end;
    local v21 = v2.Train:Clone();
    local function _()
        local v22 = v21:Clone();
        v22.Parent = workspace;
        return v3.newCFramerFromModel(v22.Parts, v22.Track.CFrame);
    end;
    local function v31(v24, v25)
        if not v25 then
            v25 = math.random(0, 1) * 2 - 1;
        end;
        local l_Y_0 = v24.Size.Y;
        local v27 = (v24.CFrame * CFrame.Angles(1.5707963267948966 * (v25 + 1), 0, 0)) * CFrame.new(0, -l_Y_0 / 2, 0);
        return function(v28, v29)
            local v30 = v29 * 48;
            if v30 >= 0 and v30 <= l_Y_0 then
                v28(v27 * CFrame.new(0, v30, 0));
            end;
        end, v24.Size.Y;
    end;
    local v32 = v21:Clone();
    v32.Parent = workspace;
    local v33 = v3.newCFramerFromModel(v32.Parts, v32.Track.CFrame);
    local v34 = v21:Clone();
    v34.Parent = workspace;
    v32 = v3.newCFramerFromModel(v34.Parts, v34.Track.CFrame);
    local v35 = v21:Clone();
    v35.Parent = workspace;
    v34 = v3.newCFramerFromModel(v35.Parts, v35.Track.CFrame);
    local v36 = v21:Clone();
    v36.Parent = workspace;
    v35 = v3.newCFramerFromModel(v36.Parts, v36.Track.CFrame);
    local v37 = v21:Clone();
    v37.Parent = workspace;
    v36 = v3.newCFramerFromModel(v37.Parts, v37.Track.CFrame);
    local v38 = v21:Clone();
    v38.Parent = workspace;
    v37 = v3.newCFramerFromModel(v38.Parts, v38.Track.CFrame);
    local v39 = v21:Clone();
    v39.Parent = workspace;
    v38 = v3.newCFramerFromModel(v39.Parts, v39.Track.CFrame);
    v39 = v2.Tracks;
    local v40 = v31(v39.TrackA1);
    local v41 = v31(v39.TrackA2);
    local v42 = v31(v39.TrackA3);
    local v43 = v31(v39.TrackB1);
    local _ = v31(v39.TrackB2);
    local _ = v31(v39.TrackC1);
    local v46 = v31(v39.TrackC2);
    local _ = v31(v39.TrackC3);
    v20 = function(v48)
        v40(v33, v48 % 15);
        v41(v32, (v48 - 3) % 20);
        v42(v34, (v48 - 5.5) % 18);
        v43(v35, (v48 - 5.5) % 25);
        v46(v36, (v48 - 2.5) % 30);
    end;
end);
local v49 = nil;
spawn(function()
    if not v2 then
        v2 = workspace:WaitForChild("Zones"):WaitForChild("City");
    end;
    local function v74(v50, v51)
        local v52 = {};
        local v53 = {};
        local v54 = {};
        local v55 = {};
        for _, v57 in pairs(v50:GetChildren()) do
            local v58 = tonumber(v57.Name);
            v52[v58] = v57;
            v55[v58] = v57.CFrame;
            local v59 = {};
            local v60 = {};
            for _, v62 in pairs(v57:GetChildren()) do
                if v62:IsA("BasePart") then
                    v59[#v59 + 1] = v62;
                    v60[#v60 + 1] = v57.CFrame:inverse() * v62.CFrame;
                end;
            end;
            v53[v58] = v59;
            v54[v58] = v60;
        end;
        local v63 = 0;
        local v64 = 0;
        local v65 = 0;
        return function(v66)
            if v66 < v65 then
                v65 = v66;
            end;
            local v67 = (v66 - v65) / v51 + v64;
            if v67 >= 1 then
                v63 = (v63 + math.floor(v67)) % #v52;
                v67 = v67 % 1;
                v64 = v67;
                v65 = v66;
            end;
            for v68 = 0, #v52 - 2 do
                local v69 = (v68 - v63) % #v55 + 1;
                local v70 = v55[v68 + 1]:lerp(v55[v68 + 2], v67);
                v52[v69].CFrame = v70;
                local v71 = v53[v69];
                local v72 = v54[v69];
                for v73 = 1, #v71 do
                    v71[v73].CFrame = v70 * v72[v73];
                end;
            end;
        end;
    end;
    local v75 = v74(v2.Pipe1.Flow, 0.5);
    local v76 = v74(v2.Pipe2.Flow, 0.65);
    v49 = function(v77)
        v75(v77);
        v76(v77);
    end;
end);
local v78 = nil;
return {
    SetEnabled = function(_, v80)
        if not v80 or not v78 then
            if v78 then
                v78:disconnect();
                v78 = nil;
            end;
            if v80 then
                local v81 = tick();
                v78 = game:GetService("RunService").RenderStepped:Connect(function()
                    local v82 = tick() - v81;
                    if v49 then
                        v49(v82);
                    end;
                    if v20 then
                        v20(v82);
                    end;
                end);
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    end
};


local l_RunService_0 = game:GetService("RunService");
local v1 = {};
v1.GetAllParts = function(v2, v3)
    v3 = v3 or {};
    if v2:IsA("BasePart") then
        v3[#v3 + 1] = v2;
    end;
    local l_v2_Children_0 = v2:GetChildren();
    for v5 = 1, #l_v2_Children_0 do
        v1.GetAllParts(l_v2_Children_0[v5], v3);
    end;
    return v3;
end;
v1.GetAllPartOffsets = function(v6, v7)
    local v8 = {};
    local v9 = v7:inverse();
    for v10 = 1, #v6 do
        v8[v10] = v9 * v6[v10].CFrame;
    end;
    return v8;
end;
v1.newOffsetter = function(v11, v12, v13)
    return function(v14)
        local v15 = v13 * v14;
        for v16 = 1, #v11 do
            v11[v16].CFrame = v15 * v12[v16];
        end;
    end;
end;
v1.newOffsetterFromModel = function(v17, v18)
    local v19 = v1.GetAllParts(v17);
    return v1.newOffsetter(v19, v1.GetAllPartOffsets(v19, v18), v18);
end;
local l_newOffsetterFromModel_0 = v1.newOffsetterFromModel;
local v21 = nil;
spawn(function()
    while not l_RunService_0:IsRunning() do
        wait(0.1);
    end;
    local l_Station_0 = workspace:WaitForChild("Zones"):WaitForChild("Space").Station;
    local l_CFrame_0 = l_Station_0.rings.center.CFrame;
    local v24 = l_newOffsetterFromModel_0(l_Station_0.rings.Ring1, l_CFrame_0);
    local v25 = l_newOffsetterFromModel_0(l_Station_0.rings.Ring2, l_CFrame_0);
    local v26 = l_newOffsetterFromModel_0(l_Station_0.rings.Ring3, l_CFrame_0);
    local v27 = l_newOffsetterFromModel_0(l_Station_0.station, l_CFrame_0);
    v21 = function(v28)
        v24(CFrame.Angles(0, (v28 / 6) % 6.283185307179586, 0) * CFrame.new(0, math.sin((v28 / 4) % 6.283185307179586) * 1, 0));
        v25(CFrame.Angles(0, -((v28 / 4) % 6.283185307179586), 0) * CFrame.new(0, math.sin(2 + (v28 / 2) % 6.283185307179586) * 1, 0));
        v26(CFrame.Angles(0, (v28 / 3.5) % 6.283185307179586, 0) * CFrame.new(0, math.sin(1 + (v28 / 2) % 6.283185307179586) * 1, 0));
        v27(CFrame.Angles(0, (v28 / -32) % 6.283185307179586, 0) * CFrame.new(0, math.sin((v28 / 4) % 6.283185307179586) * 3 - 2, 0));
    end;
end);
local v29 = nil;
spawn(function()
    while not l_RunService_0:IsRunning() do
        wait(0.1);
    end;
    local l_Space_0 = workspace:WaitForChild("Zones"):WaitForChild("Space");
    local l_Orbit_0 = l_Space_0.Orbit;
    local v32 = l_newOffsetterFromModel_0(l_Orbit_0, l_Orbit_0.center.CFrame);
    local v33 = {
        l_Space_0.Disk,
        l_Space_0.Disk2,
        l_Space_0.Disk3
    };
    local v34 = {};
    for v35 = 1, #v33 do
        v34[v35] = l_newOffsetterFromModel_0(v33[v35], v33[v35].CFrame);
    end;
    v29 = function(v36)
        v32(CFrame.Angles((v36 / 80) % 6.283185307179586, (v36 / 60) % 6.283185307179586, (v36 / 40) % 6.283185307179586));
        for v37 = 1, #v34 do
            v34[v37](CFrame.Angles(0, 0.25 + (v36 / 60) % 6.283185307179586, 0));
        end;
    end;
end);
local v38 = nil;
return {
    SetEnabled = function(_, v40)
        if not v40 or not v38 then
            if v38 then
                v38:disconnect();
                v38 = nil;
            end;
            if v40 then
                local v41 = tick();
                v38 = game:GetService("RunService").RenderStepped:Connect(function()
                    local v42 = tick() - v41;
                    if v21 then
                        v21(v42);
                    end;
                    if v29 then
                        v29(v42);
                    end;
                end);
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    end
};


local l_RunService_0 = game:GetService("RunService");
local v1 = nil;
local v2 = nil;
spawn(function()
    while not l_RunService_0:IsRunning() do
        wait(0.1);
    end;
    v1 = workspace:WaitForChild("Zones"):WaitForChild("Volcano");
    v2 = v1.Lightning:GetChildren();
    for v3 = 1, #v2 do
        v2[v3].Parent = nil;
    end;
end);
local function _(v4)
    if v4 and v1 then
        v4.Parent = v1.Lightning;
        wait(0.125);
        v4.Parent = nil;
        return ;
    else
        return ;
    end;
end;
local v6 = nil;
local v7 = nil;
return {
    SetEnabled = function(_, v9)
        if not v9 or not v6 then
            if v6 then
                v6:disconnect();
                v6 = nil;
            end;
            v7 = nil;
            if v9 then
                local v10 = {};
                v7 = v10;
                coroutine.wrap(function()
                    while v7 == v10 do
                        wait(math.random() * 16 + 1);
                        if v2 then
                            local v11 = v2[math.random(1, #v2)];
                            if v11 and v1 then
                                v11.Parent = v1.Lightning;
                                wait(0.125);
                                v11.Parent = nil;
                            end;
                        end;
                    end;
                end)();
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    end
};


local l_RunService_0 = game:GetService("RunService");
local l_ReplicatedStorage_0 = game:GetService("ReplicatedStorage");
local l_Lighting_0 = game:GetService("Lighting");
local v3 = nil;
local v4 = {};
local l_v4_0 = v4 --[[ copy: 4 -> 7 ]];
local function v9(v6)
    if not l_v4_0[v6] then
        local l_FirstChild_0 = script.Parent:WaitForChild("CameraManager_Zones"):FindFirstChild("CameraManagerZone_" .. tostring(v6));
        if l_FirstChild_0 then
            local v8 = require(l_FirstChild_0);
            l_v4_0[v6] = v8;
            return v8;
        else
            return ;
        end;
    else
        return l_v4_0[v6];
    end;
end;
v3 = {
    CurrentZone = nil
};
local v10 = nil;
do
    local l_v10_0 = v10;
    v3.SetZone = function(_, v13)
        if v3.CurrentZone == v13 then
            return ;
        else
            v3.CurrentZone = v13;
            if l_v10_0 then
                l_v10_0:disconnect();
                l_v10_0 = nil;
            end;
            local v14;
            if not l_v4_0[v13] then
                local l_FirstChild_1 = script.Parent:WaitForChild("CameraManager_Zones"):FindFirstChild("CameraManagerZone_" .. tostring(v13));
                if l_FirstChild_1 then
                    local v16 = require(l_FirstChild_1);
                    l_v4_0[v13] = v16;
                    v14 = v16;
                else
                    v14 = nil;
                end;
            else
                v14 = l_v4_0[v13];
            end;
            if v14 then
                v14:SetEnabled(true);
                l_v10_0 = {
                    disconnect = function()
                        v14:SetEnabled(false);
                    end
                };
                return ;
            else
                return ;
            end;
        end;
    end;
end;
v4 = nil;
v4 = {};
v9 = nil;
do
    local l_v9_0 = v9;
    v4.SetZone = function(_, v19)
        if l_v9_0 then
            l_v9_0.Parent = nil;
            l_v9_0:Destroy();
            l_v9_0 = nil;
        end;
        local l_FirstChild_2 = l_ReplicatedStorage_0:WaitForChild("Skyboxes"):FindFirstChild(v19 or "default");
        if l_FirstChild_2 then
            l_v9_0 = l_FirstChild_2:Clone();
            l_v9_0.Parent = l_Lighting_0;
            pcall(function()
                for _, v22 in ipairs(l_v9_0:GetChildren()) do
                    l_Lighting_0[v22.Name] = v22.Value;
                end;
            end);
        end;
    end;
end;
v9 = {
    Zone = nil
};
v10 = function(v23)
    v9.Zone = v23;
    v4:SetZone(v23);
    v3:SetZone(v23);
end;
v9.SetZone = function(_, v25)
    if v25 == v9.Zone then
        return ;
    elseif not l_RunService_0:IsRunning() then
        spawn(function()
            while not l_RunService_0:IsRunning() do
                wait();
            end;
            local l_v25_0 = v25;
            v9.Zone = l_v25_0;
            v4:SetZone(l_v25_0);
            v3:SetZone(l_v25_0);
        end);
        return ;
    else
        v9.Zone = v25;
        v4:SetZone(v25);
        v3:SetZone(v25);
        return ;
    end;
end;
return v9;


local l_RobloxGui_0 = game:GetService("CoreGui"):FindFirstChild("RobloxGui");
local l_Shell_0 = l_RobloxGui_0:FindFirstChild("Modules"):FindFirstChild("Shell");
local l_Utility_0 = require(l_Shell_0:FindFirstChild("Utility"));
local l_GameData_0 = require(l_Shell_0:FindFirstChild("GameData"));
return function()
    local v4 = {};
    local v5 = {};
    local v6 = 0;
    local v7 = 1;
    local v8 = nil;
    local v9 = false;
    local v10 = nil;
    local v11 = true;
    local v12 = Color3.new(1, 1, 1);
    local v13 = Color3.new(0.4, 0.4, 0.4);
    local v14 = Color3.new(1, 1, 1);
    local v15 = l_Utility_0.Create("ScrollingFrame")({
        Name = "CarouselContainer",
        BackgroundTransparency = 1,
        ClipsDescendants = false,
        ScrollingEnabled = false,
        Selectable = false,
        ScrollBarThickness = 0
    });
    local function _(v16)
        local v17 = false;
        if v16.AbsolutePosition.x + v16.AbsoluteSize.x >= 0 then
            v17 = v16.AbsolutePosition.x < l_RobloxGui_0.AbsoluteSize.x;
        end;
        return v17;
    end;
    local function v21()
        local l_v7_0 = v7;
        if v9 then
            l_v7_0 = 1;
        end;
        local v20 = v15.Size.Y.Offset * l_v7_0;
        return UDim2.new(0, v20, 0, v20);
    end;
    local function v23()
        local v22 = v15.Size.Y.Offset * v7;
        return UDim2.new(0, v22, 0, v22);
    end;
    local function _(v24)
        if v24 == v8 then
            return v21();
        else
            return v23();
        end;
    end;
    local function v41(v26)
        local l_v4_ItemIndex_0 = v4:GetItemIndex(v8);
        local v28 = v26 - l_v4_ItemIndex_0;
        local v29 = 0;
        local _ = 0;
        if l_v4_ItemIndex_0 < v26 then
            local l_v7_1 = v7;
            if v9 then
                l_v7_1 = 1;
            end;
            local v32 = v15.Size.Y.Offset * l_v7_1;
            local v33 = UDim2.new(0, v32, 0, v32).X.Offset + v28 * v6;
            local v34 = v28 - 1;
            local v35 = v15.Size.Y.Offset * v7;
            v29 = v33 + v34 * UDim2.new(0, v35, 0, v35).X.Offset;
        else
            local v36 = v28 * v6;
            local v37 = v15.Size.Y.Offset * v7;
            v29 = v36 + v28 * UDim2.new(0, v37, 0, v37).X.Offset;
        end;
        local v38, v39;
        if l_v4_ItemIndex_0 == v26 then
            v38 = v7;
            if v9 then
                v38 = 1;
            end;
            local v40 = v15.Size.Y.Offset * v38;
            v39 = UDim2.new(0, v40, 0, v40);
            if v39 then
                goto label0;
            end;
        end;
        v38 = v15.Size.Y.Offset * v7;
        v39 = UDim2.new(0, v38, 0, v38);
        ::label0::;
        return UDim2.new(0, v29, 0, (v15.Size.Y.Offset - v39.Y.Offset) / 2);
    end;
    local function v50(v42)
        v42 = v42 or 0;
        for v43 = 1, #v5 do
            local l_item_0 = v5[v43].item;
            local v45;
            if l_item_0 == v8 then
                local l_v7_2 = v7;
                if v9 then
                    l_v7_2 = 1;
                end;
                local v47 = v15.Size.Y.Offset * l_v7_2;
                v45 = UDim2.new(0, v47, 0, v47);
            else
                local v48 = v15.Size.Y.Offset * v7;
                v45 = UDim2.new(0, v48, 0, v48);
            end;
            local v49 = v41(v43);
            if not l_item_0:IsDescendantOf(game) then
                l_item_0.Size = v45;
                l_item_0.Position = v49;
            else
                l_item_0:TweenSizeAndPosition(v45, v49, Enum.EasingDirection.Out, Enum.EasingStyle.Quad, v42, true);
            end;
        end;
    end;
    v4.ChangeFocus = function(v51, v52, v53)
        if v51:ContainsItem(v52) then
            v8 = v52;
            v50(v53 or 0.2);
        end;
    end;
    v4.SetSize = function(_, v55)
        if v55 ~= v15.Size then
            v15.Size = v55;
            v15.CanvasSize = UDim2.new(0, v15.Size.X.Offset * 2, 1, 0);
            v50();
        end;
    end;
    v4.SetPosition = function(_, v57)
        v15.Position = v57;
    end;
    v4.SetPadding = function(_, v59)
        if v59 ~= v6 then
            v6 = v59;
            v50();
        end;
    end;
    v4.SetItemSizePercentOfContainer = function(_, v61)
        if v61 ~= v7 then
            v7 = v61;
            v50();
        end;
    end;
    v4.SetParent = function(_, v63)
        v15.Parent = v63;
    end;
    v4.SetFocus = function(v64, v65)
        if v64:ContainsItem(v65) and v65 ~= v8 then
            v8 = v65;
            v50();
        end;
    end;
    v4.SetClipsDescendants = function(_, v67)
        v15.ClipsDescendants = v67;
    end;
    local v68 = 0;
    v4.SetTransparency = function(_, v70, v71, v72)
        if not v72 and v70 == v68 then
            return ;
        else
            if not v71 then
                v71 = 0.2;
            else
                v68 = l_Utility_0.Clamp(0, 1, v68);
                if not v72 and v70 == v68 then
                    return ;
                end;
            end;
            for _, v74 in pairs(v5) do
                v74:AnimateTransparency(v68, v70, v71);
            end;
            v68 = v70;
            return ;
        end;
    end;
    v4.GetTransparency = function(_)
        return v68;
    end;
    v4.SetSelectable = function(_, v77)
        v12 = v14;
        if not v77 then
            v12 = v13;
        end;
        v11 = v77;
        for _, v79 in pairs(v5) do
            v79.item.Selectable = v11;
            v79.item.ImageColor3 = v12;
        end;
    end;
    v4.GetAvailableItem = function(v80)
        if not v8 or not v8.Parent then
            return v80:GetFront();
        else
            return v8;
        end;
    end;
    v4.GetFocusItem = function(_)
        return v8;
    end;
    v4.GetItemAt = function(_, v83)
        return v5[v83] and v5[v83].item;
    end;
    v4.GetFront = function(_)
        return v5[1] and v5[1].item;
    end;
    v4.GetBack = function(_)
        return v5[#v5] and v5[#v5].item;
    end;
    v4.GetItemIndex = function(_, v87)
        for v88 = 1, #v5 do
            if v5[v88].item == v87 then
                return v88;
            end;
        end;
        return 0;
    end;
    v4.GetCount = function(_)
        return #v5;
    end;
    v4.GetVisibleCount = function(_)
        local v91 = 0;
        for v92 = 1, #v5 do
            local l_item_1 = v5[v92].item;
            local v94 = false;
            if l_item_1.AbsolutePosition.x + l_item_1.AbsoluteSize.x >= 0 then
                v94 = l_item_1.AbsolutePosition.x < l_RobloxGui_0.AbsoluteSize.x;
            end;
            if v94 then
                v91 = v91 + 1;
            end;
        end;
        return v91;
    end;
    v4.GetFirstVisibleItemIndex = function(_)
        for v96 = 1, #v5 do
            local l_item_2 = v5[v96].item;
            local v98 = false;
            if l_item_2.AbsolutePosition.x + l_item_2.AbsoluteSize.x >= 0 then
                v98 = l_item_2.AbsolutePosition.x < l_RobloxGui_0.AbsoluteSize.x;
            end;
            if v98 then
                return v96;
            end;
        end;
    end;
    v4.GetLastVisibleItemIndex = function(_)
        for v100 = #v5, 1, -1 do
            local l_item_3 = v5[v100].item;
            local v102 = false;
            if l_item_3.AbsolutePosition.x + l_item_3.AbsoluteSize.x >= 0 then
                v102 = l_item_3.AbsolutePosition.x < l_RobloxGui_0.AbsoluteSize.x;
            end;
            if v102 then
                return v100;
            end;
        end;
    end;
    v4.GetFullVisibleItemCount = function(_)
        local l_x_0 = v15.AbsoluteSize.x;
        local l_v7_3 = v7;
        if v9 then
            l_v7_3 = 1;
        end;
        local v106 = v15.Size.Y.Offset * l_v7_3;
        local v107 = l_x_0 - UDim2.new(0, v106, 0, v106).X.Offset;
        if v107 <= 0 then
            return 0;
        else
            v106 = v15.Size.Y.Offset * v7;
            return math.floor(v107 / (UDim2.new(0, v106, 0, v106).X.Offset + v6)) + 1;
        end;
    end;
    v4.InsertCollectionFront = function(_, v109)
        for v110 = #v109, 1, -1 do
            local v111 = v109[v110];
            local l_item_4 = v111.item;
            l_item_4.Selectable = v11;
            l_item_4.ImageColor3 = v12;
            l_item_4.ImageTransparency = v68;
            l_item_4.BackgroundTransparency = v68;
            l_item_4.Position = v41(0);
            local v113;
            if l_item_4 == v8 then
                local l_v7_4 = v7;
                if v9 then
                    l_v7_4 = 1;
                end;
                local v115 = v15.Size.Y.Offset * l_v7_4;
                v113 = UDim2.new(0, v115, 0, v115);
            else
                local v116 = v15.Size.Y.Offset * v7;
                v113 = UDim2.new(0, v116, 0, v116);
            end;
            l_item_4.Size = v113;
            table.insert(v5, 1, v111);
            l_item_4.Parent = v15;
            l_GameData_0:AddRelatedGuiObject(v111.PlaceId, l_item_4);
        end;
    end;
    v4.InsertCollectionBack = function(_, v118)
        for v119 = 1, #v118 do
            local v120 = v118[v119];
            local l_item_5 = v120.item;
            l_item_5.Selectable = v11;
            l_item_5.ImageColor3 = v12;
            l_item_5.ImageTransparency = v68;
            l_item_5.BackgroundTransparency = v68;
            l_item_5.Position = v41(#v5 + 1);
            local v122;
            if l_item_5 == v8 then
                local l_v7_5 = v7;
                if v9 then
                    l_v7_5 = 1;
                end;
                local v124 = v15.Size.Y.Offset * l_v7_5;
                v122 = UDim2.new(0, v124, 0, v124);
            else
                local v125 = v15.Size.Y.Offset * v7;
                v122 = UDim2.new(0, v125, 0, v125);
            end;
            l_item_5.Size = v122;
            table.insert(v5, v120);
            l_item_5.Parent = v15;
            l_GameData_0:AddRelatedGuiObject(v120.PlaceId, l_item_5);
        end;
    end;
    v4.RemoveAmountFromFront = function(_, v127)
        for _ = 1, v127 do
            table.remove(v5, 1).item.Parent = nil;
        end;
        v50();
    end;
    v4.RemoveAmountFromBack = function(_, v130)
        for _ = 1, v130 do
            table.remove(v5).item.Parent = nil;
        end;
        v50();
    end;
    v4.RemoveItem = function(_, v133)
        for v134 = 1, #v5 do
            if v5[v134].item == v133 then
                table.remove(v5, v134).item.Parent = nil;
                break;
            end;
        end;
        v50();
    end;
    v4.RemoveAllItems = function(_)
        for _ = #v5, 1, -1 do
            table.remove(v5, #v5).item.Parent = nil;
        end;
    end;
    v4.ContainsItem = function(_, v138)
        if v138 then
            return v138.Parent == v15;
        else
            return false;
        end;
    end;
    local function _()
        v4:ChangeFocus(v8);
    end;
    v4.Focus = function(_)
        if not v9 then
            v9 = true;
            v4:ChangeFocus(v8);
            return ;
        else
            return ;
        end;
    end;
    v4.GetContainer = function(_)
        return v15;
    end;
    v4.RemoveFocus = function(_)
        if v9 then
            v9 = false;
            v4:ChangeFocus(v8);
            return ;
        else
            return ;
        end;
    end;
    v4.SetSelectionImageObject = function(_, v144)
        v10 = v144;
    end;
    v4.GetSelectionImageObject = function(_)
        return v10;
    end;
    return v4;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.Shell.Utility);
local v4 = require(l_Modules_0.Shell.GlobalSettings);
local v5 = require(l_Modules_0.Shell.SoundManager);
local v6 = require(l_Modules_0.Shell.Components.Common.RoundedButton);
local v7 = require(l_Modules_0.Shell.Components.Common.RedirectComponent);
local v8 = v2.PureComponent:extend("AlertOverlay");
v8.init = function(v9)
    v9.key = v9.props.StringKey;
    v9.guiObjs = {};
    v9.defaultItemKey = "CancelButtonKey";
    if v9.props.DefaultButton == 0 then
        v9.defaultItemKey = "ComfirmButtonKey";
    end;
    v9.state = {
        currentItemKey = v9.defaultItemKey
    };
    v9.onSelectionGained = function(v10)
        v9:setState({
            currentItemKey = v10
        });
    end;
end;
v8.willUpdate = function(v11, v12, v13)
    v11.defaultItemKey = nil;
    if v11.props.InFocus == v12.InFocus then
        return ;
    else
        if v12.InFocus then
            v11.defaultItemKey = v13.currentItemKey;
        end;
        return ;
    end;
end;
v8.render = function(v14)
    local v15 = nil;
    if not v14.props.CallbackYes and v14.defaultItemKey == "ComfirmButtonKey" then
        v14.defaultItemKey = "CancelButtonKey";
    elseif not v14.props.CallbackNo and v14.defaultItemKey == "CancelButtonKey" then
        v14.defaultItemKey = "ComfirmButtonKey";
    end;
    if v14.props.CallbackYes then
        v15 = v2.createElement(v6, {
            Button = {
                Position = UDim2.new(0, 776, 1, -166),
                AnchorPoint = Vector2.new(0, 0),
                Size = UDim2.new(0, 320, 0, 66)
            },
            Text = {
                Text = v14.props.ButtonTextYes,
                TextXAlignment = Enum.TextXAlignment.Center
            },
            Focused = v14.props.InFocus and v14.state.currentItemKey == "ComfirmButtonKey",
            Selected = v14.defaultItemKey == "ComfirmButtonKey",
            OnSelectionGained = function()
                v14.onSelectionGained("ComfirmButtonKey");
            end,
            OnActivated = function()
                v5:Play("ButtonPress");
                v14.props.CallbackYes();
            end
        });
    end;
    local v16 = nil;
    if not v14.props.CallbackNo then
        if v14.defaultItemKey == "CancelButtonKey" then
            v14.defaultItemKey = "ComfirmButtonKey";
        end;
    else
        v16 = v2.createElement(v6, {
            Button = {
                Position = UDim2.new(0, 1106, 1, -166),
                AnchorPoint = Vector2.new(0, 0),
                Size = UDim2.new(0, 320, 0, 66)
            },
            Text = {
                Text = v14.props.ButtonTextNo,
                TextXAlignment = Enum.TextXAlignment.Center
            },
            Focused = v14.props.InFocus and v14.state.currentItemKey == "CancelButtonKey",
            Selected = v14.defaultItemKey == "CancelButtonKey",
            OnSelectionGained = function()
                v14.onSelectionGained("CancelButtonKey");
            end,
            OnActivated = function()
                v5:Play("ButtonPress");
                v14.props.CallbackNo();
            end
        });
    end;
    local v17 = v2.createElement("TextLabel", {
        Size = UDim2.new(0, 0, 0, 0),
        Position = UDim2.new(0, 776, 0, 136),
        BackgroundTransparency = 1,
        Font = v4.RegularFont,
        FontSize = v4.HeaderSize,
        TextColor3 = v4.WhiteTextColor,
        Text = v14.props.Title,
        TextXAlignment = Enum.TextXAlignment.Left
    });
    local v18 = v2.createElement("TextLabel", {
        Size = UDim2.new(0, 762, 0, 304),
        Position = UDim2.new(0, 776, 0, 200),
        BackgroundTransparency = 1,
        TextXAlignment = Enum.TextXAlignment.Left,
        TextYAlignment = Enum.TextYAlignment.Top,
        Font = v4.LightFont,
        FontSize = v4.TitleSize,
        TextColor3 = v4.WhiteTextColor,
        TextWrapped = true,
        Text = v14.props.Description
    });
    local l_ImageLabel_0 = v14.props.ImageLabel;
    if l_ImageLabel_0 == nil then
        l_ImageLabel_0 = v2.createElement("ImageLabel", {
            Position = UDim2.new(0.5, 0, 0.5, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundTransparency = 1,
            Image = v4.Images.LargeErrorIcon,
            Size = UDim2.new(0, 321, 0, 264)
        });
    end;
    local v21 = v2.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        AnchorPoint = Vector2.new(0, 0.5),
        Position = UDim2.new(0, 0, 0.5, 0),
        BackgroundColor3 = Color3.new(0, 0, 0),
        BackgroundTransparency = 0.3,
        [v2.Ref] = function(v20)
            v14.ref = v20;
        end
    }, {
        Container = v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 640),
            AnchorPoint = Vector2.new(0, 0.5),
            Position = UDim2.new(0, 0, 0.5, 0),
            BackgroundColor3 = v4.OverlayColor
        }, {
            ImageContainer = v2.createElement("Frame", {
                Size = UDim2.new(0, 576, 0, 642),
                Position = UDim2.new(0, 100, 0.5, 0),
                AnchorPoint = Vector2.new(0, 0.5),
                BorderSizePixel = 0,
                BackgroundTransparency = 1
            }, {
                reportImage = l_ImageLabel_0
            }),
            TitleText = v17,
            DescriptionText = v18,
            CancelButton = v16,
            ConfirmButton = v15
        })
    });
    local v22 = nil;
    if v14.props.CallbackBack then
        v22 = v2.createElement(v7, {
            StringKey = v14.key,
            InFocus = true,
            RedirectBack = function()
                v14.props.CallbackBack();
            end
        });
    end;
    return v2.createElement(v2.Portal, {
        target = l_CoreGui_0
    }, {
        [v14.key] = v2.createElement("ScreenGui", {
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            DisplayOrder = 1
        }, {
            ModalOverlay = v21,
            RedirectObj = v22
        })
    });
end;
v8.didMount = function(v23)
    delay(0, function()
        v3.AddSelectionParent(v23.key, v23.ref);
    end);
    v5:Play("OverlayOpen");
end;
v8.willUnmount = function(v24)
    v3.RemoveSelectionGroup(v24.key);
end;
return v8;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local v3 = require(l_CorePackages_0.Packages.LuauPolyfill);
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_Images_0 = v2.App.ImageSet.Images;
local l_Colors_0 = v2.App.Style.Colors;
local l_LoadableImage_0 = v2.App.Loading.LoadableImage;
local l_Object_0 = v3.Object;
local v10 = {
    cornerRadius = UDim.new(0.5, 0),
    isSelected = false,
    size = UDim2.fromOffset(42, 42),
    thumbnailSize = 50,
    thumbnailType = "AvatarBust"
};
return function(v11)
    local v12 = l_Object_0.assign({}, v10, v11);
    local v13 = l_useStyle_0().Theme[not v12.isSelected and "IconDefault" or "IconEmphasis"];
    local function v14()
        return v1.createElement(l_ImageSetLabel_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundColor3 = v13.Color,
            BackgroundTransparency = v13.Transparency,
            Image = l_Images_0["icons/common/user"],
            ImageColor3 = l_Colors_0.Flint,
            ImageTransparency = 0.5,
            Position = UDim2.fromScale(0.5, 0.5),
            Size = UDim2.fromScale(1, 1)
        }, {
            UICorner = v1.createElement("UICorner", {
                CornerRadius = v12.cornerRadius
            })
        });
    end;
    return v1.createElement("Frame", {
        AnchorPoint = v12.anchorPoint,
        BackgroundTransparency = 1,
        LayoutOrder = v12.layoutOrder,
        Position = v12.position,
        Size = v12.size,
        Visible = v12.isVisible,
        ZIndex = v12.zIndex
    }, {
        Thumbnail = v1.createElement(l_LoadableImage_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundColor3 = v13.Color,
            BackgroundTransparency = v13.Transparency,
            cornerRadius = v12.cornerRadius,
            Image = string.format("rbxthumb://type=%s&id=%d&w=%d&h=%d", v12.thumbnailType, v12.userId, v12.thumbnailSize, v12.thumbnailSize),
            Position = UDim2.fromScale(0.5, 0.5),
            renderOnLoading = v14,
            renderOnFailed = v14,
            Size = UDim2.fromScale(1, 1)
        })
    });
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Shell.GlobalSettings);
local v3 = require(l_Modules_0.Shell.Components.ContextActionEvent);
local v4 = v1.PureComponent:extend("BaseScreen");
v4.init = function(v5)
    v5.onBack = function(_, v7, _)
        if v7 == Enum.UserInputState.Begin then
            v5._seenPressed = true;
            return ;
        else
            if not (not (v7 == Enum.UserInputState.End) or not v5._seenPressed) then
                v5.props.onUnmount();
            end;
            return ;
        end;
    end;
    v5.onCreate = function(_)
    end;
end;
v4.render = function(v10)
    local l_BackPageTitle_0 = v10.props.BackPageTitle;
    local v12 = v10.props.OnCreate or v10.onCreate;
    return v1.createElement("Frame", {
        [v1.Ref] = function(v13)
            v12(v13);
        end,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        BackgroundTransparency = 1
    }, {
        backImage = v1.createElement("ImageButton", {
            Size = UDim2.new(0, 48, 0, 48),
            BackgroundTransparency = 1,
            Image = "rbxasset://textures/ui/Shell/Icons/BackIcon@1080.png",
            Selectable = false,
            [v1.Event.Activated] = v10.onBack
        }),
        BackPageTitleLabel = v1.createElement("TextLabel", {
            Size = UDim2.new(0, 0, 0, 48),
            Position = UDim2.new(0, 56, 0, 24),
            AnchorPoint = Vector2.new(0, 0.5),
            BackgroundTransparency = 1,
            Font = v2.RegularFont,
            FontSize = v2.ButtonSize,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextColor3 = v2.WhiteTextColor,
            Text = l_BackPageTitle_0
        }),
        BackConnector = v1.createElement(v3, {
            name = "GoBackTo" .. l_BackPageTitle_0,
            callback = v10.onBack,
            binds = {
                Enum.KeyCode.ButtonB
            }
        }),
        view = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, -50),
            BackgroundTransparency = 1,
            Position = UDim2.new(0, 0, 0, 50)
        }, {
            v10.props.Content
        })
    });
end;
return v4;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Shell.Utility);
local v3 = require(l_Modules_0.Shell.LocalizedStrings);
local v4 = require(l_Modules_0.Shell.Components.Common.VerticalListView);
local v5 = require(l_Modules_0.Shell.Components.Common.SelectorButton);
local v6 = require(l_Modules_0.Shell.Components.Common.RedirectComponent);
local v7 = v1.PureComponent:extend("CategoryMenuView");
v7.OnSelectSection = function(v8, v9)
    if v8.state.currentSectionKey ~= v9 then
        v8:setState({
            currentSectionKey = v9
        });
    end;
end;
v7.init = function(v10)
    v10.key = v10.props.StringKey;
    v10.defaultCategoryKey = v10.props.DefaultCategoryKey;
    v10.defaultCategoryFocus = v10.defaultCategoryKey or v10.props.DefaultCategoryFocus;
    v10.state = {
        currentSectionKey = v10.props.DefaultCategoryFocus
    };
    v10.getCurrentPageIndex = function()
        return v10.CurrentSection;
    end;
end;
v7.willUpdate = function(v11, v12, v13)
    v11.defaultCategoryKey = nil;
    if v11.props.InFocus == v12.InFocus then
        return ;
    else
        if v12.InFocus then
            v11.defaultCategoryKey = v13.currentSectionKey or v11.props.DefaultCategoryKey;
        end;
        return ;
    end;
end;
v7.render = function(v14)
    v14.categories = v14.props.Categories;
    local v15 = {};
    for v16 in pairs(v14.categories) do
        v15[v16] = v1.createElement(v5, {
            Size = UDim2.new(0, 360, 0, 80),
            AnchorPoint = Vector2.new(0, 0),
            Text = v3:LocalizedString(v14.categories[v16].StringKey),
            ButtonKey = v16,
            LayoutOrder = v14.categories[v16].Order,
            Focused = v14.state.currentSectionKey == v16,
            Selected = v14.defaultCategoryKey == v16,
            OnSelectionGained = function(v17)
                v14:OnSelectSection(v17);
                if v14.props.OnSelectSection then
                    v14.props.OnSelectSection(v17);
                end;
            end,
            OnSelectionLost = v14.props.OnLeaveSection,
            OnActivated = v14.props.EnterSection
        });
    end;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        AnchorPoint = Vector2.new(0, 0),
        Position = UDim2.new(0, 0, 0, 0),
        BackgroundTransparency = 1,
        Selectable = false,
        [v1.Ref] = function(v18)
            v14.ref = v18;
        end
    }, {
        NavObj = v1.createElement(v6, {
            ActionPriority = v14.props.ActionPriority,
            StringKey = v14.key,
            InFocus = v14.props.InFocus,
            RedirectRight = v14.props.EnterSection,
            RedirectUp = v14.props.RedirectUp,
            RedirectDown = v14.props.RedirectDown
        }),
        ButtonView = v1.createElement(v4, {
            PaddingTop = UDim.new(0.005, 0),
            PaddingBottom = UDim.new(0.005, 0),
            Spacing = UDim.new(0.025, 0),
            ScrollBarThickness = 0,
            Items = v15,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            ScrollingEnabled = false
        })
    });
end;
v7.didMount = function(v19)
    delay(0, function()
        if not (not v19.props.InFocus or not v19.ref) then
            v2.RemoveSelectionGroup(v19.key);
            v2.AddSelectionParent(v19.key, v19.ref);
        end;
    end);
end;
v7.didUpdate = function(v20, v21, _)
    if v20.props.InFocus == v21.InFocus then
        return ;
    elseif not v20.props.InFocus or not v20.ref then
        v2.RemoveSelectionGroup(v20.key);
        return ;
    else
        v2.RemoveSelectionGroup(v20.key);
        v2.AddSelectionParent(v20.key, v20.ref);
        return ;
    end;
end;
v7.willUnmount = function(v23)
    v2.RemoveSelectionGroup(v23.key);
end;
return v7;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Shell.GlobalSettings);
return function(v3)
    local v4 = v3.Color or v2.PageDivideColor;
    local l_DividerLength_0 = v3.DividerLength;
    local v6 = v3.DividerWidth or UDim.new(0, 2);
    local l_Position_0 = v3.Position;
    local _ = nil;
    return v1.createElement("Frame", {
        BackgroundColor3 = v4,
        BorderSizePixel = 0,
        Size = if v3.FillDirection == Enum.FillDirection.Horizontal then UDim2.new(l_DividerLength_0.Scale, l_DividerLength_0.Offset, v6.Scale, v6.Offset) else UDim2.new(v6.Scale, v6.Offset, l_DividerLength_0.Scale, l_DividerLength_0.Offset),
        Position = l_Position_0
    });
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Common.Roact);
local l_ContextActionService_0 = game:GetService("ContextActionService");
local v2 = v0.PureComponent:extend("RedirectComponent");
local l_ButtonB_0 = Enum.KeyCode.ButtonB;
local function v5(v4)
    v4.exitActionName = "ExitSection" .. v4.Key;
    l_ContextActionService_0:UnbindCoreAction(v4.exitActionName);
    if not v4.props.ActionPriority then
        l_ContextActionService_0:BindCoreAction(v4.exitActionName, v4.exitAction, false, l_ButtonB_0);
        return ;
    else
        l_ContextActionService_0:BindCoreActionAtPriority(v4.exitActionName, v4.exitAction, false, 2000 + v4.props.ActionPriority, l_ButtonB_0);
        return ;
    end;
end;
local function _(v6)
    if v6.exitActionName ~= nil then
        l_ContextActionService_0:UnbindCoreAction(v6.exitActionName);
        v6.exitActionName = nil;
    end;
end;
v2.init = function(v8)
    v8.Key = v8.props.StringKey or "RedirectComponent";
    v8.exitActionName = nil;
    v8.backPressed = false;
    v8.exitAction = function(_, v10, _)
        if v8.props.InFocus then
            if v10 == Enum.UserInputState.Begin then
                v8.backPressed = true;
                return ;
            else
                if not (not (v10 == Enum.UserInputState.End) or not v8.backPressed) then
                    v8.backPressed = false;
                    v8.props.RedirectBack();
                end;
                return ;
            end;
        else
            return Enum.ContextActionResult.Pass;
        end;
    end;
end;
v2.render = function(v12)
    local l_props_0 = v12.props;
    local v14 = l_props_0.Scale or Vector2.new(1, 1);
    if not l_props_0.InFocus or not l_props_0.RedirectBack then
        if v12.exitActionName ~= nil then
            l_ContextActionService_0:UnbindCoreAction(v12.exitActionName);
            v12.exitActionName = nil;
        end;
    else
        v5(v12);
    end;
    local v15 = nil;
    if not (not l_props_0.InFocus or not l_props_0.RedirectLeft) then
        v15 = v0.createElement("TextButton", {
            Position = UDim2.new(-v14.X / 2, -1, 0.5, 0),
            Size = UDim2.new(0, 2, 1 + v14.Y, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundTransparency = 1,
            Text = "",
            [v0.Event.SelectionGained] = function(v16)
                l_props_0.RedirectLeft(v16);
            end
        });
    end;
    local v17 = nil;
    if not (not l_props_0.InFocus or not l_props_0.RedirectRight) then
        v17 = v0.createElement("TextButton", {
            Position = UDim2.new(1 + v14.X / 2, 1, 0.5, 0),
            Size = UDim2.new(0, 2, 1 + v14.Y, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundTransparency = 1,
            Text = "",
            [v0.Event.SelectionGained] = function(v18)
                l_props_0.RedirectRight(v18);
            end
        });
    end;
    local v19 = nil;
    if not (not l_props_0.InFocus or not l_props_0.RedirectUp) then
        v19 = v0.createElement("TextButton", {
            Position = UDim2.new(0.5, 0, -v14.Y / 2, -1),
            Size = UDim2.new(1 + v14.X, 0, 0, 2),
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundTransparency = 1,
            Text = "",
            [v0.Event.SelectionGained] = function(v20)
                l_props_0.RedirectUp(v20);
            end
        });
    end;
    local v21 = nil;
    if not (not l_props_0.InFocus or not l_props_0.RedirectDown) then
        v21 = v0.createElement("TextButton", {
            Position = UDim2.new(0.5, 0, 1 + v14.Y / 2, 1),
            Size = UDim2.new(1 + v14.X, 0, 0, 2),
            AnchorPoint = Vector2.new(0.5, 0.5),
            BackgroundTransparency = 1,
            Text = "",
            [v0.Event.SelectionGained] = function(v22)
                l_props_0.RedirectDown(v22);
            end
        });
    end;
    return v0.createElement("ScrollingFrame", {
        Position = UDim2.new(0.5, 0, 0.5, 0),
        Size = UDim2.new(1, 0, 1, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        BackgroundTransparency = 1,
        Selectable = false,
        ScrollingEnabled = false,
        ScrollBarThickness = 0,
        CanvasSize = UDim2.new(0, 0, 1, 0)
    }, {
        RedirectLeftButton = v15,
        RedirectRightButton = v17,
        RedirectUpButton = v19,
        RedirectDownButton = v21
    });
end;
v2.willUnmount = function(v23)
    if v23.exitActionName ~= nil then
        l_ContextActionService_0:UnbindCoreAction(v23.exitActionName);
        v23.exitActionName = nil;
    end;
end;
return v2;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.Immutable);
local v3 = require(l_Modules_0.Shell.Utility);
local v4 = require(l_Modules_0.Shell.GlobalSettings);
local v5 = require(l_Modules_0.Shell.Components.Common.SoundComponent);
local v6 = v1.PureComponent:extend("RoundedButton");
v6.init = function(v7)
    v7.selectionImageObject = v3.Create("ImageLabel")({
        Name = "SelectorImage",
        Image = v4.Images.ButtonSelector,
        Position = UDim2.new(0, -7, 0, -7),
        Size = UDim2.new(1, 14, 1, 14),
        BackgroundTransparency = 1,
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(31, 31, 63, 63)
    });
    v7.defaultProps = {
        ImageColor3 = v4.Colors.WhiteButton,
        ImageTransparency = 0.8,
        TextColor3 = v4.Colors.WhiteText
    };
    v7.focusedProps = {
        ImageColor3 = v4.Colors.BlueButton,
        ImageTransparency = 0,
        TextColor3 = v4.Colors.TextSelected
    };
    v7.disabledProps = {
        ImageColor3 = v4.Colors.WhiteButton,
        ImageTransparency = 1,
        TextColor3 = v4.Colors.WhiteText
    };
    v7.buttonImage = v4.Images.ButtonDefault;
    v7.onCreate = function(v8)
        v7.ref = v8;
    end;
end;
v6.render = function(v9)
    local v10 = v9.props.Button or {};
    local v11 = v9.props.Text or {};
    local v12 = v9.props.DefaultProps or {};
    local v13 = {};
    for v14 in pairs(v9.defaultProps) do
        v13[v14] = v12[v14] or v9.defaultProps[v14];
    end;
    local v15 = v9.props.FocusedProps or {};
    local v16 = {};
    for v17 in pairs(v9.focusedProps) do
        v16[v17] = v15[v17] or v9.focusedProps[v17];
    end;
    local v18 = v9.props.DisabledProps or {};
    local v19 = {};
    for v20 in pairs(v9.disabledProps) do
        v19[v20] = v18[v20] or v9.disabledProps[v20];
    end;
    if not v9.props.HideSelectionImage then
        v9.selectionImageObject.Visible = true;
    else
        v9.selectionImageObject.Visible = false;
    end;
    local v21 = true;
    if v10.Selectable == false then
        v21 = false;
    end;
    local l_v13_0 = v13;
    if not v9.props.Disabled then
        if v9.props.Focused then
            l_v13_0 = v16;
        end;
    else
        l_v13_0 = v19;
        v21 = v10.Selectable or false;
    end;
    return v1.createElement("ImageButton", v2.JoinDictionaries({
        Image = v9.buttonImage,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        Selectable = v21,
        [v1.Ref] = v9.onCreate,
        [v1.Event.SelectionGained] = v9.props.OnSelectionGained,
        [v1.Event.SelectionLost] = v9.props.OnSelectionLost,
        [v1.Event.Activated] = v9.props.OnActivated,
        ImageColor3 = l_v13_0.ImageColor3,
        ImageTransparency = l_v13_0.ImageTransparency,
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(8, 8, 9, 9),
        SelectionImageObject = v9.selectionImageObject,
        BackgroundTransparency = 1
    }, v10), v2.JoinDictionaries({
        Label = v1.createElement("TextLabel", (v2.JoinDictionaries({
            Text = "",
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Font = v4.Fonts.Regular,
            TextSize = v4.TextSizes.Button,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextColor3 = l_v13_0.TextColor3,
            TextTransparency = l_v13_0.TextTransparency,
            BackgroundTransparency = 1
        }, v11))),
        MoveSelection = v1.createElement(v5, {
            SoundName = "MoveSelection"
        })
    }, v9.props[v1.Children] or {}));
end;
v6.didMount = function(v23)
    delay(0, function()
        if v23.props.Selected then
            v3.SetSelectedCoreObject(v23.ref);
        end;
    end);
end;
v6.didUpdate = function(v24, v25, _)
    if not (v25.Selected or not v24.props.Selected) then
        v3.SetSelectedCoreObject(v24.ref);
    end;
end;
return v6;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.Immutable);
local v3 = require(l_Modules_0.Shell.GlobalSettings);
local v4 = require(l_Modules_0.Shell.Components.Common.RoundedButton);
local v5 = v1.PureComponent:extend("SelectorButton");
v5.init = function(v6)
    v6.key = v6.props.StringKey;
    v6.onSelectionGained = function()
        if v6.props.OnSelectionGained then
            v6.props.OnSelectionGained(v6.key);
        end;
    end;
    v6.onSelectionLost = function()
        if v6.props.OnSelectionLost then
            v6.props.OnSelectionLost(v6.key);
        end;
    end;
    v6.onActivated = function()
        if v6.props.OnActivated then
            v6.props.OnActivated(v6.key);
        end;
    end;
end;
v5.render = function(v7)
    local v8 = {};
    local v9 = {};
    local l_Size_0 = v7.props.Size;
    local l_Position_0 = v7.props.Position;
    local l_AnchorPoint_0 = v7.props.AnchorPoint;
    local l_Focused_0 = v7.props.Focused;
    local l_Disabled_0 = v7.props.Disabled;
    local l_Selected_0 = v7.props.Selected;
    v7.layoutOrder = v7.props.LayoutOrder;
    v8.Size = UDim2.new(1, 0, 1, 0);
    v8.AnchorPoint = Vector2.new(0.5, 0.5);
    v8.Position = UDim2.new(0.5, 0, 0.5, 0);
    v9.Text = v7.props.Text;
    v9.Size = UDim2.new(1, 0, 1, 0);
    v9.AnchorPoint = Vector2.new(0, 0.5);
    v9.Position = UDim2.new(0, 24, 0.5, 0);
    local v16 = v1.createElement(v4, {
        Button = v8,
        Text = v9,
        Focused = l_Focused_0,
        Disabled = l_Disabled_0,
        Selected = l_Selected_0,
        OnSelectionGained = v7.onSelectionGained,
        OnSelectionLost = v7.onSelectionLost,
        OnActivated = v7.onActivated
    });
    local v17 = nil;
    if l_Focused_0 == true then
        v17 = v1.createElement("ImageLabel", {
            Size = UDim2.new(0, 15, 0, 30),
            Image = v3.Images.RightArrow,
            Position = UDim2.new(1, 14, 0.5, 0),
            AnchorPoint = Vector2.new(0, 0.5),
            BackgroundTransparency = 1
        });
    end;
    return v1.createElement("Frame", {
        Size = l_Size_0,
        Position = l_Position_0,
        AnchorPoint = l_AnchorPoint_0,
        LayoutOrder = v7.layoutOrder,
        BackgroundTransparency = 1
    }, v2.JoinDictionaries({
        Button = v16,
        Selector = v17
    }, v7.props[v1.Children] or {}));
end;
return v5;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Shell.GlobalSettings);
return function(v3)
    return v1.createElement("ImageLabel", {
        Name = "Shadow",
        Image = v2.Images.Shadow,
        Size = UDim2.new(1, 3, 1, 3),
        Position = UDim2.new(0, 0, 0, 0),
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(10, 10, 28, 28),
        BackgroundTransparency = 1,
        ZIndex = v3.ZIndex or 1
    });
end;