local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script:FindFirstAncestor("PeekView").Parent;
local l_UserInputService_0 = game:GetService("UserInputService");
local l_UserGameSettings_0 = UserSettings():GetService("UserGameSettings");
local l_RunService_0 = game:GetService("RunService");
local v5 = require(l_Parent_0.Roact);
local v6 = require(l_Parent_0.UIBlox);
local v7 = require(l_Parent_0.Cryo);
local v8 = require(l_Parent_0.RoactGamepad);
local l_Focusable_0 = v8.Focusable;
local v10 = require(l_Parent_0.RoactRodux);
local v11 = require(script.Parent.FitChildren);
local v12 = require(script.Parent.PeekViewState);
local v13 = require(script.Parent.Scrim);
local l_ImageSetLabel_0 = v6.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v6.App.ImageSet.Images;
local l_ExternalEventConnection_0 = require(l_Parent_0.RoactUtils).ExternalEventConnection;
local v17 = require(l_Parent_0.ArgCheck);
local l_InputTypeConstants_0 = require(l_Parent_0.InputType).InputTypeConstants;
local l_GamepadUtils_0 = require(l_Parent_0.AppCommonLib).Utils.GamepadUtils;
local l_getInputGroup_0 = require(l_Parent_0.InputType).getInputGroup;
local v21 = require(l_Parent_0.RoactAppExperiment);
local v22 = require(script.Parent.analytics.peekViewDismissedEvent);
local l_GetFFlagPeekViewDeprecateFitChildren_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewDeprecateFitChildren;
local l_GetFFlagEnablePeekViewStateOnMountParam_0 = require(l_Parent_0.SharedFlags).GetFFlagEnablePeekViewStateOnMountParam;
local l_GetFFlagPeekViewScrimEnabledIXP_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewScrimEnabledIXP;
local l_GetFFlagPeekViewScrimEnabled_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewScrimEnabled;
local l_GetFFlagHideDraggerPeekView_0 = require(l_Parent_0.SharedFlags).GetFFlagHideDraggerPeekView;
local l_GetFFlagPeekViewScrimLogging_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewScrimLogging;
local l_GetFFlagPeekViewMinimizeToSuperBrief_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewMinimizeToSuperBrief;
local l_GetFFlagEDPContextRedesign_0 = require(l_Parent_0.SharedFlags).GetFFlagEDPContextRedesign;
local v31 = game:DefineFastFlag("FixPeekViewScrimAssert", false);
local v32 = l_GetFFlagPeekViewDeprecateFitChildren_0() and game:GetEngineFeature("UseActualSizeToCalculateListMinSize");
local v33 = Rect.new(9, 9, 9, 9);
local v34 = l_Images_0["icons/navigation/swipe"];
local v35 = UDim.new(1, 0);
local l_Hidden_0 = v12.Hidden;
local l_Closed_0 = v12.Closed;
local l_SuperBrief_0 = v12.SuperBrief;
local l_Brief_0 = v12.Brief;
local l_Full_0 = v12.Full;
local l_Extended_0 = v12.Extended;
local v42 = v5.PureComponent:extend("PeekView");
v42.defaultProps = {
    superBriefViewContentHeight = nil,
    briefViewContentHeight = UDim.new(0.5, 0),
    fullViewContentHeight = if l_GetFFlagPeekViewScrimEnabled_0() or l_GetFFlagPeekViewScrimEnabledIXP_0() then UDim.new(1, 0) else nil,
    bottomDockedContainerHeight = 0,
    bottomDockedContainerContent = nil,
    elasticBehavior = Enum.ElasticBehavior.Always,
    hidden = false,
    showDraggerInClosedState = true,
    showDropShadow = true,
    stateOnMount = nil,
    mountAsFullView = false,
    mountAnimation = true,
    canDragFullViewToBrief = false,
    withNewThemeProvider = true,
    viewStateChanged = nil,
    briefToFullTransitionPercent = nil,
    peekHeaderClose = true,
    peekHeaderPositionYChange = nil,
    isScrollingEnabled = true,
    closeSignal = nil,
    hideDraggerInSuperBrief = if not l_GetFFlagHideDraggerPeekView_0() then nil else false,
    minimizeToSuperBrief = if not l_GetFFlagPeekViewMinimizeToSuperBrief_0() then nil else false,
    overlayDragger = if not l_GetFFlagEDPContextRedesign_0() then nil else false
};
v42.init = function(v43)
    v43.isMounted = false;
    v43.isTouched = false;
    v43.isInGoToState = false;
    v43.useReducedMotion = l_UserGameSettings_0.ReducedMotion;
    v43.viewType = l_Hidden_0;
    v43:setState({
        scrollableViewType = false,
        absoluteWindowSizeX = 0,
        absoluteWindowSizeY = 0,
        lastInputGroup = l_getInputGroup_0(l_UserInputService_0:GetLastInputType()),
        canvasGroupTransparency = 0
    });
    v43.containerFrameRef = v5.createRef();
    v43.clipFrameRef = v5.createRef();
    v43.shadowRef = v5.createRef();
    v43.fillingAreaRef = v5.createRef();
    v43.swipeScrollingFrameRef = v5.createRef();
    v43.bottomContainerRef = v5.createRef();
    if l_GetFFlagEDPContextRedesign_0() then
        local v44, v45 = v5.createBinding(0);
        v43.transitionPercent = v44;
        v43.setTransitionPercent = v45;
    end;
    v43.onAbsoluteWindowSizeChanged = function(v46)
        if not (v46.AbsoluteWindowSize.X == v43.state.absoluteWindowSizeX) or v46.AbsoluteWindowSize.Y ~= v43.state.absoluteWindowSizeY then
            v43:setState({
                absoluteWindowSizeX = v46.AbsoluteWindowSize.X,
                absoluteWindowSizeY = v46.AbsoluteWindowSize.Y
            });
        end;
    end;
    v43.withStyle = function(v47)
        if not v43.props.withNewThemeProvider then
            return v47({
                Theme = {
                    BackgroundDefault = {
                        Color = Color3.fromRGB(35, 37, 39),
                        Transparency = 0
                    },
                    UIEmphasis = {
                        Color = Color3.fromRGB(255, 255, 255),
                        Transparency = 0.7
                    },
                    DropShadow = {
                        Color = Color3.fromRGB(0, 0, 0),
                        Transparency = 0
                    }
                },
                Settings = {
                    ReducedMotion = false
                }
            });
        else
            return v6.Style.withStyle(v47);
        end;
    end;
    v43.inputBeganCallback = function(v48)
        if v43.isMounted then
            if v48.UserInputType ~= Enum.UserInputType.Touch then
                return ;
            else
                v43.isTouched = true;
                return ;
            end;
        else
            return ;
        end;
    end;
    v43.inputEndedCallback = function(v49)
        if v43.isMounted then
            if v49.UserInputType ~= Enum.UserInputType.Touch then
                return ;
            else
                v43.isTouched = false;
                v43.checkGoTo();
                return ;
            end;
        else
            return ;
        end;
    end;
    v43.getViewSize = function(v50)
        if v50 == l_Hidden_0 then
            return UDim.new(0, 0);
        elseif v50 == l_Closed_0 then
            if not v43.props.showDraggerInClosedState then
                return UDim.new(0, 0);
            else
                return UDim.new(0, 25);
            end;
        elseif v50 == l_SuperBrief_0 then
            if not v43.props.superBriefViewContentHeight then
                return nil;
            else
                local l_superBriefViewContentHeight_0 = v43.props.superBriefViewContentHeight;
                return UDim.new(l_superBriefViewContentHeight_0.Scale, l_superBriefViewContentHeight_0.Offset + 25);
            end;
        elseif v50 == l_Brief_0 then
            local l_briefViewContentHeight_0 = v43.props.briefViewContentHeight;
            return UDim.new(l_briefViewContentHeight_0.Scale, l_briefViewContentHeight_0.Offset + 25);
        elseif v50 == l_Full_0 then
            if not l_GetFFlagPeekViewScrimEnabled_0() and not v43.props.scrimEnabled then
                return v35;
            else
                return v43.props.fullViewContentHeight;
            end;
        else
            return nil;
        end;
    end;
    v43.reconcileRbxInstances = function()
        local l_current_0 = v43.swipeScrollingFrameRef.current;
        local v54 = not not l_current_0 and l_current_0.CanvasPosition.Y or 0;
        local l_current_1 = v43.containerFrameRef.current;
        local l_current_2 = v43.clipFrameRef.current;
        local l_current_3 = v43.shadowRef.current;
        local l_current_4 = v43.fillingAreaRef.current;
        local l_X_0 = l_current_1.AbsoluteSize.X;
        local l_Y_0 = l_current_1.AbsoluteSize.Y;
        l_current_2.Size = UDim2.new(0, l_X_0, 0, v54);
        l_current_3.Size = UDim2.new(0, l_X_0, 0, 36);
        l_current_2.Position = UDim2.new(0, 0, 1, -v54);
        l_current_3.Position = UDim2.new(0, 0, 1, -v54 - 30);
        l_current_0.Size = UDim2.new(0, l_X_0, 0, l_Y_0);
        l_current_0.Position = UDim2.new(0, 0, 0, -(l_Y_0 - v54));
        l_current_4.Size = UDim2.new(0, l_X_0, 0, l_Y_0);
        local l_current_5 = v43.bottomContainerRef.current;
        if l_current_5 then
            local l_bottomDockedContainerHeight_0 = v43.props.bottomDockedContainerHeight;
            if 25 + l_bottomDockedContainerHeight_0 < l_current_2.AbsoluteSize.Y then
                l_current_5.Active = true;
                l_current_5.Position = UDim2.new(0, 0, 1, -l_bottomDockedContainerHeight_0);
            else
                l_current_5.Active = false;
                l_current_5.Position = UDim2.new(0, 0, 1, -l_current_2.AbsoluteSize.Y + 25);
            end;
        end;
        v43.transitionCallbacks();
        if not (not l_GetFFlagEDPContextRedesign_0() or not v43.props.peekHeaderPositionYChange) then
            v43.props.peekHeaderPositionYChange(v54);
        end;
    end;
    v43.updateSwipeScrollingFrame = function()
        local v63 = v43.getViewSize(v43.viewType);
        local v64 = v43.containerFrameRef.current and v43.swipeScrollingFrameRef.current;
        if not (not v63 or not v64) then
            local l_Y_1 = v43.containerFrameRef.current.AbsoluteSize.Y;
            local l_current_6 = v43.swipeScrollingFrameRef.current;
            local v67 = l_Y_1 * v63.Scale + v63.Offset;
            if l_current_6.CanvasPosition.Y ~= v67 then
                l_current_6.CanvasPosition = Vector2.new(0, v67);
                if v43.props.peekHeaderPositionYChange then
                    v43.props.peekHeaderPositionYChange(v67);
                end;
            end;
        end;
    end;
    v43.onContainerFrameAbsoluteSizeChanged = function()
        if v43.isMounted then
            v43.reconcileRbxInstances();
            v43.updateSwipeScrollingFrame();
            return ;
        else
            return ;
        end;
    end;
    v43.onSwipeScrollingFrameCanvasPositionChanged = function()
        if v43.isMounted then
            local l_current_7 = v43.swipeScrollingFrameRef.current;
            local l_Y_2 = l_current_7.CanvasPosition.Y;
            if l_Y_2 ~= math.floor(l_Y_2) then
                l_current_7.CanvasPosition = Vector2.new(0, (math.floor(l_Y_2 + 0.5)));
                if v43.props.peekHeaderPositionYChange then
                    v43.props.peekHeaderPositionYChange(l_Y_2);
                end;
                return ;
            else
                v43.reconcileRbxInstances();
                if v43.state.lastInputGroup ~= l_InputTypeConstants_0.Gamepad then
                    v43.checkGoTo();
                end;
                return ;
            end;
        else
            return ;
        end;
    end;
    v43.getBriefViewY = function()
        local l_Y_3 = v43.containerFrameRef.current.AbsoluteSize.Y;
        local l_briefViewContentHeight_1 = v43.props.briefViewContentHeight;
        return (l_Y_3 * l_briefViewContentHeight_1.Scale + l_briefViewContentHeight_1.Offset) + 25;
    end;
    v43.getSuperBriefViewY = function()
        if v43.props.superBriefViewContentHeight and v43.containerFrameRef:getValue() then
            local l_Y_4 = v43.containerFrameRef:getValue().AbsoluteSize.Y;
            local l_superBriefViewContentHeight_1 = v43.props.superBriefViewContentHeight;
            return (l_Y_4 * l_superBriefViewContentHeight_1.Scale + l_superBriefViewContentHeight_1.Offset) + 25;
        else
            return nil;
        end;
    end;
    v43.getFullViewY = function()
        local l_Y_5 = v43.containerFrameRef.current.AbsoluteSize.Y;
        if not l_GetFFlagPeekViewScrimEnabled_0() and not v43.props.scrimEnabled then
            return l_Y_5 * v35.Scale + v35.Offset;
        else
            return l_Y_5 * v43.props.fullViewContentHeight.Scale + v43.props.fullViewContentHeight.Offset;
        end;
    end;
    v43.transitionCallbacks = function()
        local l_briefToFullTransitionPercent_0 = v43.props.briefToFullTransitionPercent;
        if not (not l_GetFFlagEDPContextRedesign_0() and not l_briefToFullTransitionPercent_0) then
            local l_Y_6 = v43.swipeScrollingFrameRef.current.CanvasPosition.Y;
            local v77 = v43.getBriefViewY();
            local v78 = v43.getFullViewY();
            local v79 = v78 - v77;
            local v80 = 0;
            if v77 < l_Y_6 and l_Y_6 <= v78 then
                v80 = (l_Y_6 - v77) / v79;
            elseif v78 < l_Y_6 then
                v80 = 1;
            end;
            if l_GetFFlagEDPContextRedesign_0() then
                v43.setTransitionPercent(v80);
            end;
            if not (not (l_GetFFlagEDPContextRedesign_0() and l_briefToFullTransitionPercent_0) and l_GetFFlagEDPContextRedesign_0()) then
                l_briefToFullTransitionPercent_0(v80);
            end;
        end;
    end;
    v43.checkGoTo = function()
        if not v43.isInGoToState then
            if not v43.isTouched then
                local l_current_8 = v43.swipeScrollingFrameRef.current;
                if (l_current_8 and v43.state.absoluteWindowSizeX == 0) and v43.state.absoluteWindowSizeY == 0 then
                    return ;
                else
                    local v82 = v43.getBriefViewY();
                    local v83 = v43.getSuperBriefViewY();
                    local v84 = v43.getFullViewY();
                    if v84 < v82 then
                        return ;
                    elseif v83 and v82 < v83 then
                        return ;
                    elseif (not not v32 and l_current_8.AbsoluteCanvasSize.Y or l_current_8.CanvasSize.Y.Offset) < (l_current_8.AbsoluteWindowSize.Y + 25) + v43.props.bottomDockedContainerHeight then
                        return ;
                    else
                        local l_Y_7 = l_current_8.ScrollVelocity.Y;
                        local v86 = l_Y_7 < 0;
                        local v87 = l_Y_7 > 0;
                        local l_Y_8 = l_current_8.CanvasPosition.Y;
                        local v89 = false;
                        if v43.viewType == v12.Brief then
                            v89 = l_Y_8 == v82;
                        end;
                        local v90 = false;
                        if v43.viewType == v12.Full then
                            v90 = l_Y_8 == v84;
                        end;
                        if not (not v89 and not v90) and l_Y_7 == 0 then
                            return ;
                        elseif v84 < l_Y_8 then
                            v43:handleCurYAboveFullViewY(v86);
                            return ;
                        elseif v82 < l_Y_8 and l_Y_8 <= v84 then
                            v43:handleCurYFromBriefToFull(l_Y_8, l_Y_7, v86, v87);
                            return ;
                        else
                            if not v83 then
                                if l_Y_8 <= v82 then
                                    v43:handleCurYFromClosedToBrief(l_Y_8, v87, v86);
                                end;
                            elseif v83 < l_Y_8 and l_Y_8 <= v82 then
                                v43:handleCurYFromSuperBriefToBrief(l_Y_8, v83, l_Y_7, v86, v87);
                                return ;
                            elseif l_Y_8 <= v83 then
                                v43:handleCurYFromClosedToSuperBrief(l_Y_8, v83, l_Y_7, v87, v86);
                                return ;
                            end;
                            return ;
                        end;
                    end;
                end;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
    v43.onPeekHeaderActivated = function()
        if v43.viewType == l_Closed_0 then
            v43.goTo(l_Brief_0);
            return ;
        elseif v43.viewType == l_Brief_0 then
            v43.goTo(l_Full_0);
            return ;
        elseif v43.viewType == l_SuperBrief_0 then
            v43.goTo(l_Brief_0);
            return ;
        else
            if v43.viewType == l_Full_0 then
                if not v43.props.peekHeaderClose then
                    v43.goTo(l_Brief_0);
                elseif not l_GetFFlagPeekViewScrimLogging_0() then
                    v43.goTo(l_Closed_0);
                    return ;
                else
                    v43.goTo(l_Closed_0, nil, nil, {
                        dismissMethod = v22.dismissMethodEnum.handleTap
                    });
                    return ;
                end;
            end;
            return ;
        end;
    end;
    v43.setViewType = function(v91, v92)
        if v43.goToAnimationConnection then
            v43.goToAnimationConnection:disconnect();
            v43.goToAnimationConnection = nil;
        end;
        v43.isInGoToState = false;
        v43.clipFrameRef.current.Active = false;
        local l_viewType_0 = v43.viewType;
        if l_viewType_0 ~= v91 then
            v43.viewType = v91;
            local v94 = true;
            if v43.viewType ~= l_Extended_0 then
                v94 = v43.viewType == l_Full_0;
            end;
            v43:setState({
                scrollableViewType = v94
            });
            local l_viewStateChanged_0 = v43.props.viewStateChanged;
            if l_viewStateChanged_0 then
                if not l_GetFFlagPeekViewScrimLogging_0() then
                    l_viewStateChanged_0(v91, l_viewType_0);
                else
                    l_viewStateChanged_0(v91, l_viewType_0, v92 or {});
                end;
            end;
        end;
        v43.updateSwipeScrollingFrame();
    end;
    v43.goTo = function(v96, v97, v98, v99)
        if v43.viewType == v96 then
            return ;
        elseif not v17.isEqual(v43.isInGoToState, false, "self.isInGoToState") then
            if not v17.isEqual(v43.goToAnimationConnection, nil, "self.goToAnimationConnection") then
                v43.isInGoToState = true;
                v43.swipeScrollingFrameRef:getValue().ScrollVelocity = Vector2.new(0, 0);
                v43.clipFrameRef.current.Active = true;
                if v97 == false then
                    if not l_GetFFlagPeekViewScrimLogging_0() then
                        v43.setViewType(v96);
                    else
                        v43.setViewType(v96, v99);
                    end;
                    if v96 == l_Full_0 then
                        v43:adjustScrollingFramePosition();
                        return ;
                    end;
                else
                    local v100 = tick();
                    if v98 then
                        if v96 ~= l_Closed_0 then
                            if not l_GetFFlagPeekViewScrimLogging_0() then
                                v43.setViewType(v96);
                            else
                                v43.setViewType(v96, v99);
                            end;
                            if v96 == l_Full_0 then
                                v43:adjustScrollingFramePosition();
                            end;
                        end;
                        v43:setState({
                            canvasGroupTransparency = v96 == l_Closed_0 and 0 or 1
                        });
                        v43.goToAnimationConnection = l_RunService_0.RenderStepped:Connect(function()
                            if v43.isMounted then
                                if v96 == l_Full_0 then
                                    v43.updateSwipeScrollingFrame();
                                end;
                                local v101 = tick() - v100;
                                if v101 >= 0.35 then
                                    v43:setState({
                                        canvasGroupTransparency = v96 == l_Closed_0 and 1 or 0
                                    });
                                    if not l_GetFFlagPeekViewScrimLogging_0() then
                                        v43.setViewType(v96);
                                    else
                                        v43.setViewType(v96, v99);
                                    end;
                                    if v96 == l_Full_0 then
                                        v43:adjustScrollingFramePosition();
                                    end;
                                    return ;
                                else
                                    v43:setState({
                                        canvasGroupTransparency = if v96 == l_Closed_0 then v101 / 0.35 else 1 - v101 / 0.35
                                    });
                                    return ;
                                end;
                            else
                                return ;
                            end;
                        end);
                    else
                        v43:setState({
                            canvasGroupTransparency = v96 == l_Closed_0 and 1 or 0
                        });
                        v43.goToAnimationConnection = l_RunService_0.RenderStepped:Connect(function()
                            if v43.isMounted then
                                v43.swipeScrollingFrameRef:getValue().ScrollVelocity = Vector2.new(0, 0);
                                local l_current_9 = v43.swipeScrollingFrameRef.current;
                                local l_Y_9 = v43.containerFrameRef.current.AbsoluteSize.Y;
                                local v104 = v17.isNotNil(v43.getViewSize(v96), "self.goTo.viewSize");
                                local v105 = l_Y_9 * v104.Scale + v104.Offset;
                                local v106 = tick() - v100;
                                if v106 >= 0.35 then
                                    if not l_GetFFlagPeekViewScrimLogging_0() then
                                        v43.setViewType(v96);
                                    else
                                        v43.setViewType(v96, v99);
                                    end;
                                    if v96 == l_Full_0 then
                                        v43:adjustScrollingFramePosition();
                                    end;
                                    return ;
                                else
                                    local l_Y_10 = l_current_9.CanvasPosition.Y;
                                    l_current_9.CanvasPosition = Vector2.new(0, l_Y_10 + (v105 - l_Y_10) * math.sin(v106 * 2.468394227820552));
                                    return ;
                                end;
                            else
                                return ;
                            end;
                        end);
                        return ;
                    end;
                end;
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
    v43.selectedCoreObjectConnection = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):connect(function()
        if v43.swipeScrollingFrameRef.current and v43.state.lastInputGroup == l_InputTypeConstants_0.Gamepad then
            v43:adjustScrollingFramePosition();
        end;
    end);
end;
v42.handleCurYAboveFullViewY = function(v108, v109)
    if v108.viewType ~= l_Full_0 and v108.viewType ~= l_Extended_0 then
        if not v109 then
            v108.setViewType(l_Extended_0);
            return ;
        else
            v108.goTo(l_Full_0);
            return ;
        end;
    else
        if v108.viewType == l_Full_0 then
            v108.setViewType(l_Extended_0);
        end;
        return ;
    end;
end;
v42.handleCurYFromBriefToFull = function(v110, v111, v112, v113, v114)
    local l_canDragFullViewToBrief_0 = v110.props.canDragFullViewToBrief;
    local v116 = l_GetFFlagPeekViewMinimizeToSuperBrief_0() and v110.props.minimizeToSuperBrief;
    local v117 = v110.swipeScrollingFrameRef:getValue();
    local v118 = v110.getBriefViewY();
    local v119 = v110.getFullViewY() - v118;
    if v110.viewType == l_Full_0 then
        if (v117.AbsoluteCanvasSize.Y - v117.AbsoluteWindowSize.Y) - 1 < v111 then
            return ;
        elseif v114 or v111 < v118 + v119 * 0.8 then
            local v120 = v114 and v112 > 500;
            if not l_canDragFullViewToBrief_0 or v120 and not v116 then
                if not l_GetFFlagPeekViewScrimLogging_0() then
                    v110.goTo(l_Closed_0);
                    return ;
                else
                    v110.goTo(l_Closed_0, nil, nil, {
                        dismissMethod = v22.dismissMethodEnum.swipe
                    });
                    return ;
                end;
            else
                v110.goTo(l_Brief_0);
                return ;
            end;
        end;
    elseif v110.viewType == l_Extended_0 then
        if not (v114 and v111 >= v118 + v119 * 0.8) or v112 > -1 then
            v110.goTo(l_Full_0);
            return ;
        end;
    elseif v113 or v118 + v119 * 0.2 < v111 then
        v110.goTo(l_Full_0);
        return ;
    else
        v110.goTo(l_Brief_0);
    end;
end;
v42.handleCurYFromSuperBriefToBrief = function(v121, v122, v123, v124, v125, v126)
    local l_canDragFullViewToBrief_1 = v121.props.canDragFullViewToBrief;
    local v128 = l_GetFFlagPeekViewMinimizeToSuperBrief_0() and v121.props.minimizeToSuperBrief;
    local v129 = v121.getFullViewY() - v123;
    if v121.viewType == l_Full_0 then
        if v126 or v122 < v123 + v129 * 0.8 then
            local v130 = v126 and v124 > 500;
            if not l_canDragFullViewToBrief_1 or v130 and not v128 then
                if not l_GetFFlagPeekViewScrimLogging_0() then
                    v121.goTo(l_Closed_0);
                    return ;
                else
                    v121.goTo(l_Closed_0, nil, nil, {
                        dismissMethod = v22.dismissMethodEnum.swipe
                    });
                    return ;
                end;
            else
                v121.goTo(l_SuperBrief_0);
                return ;
            end;
        else
            v121.goTo(l_Brief_0);
            return ;
        end;
    else
        if v121.viewType == l_Extended_0 then
            if not (v126 and v122 >= v123 + v129 * 0.8) or v124 > -1 then
                v121.goTo(l_Brief_0);
                return ;
            end;
        elseif v125 or v123 + v129 * 0.2 < v122 then
            v121.goTo(l_Brief_0);
            return ;
        else
            local v131 = v126 and v124 > 500;
            if not l_canDragFullViewToBrief_1 or v131 and not v128 then
                if not l_GetFFlagPeekViewScrimLogging_0() then
                    v121.goTo(l_Closed_0);
                else
                    v121.goTo(l_Closed_0, nil, nil, {
                        dismissMethod = v22.dismissMethodEnum.swipe
                    });
                    return ;
                end;
            else
                v121.goTo(l_SuperBrief_0);
                return ;
            end;
        end;
        return ;
    end;
end;
v42.handleCurYFromClosedToSuperBrief = function(v132, v133, v134, v135, v136, v137)
    local v138 = v134 - 0;
    local v139 = l_GetFFlagPeekViewMinimizeToSuperBrief_0() and v132.props.minimizeToSuperBrief;
    if v132.viewType == l_SuperBrief_0 then
        if not (v136 or v133 < v138 * 0.8) or v139 then
            v132.goTo(l_SuperBrief_0);
            return ;
        elseif not l_GetFFlagPeekViewScrimLogging_0() then
            v132.goTo(l_Closed_0);
            return ;
        else
            v132.goTo(l_Closed_0, nil, nil, {
                dismissMethod = v22.dismissMethodEnum.swipe
            });
            return ;
        end;
    elseif (v136 and v135 > 500 or not v137 and v138 * 0.8 >= v133) and not v139 then
        if not l_GetFFlagPeekViewScrimLogging_0() then
            v132.goTo(l_Closed_0);
            return ;
        else
            v132.goTo(l_Closed_0, nil, nil, {
                dismissMethod = v22.dismissMethodEnum.swipe
            });
            return ;
        end;
    else
        v132.goTo(l_SuperBrief_0);
        return ;
    end;
end;
v42.handleCurYFromClosedToBrief = function(v140, v141, v142, v143)
    local v144 = v140.getBriefViewY() - 0;
    if v140.viewType == l_Brief_0 then
        if v142 or v141 < 0 + v144 * 0.8 then
            if not l_GetFFlagPeekViewScrimLogging_0() then
                v140.goTo(l_Closed_0);
                return ;
            else
                v140.goTo(l_Closed_0, nil, nil, {
                    dismissMethod = v22.dismissMethodEnum.swipe
                });
                return ;
            end;
        else
            v140.goTo(l_Brief_0);
            return ;
        end;
    elseif v143 or 0 + v144 * 0.2 < v141 then
        v140.goTo(l_Brief_0);
        return ;
    elseif not l_GetFFlagPeekViewScrimLogging_0() then
        v140.goTo(l_Closed_0);
        return ;
    else
        v140.goTo(l_Closed_0, nil, nil, {
            dismissMethod = v22.dismissMethodEnum.swipe
        });
        return ;
    end;
end;
v42.adjustScrollingFramePosition = function(v145)
    local l_SelectedCoreObject_0 = l_GuiService_0.SelectedCoreObject;
    if not (not l_SelectedCoreObject_0 or not v145.props.contentFrameRef) and l_SelectedCoreObject_0:IsDescendantOf(v145.props.contentFrameRef.current) then
        local l_current_10 = v145.swipeScrollingFrameRef.current;
        if v145.viewType ~= l_Extended_0 and v145.viewType ~= l_Full_0 then
            l_current_10.CanvasPosition = Vector2.new(l_current_10.CanvasPosition.X, v17.isNotNil(v145.getViewSize(v145.viewType), "self.adjustScrollingFramePosition.viewSize").Offset);
            return ;
        else
            local v148 = l_SelectedCoreObject_0.AbsolutePosition.Y - v145.props.topBarHeight;
            local l_Y_11 = l_SelectedCoreObject_0.AbsoluteSize.Y;
            local l_Y_12 = l_current_10.AbsoluteWindowSize.Y;
            local v151 = l_Y_12 - (v148 + l_Y_11);
            local l_Y_13 = l_current_10.CanvasPosition.Y;
            if v151 < v145.props.bottomDockedContainerHeight then
                l_Y_13 = (l_Y_13 + v145.props.bottomDockedContainerHeight) - v151;
            elseif (v148 + l_Y_11) + (l_Y_13 - l_Y_12) < l_Y_12 - v145.props.bottomDockedContainerHeight then
                l_Y_13 = l_Y_12;
            end;
            l_current_10.CanvasPosition = Vector2.new(l_current_10.CanvasPosition.X, (math.max(0, (math.min(l_Y_13, (not not v32 and l_current_10.AbsoluteCanvasSize.Y or l_current_10.CanvasSize.Y.Offset) - l_current_10.AbsoluteWindowSize.Y)))));
            return ;
        end;
    else
        return ;
    end;
end;
v42.handleThumbstickInput = function(v153, v154, v155)
    local l_Position_0 = v154.Position;
    local v157 = v153.swipeScrollingFrameRef:getValue();
    if not (not v153.containerFrameRef:getValue() or not v157) then
        local v158 = v157.CanvasPosition.Y + (v155 * -l_GamepadUtils_0.normalizeStickByDeadzone(l_Position_0).Y) * 1000;
        if v153.getFullViewY() < v158 then
            v157.CanvasPosition = Vector2.new(0, v158);
        end;
    end;
end;
v42.renderWithStyle = function(v159, v160)
    local v161 = v159.props[v5.Children];
    if not (not l_GetFFlagEDPContextRedesign_0() or not v159.props.overlayDragger) then
        v161 = v7.Dictionary.join({
            Padding = v5.createElement("UIPadding", {
                PaddingTop = UDim.new(0, -25)
            })
        }, v161);
    end;
    local l_bottomDockedContainerHeight_1 = v159.props.bottomDockedContainerHeight;
    local l_bottomDockedContainerContent_0 = v159.props.bottomDockedContainerContent;
    local v164 = v159.props.thumbstickScrollEnabled and v159.state.scrollableViewType;
    local l_createFragment_0 = v5.createFragment;
    local v166 = {
        DropShadowBackground = v5.createElement("Frame", {
            ZIndex = 0,
            Visible = v159.props.showDropShadow,
            [v5.Ref] = v159.shadowRef
        }, {
            UIGradient = v5.createElement("UIGradient", {
                Rotation = 90,
                Color = ColorSequence.new({
                    ColorSequenceKeypoint.new(0, v160.Theme.DropShadow.Color),
                    ColorSequenceKeypoint.new(1, v160.Theme.DropShadow.Color)
                }),
                Transparency = NumberSequence.new({
                    NumberSequenceKeypoint.new(0, 1),
                    NumberSequenceKeypoint.new(1, 0.7)
                })
            })
        })
    };
    local l_createElement_0 = v5.createElement;
    local l_Frame_0 = l_Focusable_0.Frame;
    local v171 = {
        BackgroundTransparency = 1,
        ClipsDescendants = true,
        [v5.Ref] = v159.clipFrameRef,
        restorePreviousChildFocus = true,
        inputBindings = not not v164 and {
            ScrollPeekView = v8.Input.onStep(Enum.KeyCode.Thumbstick2, function(v169, v170)
                v159:handleThumbstickInput(v169, v170);
            end)
        } or nil
    };
    local v172 = {};
    local l_createElement_1 = v5.createElement;
    local v174 = if not v32 then v11.FitScrollingFrame else "ScrollingFrame";
    local v175 = {
        AutomaticCanvasSize = if not v32 then nil else Enum.AutomaticSize.Y,
        CanvasSize = if not v32 then nil else UDim2.fromScale(1, 0),
        Active = true,
        BackgroundTransparency = 1,
        ZIndex = 1,
        BorderSizePixel = 0,
        fitFields = if not v32 then {
            CanvasSize = v11.FitAxis.Height
        } else nil,
        ScrollBarThickness = 0,
        ClipsDescendants = false,
        ScrollingDirection = Enum.ScrollingDirection.Y,
        ElasticBehavior = v159.props.elasticBehavior,
        ScrollingEnabled = v159.props.isScrollingEnabled,
        [v5.Ref] = v159.swipeScrollingFrameRef,
        [v5.Change.CanvasPosition] = v159.onSwipeScrollingFrameCanvasPositionChanged,
        [v5.Change.AbsoluteWindowSize] = v159.onAbsoluteWindowSizeChanged,
        [v5.Change.AbsoluteSize] = if not l_GetFFlagEDPContextRedesign_0() then nil else v159.props.onScrollingFrameSizeChanged
    };
    local v178 = {
        UIListLayout = v5.createElement("UIListLayout", {
            Padding = UDim.new(0, 0),
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Top
        }),
        FillingArea = v5.createElement("Frame", {
            LayoutOrder = 1,
            BackgroundTransparency = 1,
            Active = false,
            [v5.Ref] = v159.fillingAreaRef
        }),
        BackgroundFrame = v5.createElement("Frame", {
            LayoutOrder = 2,
            ZIndex = 1,
            Size = UDim2.new(1, 0, 0, 0),
            Active = false
        }, {
            BackgroundImage = v5.createElement(l_ImageSetLabel_0, {
                Size = UDim2.new(1, 0, 0, 9999),
                BackgroundTransparency = 0,
                BorderSizePixel = 0,
                ScaleType = Enum.ScaleType.Slice,
                SliceCenter = v33,
                BackgroundColor3 = v160.Theme.BackgroundDefault.Color,
                Active = false
            })
        }),
        PeekHeader = v5.createElement("TextButton", {
            Text = "",
            LayoutOrder = 3,
            ZIndex = not l_GetFFlagEDPContextRedesign_0() and 2 or 3,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 25),
            [v5.Event.Activated] = v159.onPeekHeaderActivated,
            Active = if not not l_GetFFlagEDPContextRedesign_0() and v159.props.overlayDragger then v159.transitionPercent:map(function(v176)
                return v176 < 1;
            end) else nil
        }, {
            Dragger = if (not not l_GetFFlagHideDraggerPeekView_0() and v159.props.hideDraggerInSuperBrief) and v159.props.peekViewState == l_SuperBrief_0 then nil else v5.createElement(l_ImageSetLabel_0, {
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 36, 0, 36),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.new(0.5, 0, 0.5, 0),
                Image = v34,
                ImageColor3 = v160.Theme.UIEmphasis.Color,
                ImageTransparency = if not not l_GetFFlagEDPContextRedesign_0() and v159.props.overlayDragger then v159.transitionPercent:map(function(v177)
                    if v177 >= 0.9 then
                        return (v177 - 0.9) * 10;
                    else
                        return 0;
                    end;
                end) else v160.Theme.UIEmphasis.Transparency,
                Active = false
            })
        }),
        ContentFrame = v5.createElement(l_Focusable_0.Frame, {
            LayoutOrder = 4,
            ZIndex = 2,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            ClipsDescendants = false,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            [v5.Ref] = v159.props.contentFrameRef,
            restorePreviousChildFocus = true,
            onFocusGained = function()
                if v159.viewType == l_Brief_0 and v159.props.peekViewState ~= l_Full_0 then
                    v159.goTo(l_Full_0);
                end;
            end
        }, v161)
    };
    local v179 = false;
    if l_bottomDockedContainerHeight_1 > 0 then
        v179 = v5.createElement("Frame", {
            LayoutOrder = 5,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, l_bottomDockedContainerHeight_1),
            Active = false
        });
    end;
    v178.BottomContainerPlaceHolder = v179;
    v172.SwipeScrollingFrame = l_createElement_1(v174, v175, v178);
    l_createElement_1 = false;
    if l_bottomDockedContainerHeight_1 > 0 then
        l_createElement_1 = v5.createElement("Frame", {
            Active = true,
            ZIndex = 2,
            Size = UDim2.new(1, 0, 0, l_bottomDockedContainerHeight_1),
            BackgroundTransparency = 1,
            [v5.Ref] = v159.bottomContainerRef
        }, l_bottomDockedContainerContent_0);
    end;
    v172.BottomContainer = l_createElement_1;
    v166.ClipFrame = l_createElement_0(l_Frame_0, v171, v172);
    v166.InputBegan = v5.createElement(l_ExternalEventConnection_0, {
        event = l_UserInputService_0.InputBegan,
        callback = v159.inputBeganCallback
    });
    v166.InputEnded = v5.createElement(l_ExternalEventConnection_0, {
        event = l_UserInputService_0.InputEnded,
        callback = v159.inputEndedCallback
    });
    return l_createFragment_0(v166);
end;
v42.render = function(v180)
    return v180.withStyle(function(v181)
        if not l_GetFFlagPeekViewScrimEnabled_0() and not v180.props.scrimEnabled then
            return v5.createElement("Frame", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1,
                ClipsDescendants = false,
                [v5.Ref] = v180.containerFrameRef,
                [v5.Change.AbsoluteSize] = v180.onContainerFrameAbsoluteSizeChanged
            }, {
                if not v180.useReducedMotion then v180:renderWithStyle(v181) else v5.createElement("CanvasGroup", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1,
                    GroupTransparency = v180.state.canvasGroupTransparency
                }, {
                    v180:renderWithStyle(v181)
                })
            });
        else
            local v182 = if not v180.useReducedMotion then v180:renderWithStyle(v181) else v5.createElement("CanvasGroup", {
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1,
                GroupTransparency = v180.state.canvasGroupTransparency
            }, {
                v180:renderWithStyle(v181)
            });
            if not v180.props.hasScrim then
                return v5.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1,
                    ClipsDescendants = false,
                    [v5.Ref] = v180.containerFrameRef,
                    [v5.Change.AbsoluteSize] = v180.onContainerFrameAbsoluteSizeChanged
                }, v182);
            else
                return v5.createElement(v13, {
                    [v5.Ref] = v180.containerFrameRef,
                    onActivated = function()
                        if not v31 or not v180.isInGoToState then
                            if not l_GetFFlagPeekViewScrimLogging_0() then
                                v180.goTo(l_Closed_0);
                                return ;
                            else
                                v180.goTo(l_Closed_0, nil, nil, {
                                    dismissMethod = v22.dismissMethodEnum.scrimTap
                                });
                                return ;
                            end;
                        else
                            return ;
                        end;
                    end,
                    onSizeChanged = v180.onContainerFrameAbsoluteSizeChanged
                }, v182);
            end;
        end;
    end);
end;
v42.didMount = function(v183)
    v183.isMounted = true;
    if v183.props.closeSignal then
        v183.closeSignalConnection = v183.props.closeSignal:connect(function()
            if not v183.isInGoToState then
                v183.goTo(l_Closed_0, true, v183.useReducedMotion);
            end;
        end);
    end;
    local l_hidden_0 = v183.props.hidden;
    local l_mountAsFullView_0 = v183.props.mountAsFullView;
    local l_mountAnimation_0 = v183.props.mountAnimation;
    local v187 = if not l_GetFFlagEnablePeekViewStateOnMountParam_0() then nil else v183.props.stateOnMount;
    if not l_hidden_0 then
        if not l_mountAsFullView_0 then
            if v187 ~= nil then
                v183.goTo(v187, l_mountAnimation_0, v183.useReducedMotion);
            else
                v183.goTo(l_Brief_0, l_mountAnimation_0, v183.useReducedMotion);
            end;
        else
            v183.goTo(l_Full_0, l_mountAnimation_0, v183.useReducedMotion);
        end;
    end;
    v183:setState({
        lastInputGroup = l_getInputGroup_0(l_UserInputService_0:GetLastInputType())
    });
    l_UserInputService_0.LastInputTypeChanged:Connect(function(v188)
        v183:setState({
            lastInputGroup = l_getInputGroup_0(v188)
        });
    end);
end;
v42.isAnimating = function(v189)
    return v189.goToAnimationConnection ~= nil;
end;
v42.didUpdate = function(v190, v191, v192)
    if not (v192.absoluteWindowSizeX == v190.state.absoluteWindowSizeX) or v192.absoluteWindowSizeY ~= v190.state.absoluteWindowSizeY then
        v190.reconcileRbxInstances();
        if not v190:isAnimating() then
            v190.updateSwipeScrollingFrame();
        end;
    end;
    if v191.bottomDockedContainerHeight ~= v190.props.bottomDockedContainerHeight then
        v190.onContainerFrameAbsoluteSizeChanged();
    end;
    if v191.hidden == false and v190.props.hidden == true then
        v190.goTo(l_Hidden_0);
    elseif v191.hidden == true and v190.props.hidden == false then
        v190.goTo(l_Brief_0);
    end;
    local l_peekViewState_0 = v190.props.peekViewState;
    local l_isInGoToState_0 = v190.isInGoToState;
    if not (not ((l_peekViewState_0 ~= v191.peekViewState and v190.viewType == v191.peekViewState) and l_peekViewState_0 ~= l_Extended_0) or l_isInGoToState_0) then
        v190.goTo(v190.props.peekViewState);
    end;
end;
v42.willUnmount = function(v195)
    v195.isMounted = false;
    if v195.closeSignalConnection then
        v195.closeSignalConnection:disconnect();
        v195.closeSignalConnection = nil;
    end;
    if v195.goToAnimationConnection then
        v195.goToAnimationConnection:disconnect();
        v195.goToAnimationConnection = nil;
    end;
    if v195.selectedCoreObjectConnection then
        v195.selectedCoreObjectConnection:disconnect();
        v195.selectedCoreObjectConnection = nil;
    end;
end;
if l_GetFFlagPeekViewScrimEnabledIXP_0() then
    v42 = v21.connectUserLayer({
        "PlatformExcellence.QualityImprovement.App"
    }, function(v196, _)
        local v198 = v196["PlatformExcellence.QualityImprovement.App"];
        return {
            scrimEnabled = v198 and v198.peekViewScrimEnabled
        };
    end)(v42);
end;
return v10.connect(function(v199, _)
    return {
        topBarHeight = not not v199.TopBar and v199.TopBar.topBarHeight or 0
    };
end, nil)(v42);


local l_Symbol_0 = require(script.Parent.Parent.AppCommonLib).Symbol;
return {
    Hidden = l_Symbol_0.named("Hidden"),
    Closed = l_Symbol_0.named("Closed"),
    Brief = l_Symbol_0.named("Brief"),
    SuperBrief = l_Symbol_0.named("SuperBrief"),
    Full = l_Symbol_0.named("Full"),
    Extended = l_Symbol_0.named("Extended")
};


local l_Parent_0 = script:FindFirstAncestor("PeekView").Parent;
local v1 = require(l_Parent_0.Cryo);
local v2 = require(l_Parent_0.React);
local l_useRoactService_0 = require(l_Parent_0.RobloxAppHooks).useRoactService;
local l_useRouteName_0 = require(l_Parent_0.RoactUtils).Hooks.useRouteName;
local l_AppEventIngestService_0 = require(l_Parent_0.RoactServiceTags).AppEventIngestService;
local l_useStyle_0 = require(l_Parent_0.UIBlox).Core.Style.useStyle;
local v7 = require(script.Parent.PeekView);
local v8 = require(script.Parent.PeekViewState);
local l_GetFFlagPeekViewScrimLogging_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewScrimLogging;
local v10 = require(script.Parent.analytics.peekViewDismissedEvent);
local l_GetFFlagEDPContextRedesign_0 = require(l_Parent_0.SharedFlags).GetFFlagEDPContextRedesign;
return function(v12)
    local v13 = nil;
    local v14 = nil;
    if l_GetFFlagPeekViewScrimLogging_0() then
        v14 = l_useRouteName_0();
        v13 = l_useRoactService_0(l_AppEventIngestService_0);
    end;
    local v15 = l_useStyle_0();
    local l_onClosed_0 = v12.onClosed;
    local l_onViewStateChanged_0 = v12.onViewStateChanged;
    local v21 = v2.useCallback(function(v18, v19, v20)
        if not l_GetFFlagPeekViewScrimLogging_0() then
            if not (not (v18 == v8.Closed) or not l_onClosed_0) then
                l_onClosed_0();
            end;
        elseif v18 == v8.Closed then
            if l_onClosed_0 then
                l_onClosed_0();
            end;
            if not (not v20.dismissMethod or not v13) then
                v10.logEvent(v13, "PeekView", v1.Dictionary.join(v12.viewChangedEventMeta or {}, v20, {
                    page = v14
                }));
            end;
        end;
        if l_onViewStateChanged_0 then
            l_onViewStateChanged_0(v18, v19);
        end;
    end, if not l_GetFFlagPeekViewScrimLogging_0() then {
        l_onClosed_0,
        l_onViewStateChanged_0
    } else {
        l_onClosed_0,
        l_onViewStateChanged_0,
        v12.viewChangedEventMeta,
        v13,
        v14
    });
    local v22, v23 = v2.useBinding(0);
    local v24 = nil;
    local v25 = nil;
    local v26 = nil;
    local v27 = nil;
    local v28 = nil;
    if l_GetFFlagEDPContextRedesign_0() then
        local v29, v30 = v2.useBinding(0);
        v24 = v29;
        v25 = v30;
        v29, v30 = v2.useBinding(0);
        v26 = v29;
        v27 = v30;
        v28 = v2.joinBindings({
            position = v24,
            offset = v12.solidifyTopBarOffset,
            frameSize = v26
        });
    end;
    return v2.createElement("Frame", {
        Position = UDim2.fromOffset(0, 0),
        Size = UDim2.new(v12.viewWidth or UDim.new(1, 0), UDim.new(1, 0)),
        BackgroundTransparency = 1,
        BorderSizePixel = 0
    }, {
        PeekViewTopBar = v2.createElement("CanvasGroup", {
            Position = UDim2.new(0, 0, 0, 0),
            Size = UDim2.new(1, 0, 0, v12.topBarHeight),
            BackgroundColor3 = v15.Theme.BackgroundDefault.Color,
            Active = if not l_GetFFlagEDPContextRedesign_0() then nil else if v12.solidifyTopBarOffset then v28:map(function(v31)
                return v31.offset + v31.frameSize < v31.position;
            end) else false,
            BackgroundTransparency = if not l_GetFFlagEDPContextRedesign_0() then nil else if v12.solidifyTopBarOffset then v28:map(function(v32)
                if v32.offset + v32.frameSize < v32.position then
                    return 0;
                else
                    return 1;
                end;
            end) else 1,
            BorderSizePixel = if not l_GetFFlagEDPContextRedesign_0() then nil else 0,
            GroupTransparency = v22:map(function(v33)
                return 1 - v33;
            end),
            ZIndex = 2
        }, {
            PeekViewTopBarInner = v12.topBarSlot
        }),
        PeekViewContainer = v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            BackgroundTransparency = 1,
            ClipsDescendants = true
        }, {
            PeekView = v2.createElement(v7, {
                hasScrim = true,
                fullViewContentHeight = v12.fullViewContentHeight,
                briefViewContentHeight = v12.briefViewContentHeight,
                bottomDockedContainerHeight = v12.bottomDockedContainerHeight,
                bottomDockedContainerContent = {
                    PeekViewBottomBar = v12.bottomBarSlot
                },
                mountAsFullView = v12.mountAsFullView,
                mountAnimation = v12.mountAnimation,
                viewStateChanged = v21,
                briefToFullTransitionPercent = if not l_GetFFlagEDPContextRedesign_0() then v23 else if not l_GetFFlagEDPContextRedesign_0() then nil else function(v34)
                    v23(v34);
                    if v12.transitionPercentCallback then
                        v12.transitionPercentCallback(v34);
                    end;
                end,
                peekHeaderPositionYChange = if not l_GetFFlagEDPContextRedesign_0() then nil else v25,
                onScrollingFrameSizeChanged = if not l_GetFFlagEDPContextRedesign_0() then nil else if not l_GetFFlagEDPContextRedesign_0() then nil else function(v35)
                    v27(v35.AbsoluteSize.Y);
                end,
                overlayDragger = if not l_GetFFlagEDPContextRedesign_0() then nil else v12.overlayDragger
            }, {
                UIListLayout = v2.createElement("UIListLayout", {
                    Padding = UDim.new(0, 0),
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    VerticalAlignment = Enum.VerticalAlignment.Top
                }),
                Content = v12.contentSlot
            })
        })
    });
end;


local l_Parent_0 = script:FindFirstAncestor("PeekView").Parent;
local v1 = require(l_Parent_0.React);
local l_useDesignTokens_0 = require(l_Parent_0.Style).useDesignTokens;
local l_GetFFlagPeekViewScrimColorOff_0 = require(l_Parent_0.SharedFlags).GetFFlagPeekViewScrimColorOff;
return (v1.forwardRef(function(v4, v5)
    local v6 = l_useDesignTokens_0();
    return v1.createElement("TextButton", {
        ref = v5,
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundTransparency = v6.Semantic.Color.Common.Overlay.Transparency,
        BackgroundColor3 = v6.Semantic.Color.Common.Overlay.Color3,
        ClipsDescendants = false,
        Text = "",
        AutoButtonColor = not l_GetFFlagPeekViewScrimColorOff_0() and true or false,
        [v1.Event.Activated] = v4.onActivated,
        [v1.Change.AbsoluteSize] = v4.onSizeChanged
    }, v4.children);
end));


local l_Parent_0 = script:FindFirstAncestor("PeekView").Parent;
local v1 = require(l_Parent_0.t);
local l_mutedError_0 = require(l_Parent_0.Loggers).mutedError;
local v3 = v1.union(v1.strictInterface({
    page = v1.string,
    dismissMethod = v1.string
}), (v1.strictInterface({
    page = v1.string,
    dismissMethod = v1.string,
    locale = v1.optional(v1.string),
    universeId = v1.string,
    source = v1.string,
    index = v1.number
})));
return {
    dismissMethodEnum = {
        topBarTap = "topBarTap",
        scrimTap = "scrimTap",
        swipe = "swipe",
        handleTap = "handleTap"
    },
    logEvent = function(v4, v5, v6)
        local v7, v8 = v3(v6);
        if not v7 then
            l_mutedError_0(v8);
        end;
        v4:sendEventDeferred(v5, "uiPeekViewDismissed", v6);
    end
};


return {
    analytics = {
        peekViewDismissedEvent = require(script.analytics.peekViewDismissedEvent)
    },
    ["jest.config"] = script["jest.config"],
    PeekViewState = require(script.PeekViewState),
    PeekView = require(script.PeekView),
    PeekViewWithTopBar = require(script.PeekViewWithTopBar)
};


local v0 = require(script.Parent.Parent.Dev.JestConfigs);
return {
    displayName = "PeekView",
    setupFilesAfterEnv = {
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


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


local v0 = require(script.PermissionsProtocol);
local _ = require(script.PermissionsProtocolTypes);
return {
    PermissionsProtocol = v0
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local l_withStyle_0 = v3.Style.withStyle;
local l_withLocalization_0 = require(l_Parent_0.Localization).withLocalization;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local l_PartialPageModal_0 = v3.App.Dialog.Modal.PartialPageModal;
local l_Checkbox_0 = v3.App.InputButton.Checkbox;
local v9 = require(l_Parent_0.AuthCommon);
local l_TextBoxStateWrapper_0 = v9.Components.TextBoxStateWrapper;
local l_PhoneNumberTextBox_0 = v9.Components.PhoneNumberTextBox;
local l_LinkButton_0 = v3.App.Button.LinkButton;
local v13 = require(l_script_FirstAncestor_0.Utils.mergeProps);
local v14 = {
    alwaysShowLegalText = false,
    requireLegalTextCheckbox = false,
    buttonKey = "Feature.VerificationUpsell.Action.Continue",
    legalTextKey = "Feature.VerificationUpsell.Description.ShortCodeLegalDisclaimerUA"
};
local function v21(v15, v16, v17, v18, v19)
    local v20 = {
        {
            buttonType = l_ButtonType_0.PrimarySystem,
            props = {
                onActivated = v16,
                text = v15,
                isDisabled = v17
            }
        }
    };
    if v18 and v18 ~= "" then
        table.insert(v20, 1, {
            buttonType = l_ButtonType_0.Secondary,
            props = {
                onActivated = v19,
                text = v18,
                isDisabled = false
            }
        });
    end;
    return {
        buttonHeight = 48,
        forcedFillDirection = Enum.FillDirection.Vertical,
        buttons = v20
    };
end;
return function(v22)
    local v23 = v13(v14, v22);
    local function v24()
    end;
    local v25, v26 = v2.useState(false);
    local v27 = l_PartialPageModal_0:getMiddleContentWidth(v23.screenSize.X);
    local v28 = {
        phoneNumberKey = "Feature.VerificationUpsell.Label.PhoneNumber",
        phonePrivacyDisclaimerKey = "Feature.VerificationUpsell.Description.PhoneNumberNeverPublic",
        termsOfUseKey = "Feature.VerificationUpsell.Action.TermsOfUse",
        privacyPolicyKey = "Feature.VerificationUpsell.Action.PrivacyPolicy",
        titleKey = v23.titleKey,
        descriptionKey = v23.descriptionKey,
        buttonKey = v23.buttonKey,
        legalTextKey = v23.legalTextKey
    };
    if v23.extraButtonKey and v23.extraButtonKey ~= "" then
        v28.extraButtonKey = v23.extraButtonKey;
    end;
    return l_withStyle_0(function(v29)
        return l_withLocalization_0(v28)(function(v30)
            local l_BaseSize_0 = v29.Font.BaseSize;
            local l_RelativeSize_0 = v29.Font.Body.RelativeSize;
            local l_RelativeSize_1 = v29.Font.CaptionHeader.RelativeSize;
            local v34 = v23.isDisabled or v23.requireLegalTextCheckbox and not v25;
            local l_createElement_0 = v2.createElement;
            local l_l_PartialPageModal_0_0 = l_PartialPageModal_0;
            local v37 = {
                title = v30.titleKey,
                screenSize = v23.screenSize,
                buttonStackProps = v21(v30.buttonKey, v23.onSetPhoneNumber, v34, v30.extraButtonKey, v23.onExtraButtonClick),
                onCloseClicked = v23.onClose,
                position = not not v23.isKeyboardShowing and UDim2.new(0.5, 0, 1, -v23.keyboardHeight) or nil,
                anchorPoint = not not v23.isKeyboardShowing and Vector2.new(0.5, 1) or nil
            };
            local v38 = {};
            local l_createElement_1 = v2.createElement;
            local v40 = "Frame";
            local v41 = {
                BackgroundTransparency = 1,
                AutomaticSize = Enum.AutomaticSize.Y,
                Size = UDim2.new(1, 0, 0, 0)
            };
            local v42 = {
                ContentPadding = v2.createElement("UIPadding", {
                    PaddingTop = UDim.new(0, 12),
                    PaddingBottom = UDim.new(0, 24)
                }),
                ListLayout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    Padding = UDim.new(0, 6)
                }),
                BodyText = v2.createElement("TextLabel", {
                    LayoutOrder = 0,
                    BackgroundTransparency = 1,
                    Text = v30.descriptionKey,
                    TextSize = l_BaseSize_0,
                    TextColor3 = v29.Theme.TextDefault.Color,
                    TextTransparency = v29.Theme.TextDefault.Transparency,
                    Font = v29.Font.Body.Font,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextWrapped = true,
                    Size = UDim2.new(0, v27, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                }),
                PhoneInput = v2.createElement(l_TextBoxStateWrapper_0, {
                    ChildClass = l_PhoneNumberTextBox_0,
                    ErrorState = v23.errorMessage ~= "",
                    ErrorText = v23.errorMessage,
                    Size = UDim2.new(1, 0, 0, 36),
                    LayoutOrder = 1,
                    ChildProps = {
                        CountryCode = v23.countryCode,
                        SetCountryCode = v23.setCountryCode,
                        Text = v23.phoneNumber,
                        PlaceholderText = v30.phoneNumberKey,
                        Font = v29.Font.Body.Font,
                        TextSize = l_BaseSize_0 * l_RelativeSize_0,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        Color = v29.Theme.BackgroundUIContrast.Color,
                        Transparency = v29.Theme.BackgroundUIContrast.Transparency,
                        TextColor = v29.Theme.TextDefault.Color,
                        PlaceholderColor = v29.Theme.UIDefault.Color,
                        TextTransparency = v29.Theme.TextDefault.Transparency,
                        ClearTextOnFocus = false,
                        PaddingX = 12,
                        TextInputTypeOverride = not not v23.usePhoneNumberTextType and Enum.TextInputType.Phone or Enum.TextInputType.Number,
                        onChangeText = v23.onPhoneNumberTextChange,
                        onFocused = v23.onPhoneInputFocus,
                        onFocusLost = v24,
                        phoneCountryCodeSelectorCallback = v23.onCountryCodeSelectorClick
                    }
                }),
                PrivacyText = v2.createElement("TextLabel", {
                    LayoutOrder = 2,
                    BackgroundTransparency = 1,
                    Text = v30.phonePrivacyDisclaimerKey,
                    TextSize = l_BaseSize_0 * l_RelativeSize_1,
                    TextColor3 = v29.Theme.TextEmphasis.Color,
                    TextTransparency = v29.Theme.TextEmphasis.Transparency,
                    Font = v29.Font.Body.Font,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextWrapped = true,
                    Size = UDim2.new(0, v27, 0, 24)
                })
            };
            local v43;
            if not v23.requireLegalTextCheckbox then
                if not v23.alwaysShowLegalText then
                    v43 = false;
                    if not (v23.countryCode.prefix == "1") then
                        goto label0;
                    end;
                end;
                v43 = v2.createElement("TextLabel", {
                    LayoutOrder = 3,
                    BackgroundTransparency = 1,
                    Text = v30.legalTextKey,
                    TextSize = l_BaseSize_0 * l_RelativeSize_1,
                    TextColor3 = v29.Theme.TextDefault.Color,
                    TextTransparency = v29.Theme.TextDefault.Transparency,
                    Font = v29.Font.Body.Font,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextWrapped = true,
                    Size = UDim2.new(0, v27, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                });
            else
                v43 = v2.createElement("Frame", {
                    LayoutOrder = 3,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(0, v27, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                }, {
                    UIListLayout = v2.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        Padding = UDim.new(0, 6)
                    }),
                    LegalCheckbox = v2.createElement(l_Checkbox_0, {
                        onActivated = v26,
                        isSelected = v25,
                        text = ""
                    }),
                    LegalText = v2.createElement("TextLabel", {
                        BackgroundTransparency = 1,
                        Text = v30.legalTextKey,
                        TextSize = l_BaseSize_0 * l_RelativeSize_1,
                        TextColor3 = v29.Theme.TextDefault.Color,
                        TextTransparency = v29.Theme.TextDefault.Transparency,
                        Font = v29.Font.Body.Font,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        TextWrapped = true,
                        Size = UDim2.new(1, -32, 0, 0),
                        AutomaticSize = Enum.AutomaticSize.Y
                    })
                });
            end;
            ::label0::;
            v42.LegalTextContainer = v43;
            v43 = false;
            if v23.countryCode.prefix == "1" then
                v43 = v2.createElement("Frame", {
                    LayoutOrder = 4,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(1, 0, 0, 0),
                    AutomaticSize = Enum.AutomaticSize.Y
                }, {
                    UIListLayout = v2.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        Padding = UDim.new(0, 5)
                    }),
                    TermsOfUseButton = v2.createElement(l_LinkButton_0, {
                        text = v30.termsOfUseKey,
                        onActivated = v23.onTermsOfUseClick,
                        layoutOrder = 5,
                        fontStyle = "CaptionBody",
                        size = UDim2.fromScale(0.2, 0.2)
                    }),
                    TextButtonDivider = v2.createElement("TextLabel", {
                        LayoutOrder = 6,
                        BackgroundTransparency = 1,
                        Text = "-",
                        TextSize = l_BaseSize_0 * l_RelativeSize_1,
                        TextColor3 = v29.Theme.TextDefault.Color,
                        TextTransparency = v29.Theme.TextDefault.Transparency,
                        Font = v29.Font.Body.Font,
                        TextXAlignment = Enum.TextXAlignment.Center,
                        TextWrapped = true,
                        AutomaticSize = Enum.AutomaticSize.XY
                    }),
                    PrivacyPolicyButton = v2.createElement(l_LinkButton_0, {
                        text = v30.privacyPolicyKey,
                        onActivated = v23.onPrivacyPolicyClick,
                        layoutOrder = 7,
                        fontStyle = "CaptionBody"
                    })
                });
            end;
            v42.LegalButtonsContainer = v43;
            v38.Middle = l_createElement_1(v40, v41, v42);
            return l_createElement_0(l_l_PartialPageModal_0_0, v37, v38);
        end);
    end);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local l_useStyle_0 = v3.Core.Style.useStyle;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local l_PartialPageModal_0 = v3.App.Dialog.Modal.PartialPageModal;
local v8 = require(l_script_FirstAncestor_0.Utils.mergeProps);
local function v9()
end;
local v10 = {
    onClose = v9,
    isButtonDisabled = false,
    onExtraButtonClick = v9,
    isExtraButtonDisabled = false
};
local function v18(v11, v12, v13, v14, v15, v16)
    local v17 = {
        {
            buttonType = l_ButtonType_0.PrimarySystem,
            props = {
                onActivated = v12,
                text = v11,
                isDisabled = v13
            }
        }
    };
    if v14 and v14 ~= "" then
        table.insert(v17, 1, {
            buttonType = l_ButtonType_0.Secondary,
            props = {
                onActivated = v15,
                text = v14,
                isDisabled = v16
            }
        });
    end;
    return {
        buttonHeight = 48,
        forcedFillDirection = Enum.FillDirection.Vertical,
        buttons = v17
    };
end;
return function(v19)
    local v20 = v8(v10, v19);
    local v21 = l_PartialPageModal_0:getMiddleContentWidth(v20.screenSize.X);
    local v22 = {
        titleKey = v20.titleKey,
        descriptionKey = v20.descriptionKey,
        buttonKey = v20.buttonKey
    };
    if v20.extraButtonKey and v20.extraButtonKey ~= "" then
        v22.extraButtonKey = v20.extraButtonKey;
    end;
    local v23 = l_useStyle_0();
    local v24 = l_useLocalization_0(v22);
    v24 = {
        titleKey = "Before you leave",
        descriptionKey = "This experience would be even more exciting with Voice Chat turned on. Unlock now before your next session.",
        buttonKey = "Unlock voice chat",
        extraButtonKey = "Leave experience"
    };
    return v2.createElement(l_PartialPageModal_0, {
        title = v24.titleKey,
        screenSize = v20.screenSize,
        buttonStackProps = v18(v24.buttonKey, v20.onButtonClick, v20.isButtonDisabled, v24.extraButtonKey, v20.onExtraButtonClick, v20.isExtraButtonDisabled),
        onCloseClicked = v20.onClose
    }, {
        Middle = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            Size = UDim2.new(1, 0, 0, 0)
        }, {
            ContentPadding = v2.createElement("UIPadding", {
                PaddingTop = UDim.new(0, 12),
                PaddingBottom = UDim.new(0, 24)
            }),
            ListLayout = v2.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                Padding = UDim.new(0, 6)
            }),
            BodyText = v2.createElement("TextLabel", {
                LayoutOrder = 0,
                BackgroundTransparency = 1,
                Text = v24.descriptionKey,
                TextSize = v23.Font.BaseSize,
                TextColor3 = v23.Theme.TextDefault.Color,
                TextTransparency = v23.Theme.TextDefault.Transparency,
                Font = v23.Font.Body.Font,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextWrapped = true,
                Size = UDim2.new(0, v21, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                RichText = true
            })
        })
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_IXPService_0 = game:GetService("IXPService");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v5 = require(l_Parent_0.React);
local l_StyleProviderWithDefaultTheme_0 = require(l_Parent_0.Style).StyleProviderWithDefaultTheme;
local v7 = require(l_script_FirstAncestor_0.Http.openWebview);
local v8 = require(l_Parent_0.RoactRodux);
local l_FetchingStatus_0 = require(l_Parent_0.Http).Reducers.FetchingStatus;
local l_RoactAnalytics_0 = require(l_Parent_0.RoactServiceTags).RoactAnalytics;
local l_RoactNetworking_0 = require(l_Parent_0.RoactServiceTags).RoactNetworking;
local l_Analytics_0 = require(l_Parent_0.Analytics).Analytics;
local l_requestInternalWrapper_0 = require(l_Parent_0.Http).NetworkLayers.requestInternalWrapper;
local l_RoactServices_0 = require(l_Parent_0.RoactServices).RoactServices;
local v15 = require(l_script_FirstAncestor_0.Components.VoicePhoneVerificationUpsellOverlayWrapper);
local l_ProviderContainer_0 = require(l_Parent_0.RoactUtils).Components.ProviderContainer;
local v17 = require(l_Parent_0.RoactAppExperiment);
local l_RoactAppPolicy_0 = require(l_Parent_0.UniversalAppPolicy).RoactAppPolicy;
local l_AppFeaturePolicies_0 = require(l_Parent_0.UniversalAppPolicy).AppFeaturePolicies;
local l_Localization_0 = require(l_Parent_0.RobloxAppLocales).Localization;
local l_LocalizationProvider_0 = require(l_Parent_0.Localization).LocalizationProvider;
local v22 = require(l_Parent_0.Rodux);
local l_CountryCodeList_0 = require(l_Parent_0.AuthCommon).Reducers.CountryCodeList;
local v24 = require(l_Parent_0.Cryo);
local l_ChallengeRequestWrapper_0 = require(l_Parent_0.GenericChallenges).Middleware.ChallengeRequestWrapper;
return function(v26)
    local v29 = v22.Store.new(v22.combineReducers({
        CountryCodeList = l_CountryCodeList_0,
        FetchingStatus = l_FetchingStatus_0,
        ScreenSize = function(_, _)
            return Vector2.new(400, 400);
        end
    }), nil, {
        v22.thunkMiddleware
    });
    local v30 = {};
    table.insert(v30, {
        class = l_StyleProviderWithDefaultTheme_0,
        props = {
            withDarkTheme = true
        }
    });
    table.insert(v30, {
        class = v8.StoreProvider,
        props = {
            store = v29
        }
    });
    table.insert(v30, {
        class = l_LocalizationProvider_0,
        props = {
            localization = l_Localization_0.new(l_LocalizationService_0.RobloxLocaleId)
        }
    });
    table.insert(v30, {
        class = v17.Provider,
        props = {
            value = l_IXPService_0
        }
    });
    table.insert(v30, {
        class = l_RoactAppPolicy_0.Provider,
        props = {
            policy = {
                l_AppFeaturePolicies_0
            }
        }
    });
    table.insert(v30, {
        class = l_RoactServices_0.ServiceProvider,
        props = {
            services = {
                [l_RoactAnalytics_0] = l_Analytics_0.new(),
                [l_RoactNetworking_0] = l_ChallengeRequestWrapper_0(l_requestInternalWrapper_0(l_HttpService_0))
            }
        }
    });
    return v5.createElement(l_ProviderContainer_0, {
        providers = v30
    }, {
        PhoneUpsell = v5.createElement(v15, (v24.Dictionary.join(v26, {
            showWebpage = v7
        })))
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Cryo);
local l_OpenModal_0 = require(l_Parent_0.NotificationModalsManager).OpenModal;
local l_CloseModal_0 = require(l_Parent_0.NotificationModalsManager).CloseModal;
local v5 = require(l_script_FirstAncestor_0.Components.InGameContainer);
return {
    openPhoneUpsell = function(v6)
        l_OpenModal_0("PHONE_UPSELL_KEY", v5, {
            Props = v2.Dictionary.join(v6, {
                closeUpsell = function()
                    l_CloseModal_0("PHONE_UPSELL_KEY");
                end
            })
        });
    end
};


local l_Parent_0 = script:FindFirstAncestor("PhoneUpsell").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_Colors_0 = v2.App.Style.Colors;
return function(v5)
    local v6 = l_useStyle_0();
    return v1.createElement("Frame", {
        BackgroundTransparency = 0.3,
        BackgroundColor3 = l_Colors_0.Black,
        Size = UDim2.new(1, 0, 1, 0)
    }, {
        MiddleContent = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            ListLayout = v1.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, 24)
            }),
            Image = v5.image,
            Padding = v1.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, v6.Tokens.Global.Size_300),
                PaddingRight = UDim.new(0, v6.Tokens.Global.Size_300)
            }),
            VerifyingText = v1.createElement("TextLabel", {
                AutomaticSize = Enum.AutomaticSize.XY,
                TextSize = v6.Font.BaseSize * v6.Font.Header1.RelativeSize,
                TextColor3 = l_Colors_0.White,
                Text = v5.text,
                Font = v6.Font.Header1.Font,
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                TextWrapped = true
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_CloseCentralOverlay_0 = require(l_Parent_0.CentralOverlay).Thunks.CloseCentralOverlay;
local v4 = require(l_script_FirstAncestor_0.Components.PhoneVerificationUpsellOverlay);
local v5 = require(l_script_FirstAncestor_0.Components.PhoneVerificationStatusOverlay);
local v6 = require(l_Parent_0.Cryo);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_useDispatch_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useDispatch;
local v9 = require(l_script_FirstAncestor_0.Utils.mergeProps);
local v10 = require(l_Parent_0.UIBlox);
local l_Images_0 = v10.App.ImageSet.Images;
local l_ImageSetLabel_0 = v10.Core.ImageSet.ImageSetLabel;
local v13 = require(l_script_FirstAncestor_0.Flags.FFlagFixUpsellVerificationToNavigateToOverlays);
local l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0 = require(l_Parent_0.SharedFlags).GetFFlagAbstractPhoneUpsellFromCentralOverlay;
local v15 = {
    onSuccess = function()
    end,
    closeUpsell = function()
    end
};
return function(v16)
    local v17 = v9(v15, v16);
    local v18 = l_useDispatch_0();
    local v19 = not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() and function()
        return v18(l_CloseCentralOverlay_0());
    end or nil;
    local v20, v21 = v2.useState(false);
    return v2.createElement(v2.Fragment, nil, {
        PhoneVerificationUpsellOverlay = v2.createElement(v4, v6.Dictionary.join(v17, {
            onSuccess = function()
                v21(true);
                task.delay(3, function()
                    if not v13 then
                        v17.onSuccess();
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v19 then
                                v19();
                            end;
                            return ;
                        else
                            v17.closeUpsell();
                            return ;
                        end;
                    else
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v19 then
                                v19();
                            end;
                        else
                            v17.closeUpsell();
                        end;
                        v17.onSuccess();
                        return ;
                    end;
                end);
            end
        })),
        SuccessOverlay = v20 and v2.createElement(v5, {
            image = v2.createElement(l_ImageSetLabel_0, {
                Size = UDim2.fromOffset(40, 40),
                Image = l_Images_0["icons/status/success_large"],
                BackgroundTransparency = 1
            }),
            text = l_useLocalization_0({
                verifySuccessKey = "Feature.VerificationUpsell.Heading.VerifiedSuccessfully.V2"
            }).verifySuccessKey
        })
    });
end;


return {
    Entry = "entry",
    AddPhone = "addPhone",
    VerifyPhone = "verifyPhone",
    Success = "verifyPhoneSuccess"
};


local l_Parent_0 = script:FindFirstAncestor("PhoneUpsell").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_TextInputBoxWithBorder_0 = require(l_Parent_0.AuthCommon).Components.TextInputBoxWithBorder;
local l_PartialPageModal_0 = v2.App.Dialog.Modal.PartialPageModal;
local l_LinkButton_0 = v2.App.Button.LinkButton;
local l_GetFFlagAddEntryViewToPhoneVerification_0 = require(l_Parent_0.SharedFlags).GetFFlagAddEntryViewToPhoneVerification;
return function(v10)
    local v11 = l_useStyle_0();
    local v12 = {
        titleKey = "Feature.VerificationUpsell.Heading.VerifyYourPhone",
        verificationCodeKey = "Feature.VerificationUpsell.Heading.VerificationCode",
        placeholderKey = "Feature.VerificationUpsell.Label.SixDigitCode",
        descriptionKey = "Feature.VerificationUpsell.Label.EnterCode",
        buttonKey = "Feature.VerificationUpsell.Action.ResendCode",
        buttonDisabledKey = "Feature.VerificationUpsell.Action.CodeResent",
        changePhoneNumberKey = "Feature.VerificationUpsell.Action.ChangePhoneNumber"
    };
    if not (not l_GetFFlagAddEntryViewToPhoneVerification_0() or not v10.extraButtonKey) and v10.extraButtonKey ~= "" then
        v12.extraButtonKey = v10.extraButtonKey;
    end;
    local v13 = l_useLocalization_0(v12);
    local v14, v15 = v1.useState(false);
    local v16, v17 = v1.useState(0);
    local function v30(v18, v19, v20, v21, v22, v23)
        local function v27()
            v21();
            v15(true);
            v17(v20);
            local v24 = tick();
            local function v25()
                local v26 = v20 - (tick() - v24);
                if v26 > 0 then
                    v17((math.round(v26)));
                    task.delay(1, v25);
                    return ;
                else
                    v17(0);
                    v15(false);
                    return ;
                end;
            end;
            v25();
        end;
        local function _()
            if not v14 then
                return v18;
            else
                return v19 .. " (" .. v16 .. ")";
            end;
        end;
        local v29 = {
            {
                buttonType = l_ButtonType_0.PrimarySystem,
                props = {
                    onActivated = v27,
                    text = if not v14 then v18 else v19 .. " (" .. v16 .. ")",
                    isDisabled = v14
                }
            }
        };
        if not ((not l_GetFFlagAddEntryViewToPhoneVerification_0() or not v23) or not v22) and v22 ~= "" then
            table.insert(v29, 1, {
                buttonType = l_ButtonType_0.Secondary,
                props = {
                    onActivated = v23,
                    text = v22,
                    isDisabled = false
                }
            });
        end;
        return {
            buttonHeight = 48,
            forcedFillDirection = Enum.FillDirection.Vertical,
            buttons = v29
        };
    end;
    local function _(v31)
        return v31:gsub("{phoneNumber}", "+" .. v10.prefix .. v10.phoneNumber);
    end;
    return v1.createElement(l_PartialPageModal_0, {
        title = v13.titleKey,
        screenSize = v10.screenSize,
        buttonStackProps = v30(v13.buttonKey, v13.buttonDisabledKey, 10, v10.onResendPhoneCode, v13.extraButtonKey, v10.onExtraButtonClick),
        onCloseClicked = v10.onClose,
        position = not not v10.isKeyboardShowing and UDim2.new(0.5, 0, 1, -v10.keyboardHeight) or nil,
        anchorPoint = not not v10.isKeyboardShowing and Vector2.new(0.5, 1) or nil
    }, {
        Middle = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y,
            Size = UDim2.new(1, 0, 0, 0)
        }, {
            ContentPadding = v1.createElement("UIPadding", {
                PaddingTop = UDim.new(0, 24),
                PaddingBottom = UDim.new(0, 24)
            }),
            ListLayout = v1.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                Padding = UDim.new(0, 12)
            }),
            BodyText = v1.createElement("TextLabel", {
                LayoutOrder = 1,
                BackgroundTransparency = 1,
                Text = v13.descriptionKey:gsub("{phoneNumber}", "+" .. v10.prefix .. v10.phoneNumber),
                TextSize = v11.Font.BaseSize,
                TextColor3 = v11.Theme.TextDefault.Color,
                TextTransparency = v11.Theme.TextDefault.Transparency,
                Font = v11.Font.Body.Font,
                TextXAlignment = Enum.TextXAlignment.Left,
                AutomaticSize = Enum.AutomaticSize.Y,
                TextWrapped = true,
                Size = UDim2.new(0, l_PartialPageModal_0:getMiddleContentWidth(v10.screenSize.X), 0, 0)
            }),
            TextBox = v1.createElement(l_TextInputBoxWithBorder_0, {
                text = v10.code,
                textInputType = not not v10.useOTPInputType and Enum.TextInputType.OneTimePassword or Enum.TextInputType.Number,
                textInputHeight = 36,
                layoutOrder = 2,
                placeholderText = v13.placeholderKey,
                errorText = v10.errorMessage,
                onChangeTextCallback = v10.onCodeTextChange,
                Size = UDim2.new(1, 0, 0, 0),
                onFocused = v10.onCodeInputFocus
            }),
            ChangePhoneButton = v1.createElement(l_LinkButton_0, {
                text = v13.changePhoneNumberKey,
                onActivated = v10.returnToAddPhone,
                layoutOrder = 3,
                fontStyle = "CaptionBody",
                minPaddingX = 0,
                minPaddingY = 0
            })
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.React);
local l_RoactNetworking_0 = require(l_Parent_0.RoactServiceTags).RoactNetworking;
local _ = require(l_Parent_0.LuauPolyfill);
local l_CloseCentralOverlay_0 = require(l_Parent_0.CentralOverlay).Thunks.CloseCentralOverlay;
local l_PostUserOptIn_0 = require(l_Parent_0.VoiceChat).PostUserOptIn;
local v8 = require(l_script_FirstAncestor_0.Components.PhoneVerificationUpsellOverlay);
local v9 = require(l_script_FirstAncestor_0.Components.PhoneVerificationStatusOverlay);
local v10 = require(l_Parent_0.Cryo);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_useDispatch_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useDispatch;
local l_useRoactService_0 = require(l_Parent_0.RobloxAppHooks).useRoactService;
local l_useAppPolicy_0 = require(l_Parent_0.UniversalAppPolicy).useAppPolicy;
local v15 = require(l_script_FirstAncestor_0.Utils.mergeProps);
local v16 = require(l_Parent_0.UIBlox);
local l_Images_0 = v16.App.ImageSet.Images;
local l_ImageSetLabel_0 = v16.Core.ImageSet.ImageSetLabel;
local v19 = require(l_CorePackages_0.Logging);
local v20 = require(l_script_FirstAncestor_0.Flags.FFlagFixUpsellVerificationToNavigateToOverlays);
local l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0 = require(l_Parent_0.SharedFlags).GetFFlagAbstractPhoneUpsellFromCentralOverlay;
local v22 = {
    onSuccess = function()
    end,
    closeUpsell = function()
    end,
    addPhoneTitleKey = "Feature.VerificationUpsell.Action.AddPhoneVoice",
    addPhoneDescriptionKey = "Feature.VerificationUpsell.Description.AddPhoneBodyVoice"
};
return function(v23)
    local v24 = v15(v22, v23);
    local v25 = l_useDispatch_0();
    local v26 = not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() and function()
        return v25(l_CloseCentralOverlay_0());
    end or nil;
    local v27 = l_useRoactService_0(l_RoactNetworking_0);
    local v28, v29 = v3.useState(false);
    local v30, v31 = v3.useState(false);
    local v33 = l_useAppPolicy_0(function(v32)
        return v32.RequireExplicitVoiceConsent();
    end);
    local v34 = v3.createElement(l_ImageSetLabel_0, {
        Size = UDim2.fromOffset(40, 40),
        Image = l_Images_0["icons/status/success_large"],
        BackgroundTransparency = 1
    });
    local function v36()
        l_PostUserOptIn_0(v27, true, false):andThen(function(v35)
            if not v35 then
                v31(true);
                task.delay(5, function()
                    if not v20 then
                        v24.onSuccess();
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v26 then
                                v26();
                            end;
                            return ;
                        else
                            v24.closeUpsell();
                            return ;
                        end;
                    else
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v26 then
                                v26();
                            end;
                        else
                            v24.closeUpsell();
                        end;
                        v24.onSuccess();
                        return ;
                    end;
                end);
                v19.warn("Error getting UserOptIn. " .. tostring(v35));
                return ;
            else
                v29(true);
                task.delay(3, function()
                    if not v20 then
                        v24.onSuccess();
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v26 then
                                v26();
                            end;
                            return ;
                        else
                            v24.closeUpsell();
                            return ;
                        end;
                    else
                        if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                            if v26 then
                                v26();
                            end;
                        else
                            v24.closeUpsell();
                        end;
                        v24.onSuccess();
                        return ;
                    end;
                end);
                return ;
            end;
        end):catch(function()
            v31(true);
            task.delay(5, function()
                if not v20 then
                    v24.onSuccess();
                    if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                        if v26 then
                            v26();
                        end;
                        return ;
                    else
                        v24.closeUpsell();
                        return ;
                    end;
                else
                    if not l_GetFFlagAbstractPhoneUpsellFromCentralOverlay_0() then
                        if v26 then
                            v26();
                        end;
                    else
                        v24.closeUpsell();
                    end;
                    v24.onSuccess();
                    return ;
                end;
            end);
            v19.warn("Exception posting PostUserOptIn");
        end);
    end;
    local v37 = l_useLocalization_0({
        verifySuccessKey = "Feature.VerificationUpsell.Heading.VoiceChatEnabledMobile",
        voiceErrorKey = "Feature.VerificationUpsell.Heading.VoiceChatError"
    });
    return v3.createElement(v3.Fragment, nil, {
        PhoneVerificationUpsellOverlay = v3.createElement(v8, v10.Dictionary.join(v24, {
            onSuccess = v36,
            addPhoneTitleKey = v24.addPhoneTitleKey,
            addPhoneDescriptionKey = v24.addPhoneDescriptionKey,
            addPhoneButtonKey = "Feature.VerificationUpsell.Action.EnableVoice",
            addPhoneLegalTextKey = not v33 and "Feature.VerificationUpsell.Description.VoiceLegalDisclaimer" or "Feature.VerificationUpsell.Description.VoiceLegalConsent",
            alwaysShowAddPhoneLegalText = true,
            requireAddPhoneLegalTextCheckbox = v33
        })),
        SuccessOverlay = v28 and v3.createElement(v9, {
            image = v34,
            text = v37.verifySuccessKey
        }),
        ErrorOverlay = v30 and v3.createElement(v9, {
            image = v34,
            text = v37.voiceErrorKey
        })
    });
end;


return {
    Button = {
        Continue = "continue",
        ResendCode = "resendCode",
        AutoSubmit = "autoSubmit",
        ChangePhoneNumber = "changePhoneNumber"
    },
    Field = {
        VerificationCode = "verificationCode",
        TermsOfService = "termsOfService",
        PrivacyPolicy = "privacyPolicy",
        CountryPrefix = "countryPrefix",
        PhoneNumber = "phoneNumber",
        ErrorMessage = "errorMessage"
    },
    ActionType = {
        Focus = "focus",
        Shown = "shown",
        Dismiss = "dismissed"
    }
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.DuplicateAnalytics.upsellCardModalAction);
local v3 = require(l_script_FirstAncestor_0.DuplicateAnalytics.upsellCardFormInteraction);
local v4 = require(l_script_FirstAncestor_0.DuplicateAnalytics.EventStreamConstants);
local l_RoactAnalytics_0 = require(l_Parent_0.RoactServiceTags).RoactAnalytics;
return {
    get = function(v6)
        local v7 = l_RoactAnalytics_0.get(v6);
        return {
            reportModalShownWithSection = function(v8, v9, v10)
                v2(v7.EventStream, v8, "", v4.ActionType.Shown, v9, v10);
            end,
            reportModalShownWithSectionAndError = function(v11, v12, v13, v14, v15)
                v2(v7.EventStream, v11, v12, v4.ActionType.Shown, v13, v14, v15);
            end,
            reportModalDismissedWithSection = function(v16, v17, v18)
                v2(v7.EventStream, v16, "", v4.ActionType.Dismiss, v17, v18);
            end,
            reportModalActionWithSection = function(v19, v20, v21, v22, v23, v24)
                v2(v7.EventStream, v19, v20, v21, v22, v23, v24);
            end,
            reportInteractWithActionAndSection = function(v25, v26, v27, v28, v29, v30)
                v3(v7.EventStream, v25, v26, v27, v28, v29, v30);
            end
        };
    end
};


game:DefineFastFlag("LuaUsePhoneNumberTextTypeForPhoneUpsellV2", true);
return function()
    return game:GetFastFlag("LuaUsePhoneNumberTextTypeForPhoneUpsellV2");
end;


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


local l_UrlBuilder_0 = require(script:FindFirstAncestor("PhoneUpsell").Parent.UrlBuilder).UrlBuilder;
return function(v1)
    return v1(l_UrlBuilder_0.fromString("accountinformation:phone/resend")(), "POST", {
        postBody = ""
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_UrlBuilder_0 = require(script:FindFirstAncestor("PhoneUpsell").Parent.UrlBuilder).UrlBuilder;
return function(v2, v3, v4, v5, v6)
    assert(type(v3) == "string", "invalid country code in set phone number");
    assert(type(v4) == "string", "invalid prefix in set phone number");
    assert(type(v5) == "string", "invalid phone number in set phone number");
    local v7 = true;
    if type(v6) ~= "string" then
        v7 = v6 == nil;
    end;
    assert(v7, "invalid password in set phone number");
    return v2(l_UrlBuilder_0.fromString("accountinformation:phone")(), "POST", {
        postBody = l_HttpService_0:JSONEncode({
            password = v6,
            countryCode = v3,
            prefix = v4,
            phone = v5
        })
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_UrlBuilder_0 = require(script:FindFirstAncestor("PhoneUpsell").Parent.UrlBuilder).UrlBuilder;
return function(v2, v3)
    assert(type(v3) == "string", "invalid code in verify phone code");
    assert(not string.match(v3, "%D"), "invalid code in verify phone code");
    return v2(l_UrlBuilder_0.fromString("accountinformation:phone/verify")(), "POST", {
        postBody = l_HttpService_0:JSONEncode({
            code = v3
        })
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_GuiService_0 = game:GetService("GuiService");
return function(v2)
    l_GuiService_0:BroadcastNotification(l_HttpService_0:JSONEncode({
        title = "",
        presentationStyle = ({
            FullScreen = 0,
            FormSheet = 2
        }).FormSheet,
        visible = true,
        url = v2
    }), 20);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local v2 = require(l_script_FirstAncestor_0.Parent.Promise);
local v3 = require(l_script_FirstAncestor_0.Http.Requests.PostResendPhoneCode);
return function(v4)
    return function()
        return v3(v4):andThen(function(_)
            return v2.resolve();
        end, function(v6)
            local v7 = 0;
            if v6.Body then
                v7 = l_HttpService_0:JSONDecode(v6.Body).errors[1].code;
            end;
            return v2.reject({
                ErrorCode = v7
            });
        end);
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.Promise);
local v4 = require(l_script_FirstAncestor_0.Http.Requests.PostSetPhone);
local l_isStringPhone_0 = require(l_Parent_0.AuthCommon).Utils.isStringPhone;
return function(v6, v7, v8, v9, v10)
    return function()
        if l_isStringPhone_0(v8 .. v9) then
            return v4(v6, v7, v8, v9, v10):andThen(function(_)
                return v3.resolve();
            end, function(v12)
                local v13 = 0;
                if v12.Body then
                    v13 = l_HttpService_0:JSONDecode(v12.Body).errors[1].code;
                end;
                return v3.reject({
                    ErrorCode = v13,
                    PhoneRegexFailed = false
                });
            end);
        else
            return v3.reject({
                PhoneRegexFailed = true
            });
        end;
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("PhoneUpsell");
local v2 = require(l_script_FirstAncestor_0.Parent.Promise);
local v3 = require(l_script_FirstAncestor_0.Http.Requests.PostVerifyPhoneCode);
return function(v4, v5)
    return function()
        return v3(v4, v5):andThen(function(_)
            return v2.resolve();
        end, function(v7)
            local v8 = 0;
            if v7.Body then
                v8 = l_HttpService_0:JSONDecode(v7.Body).errors[1].code;
            end;
            return v2.reject({
                ErrorCode = v8
            });
        end);
    end;
end;


return {
    ResendPhoneCode = require(script.ResendPhoneCode),
    SetPhoneNumber = require(script.SetPhoneNumber),
    VerifyPhoneCode = require(script.VerifyPhoneCode)
};


return function(v0, v1)
    local v2 = v0:gsub("%D", "");
    local v3 = v1:gsub("%D", "");
    if string.find(v2, v3) == 1 then
        return v1, (string.sub(v2, string.len(v3) + 1));
    else
        return v1, v2;
    end;
end;


local v0 = require(script:FindFirstAncestor("PhoneUpsell").Parent.Cryo);
return function(v1, v2)
    return v0.Dictionary.join(v1, v2);
end;


return {
    ["jest.config"] = script["jest.config"],
    VoicePhoneVerificationUpsellOverlayWrapper = require(script.Components.VoicePhoneVerificationUpsellOverlayWrapper),
    PhoneVerificationUpsellOverlayWrapper = require(script.Components.PhoneVerificationUpsellOverlayWrapper),
    PhoneVerificationUpsellOverlay = require(script.Components.PhoneVerificationUpsellOverlay),
    InGamePhoneVerificationUpsell = require(script.Components.InGameContainer),
    PhoneUpsellController = require(script.Components.PhoneUpsellController)
};