local l_CoreGui_0 = game:GetService("CoreGui");
local l_InsertService_0 = game:GetService("InsertService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v3 = require(l_Parent_0.Packages.React);
local v4 = require(l_Parent_0.Packages.ReactRoblox);
local v5 = require(l_Parent_0.Packages.Framework);
local l_Stylizer_0 = v5.Style.Stylizer;
local l_ContextServices_0 = v5.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Pane_0 = v5.UI.Pane;
local v10 = require(script.Parent.Windhose);
local v11 = require(script.Parent.WindspeedDisplay);
local v12 = v3.PureComponent:extend("MainGui");
v12.init = function(v13)
    v13.cameraRef = v3.createRef();
    v13.viewportRef = v3.createRef();
    v13.textLabelRef = v3.createRef();
    v13.windhose = v10();
    v13:setState({
        windspeed = workspace.GlobalWind.Magnitude,
        windDirection = workspace.GlobalWind.Unit,
        isChangingPitch = false,
        isChangingYaw = false
    });
    v13.onWindChanged = function()
        if not (not v13.windhose or not v13.windhose.selectStick) then
            v13:setState({
                windspeed = workspace.GlobalWind.Magnitude,
                windDirection = v13.windhose.selectStick.CFrame.LookVector
            });
        end;
    end;
    v13.onisChangingPitchChanged = function(v14)
        v13:setState({
            isChangingPitch = v14
        });
    end;
    v13.onisChangingYawChanged = function(v15)
        v13:setState({
            isChangingYaw = v15
        });
    end;
    v13.onYawStateRequested = function()
        v13:setState({
            isChangingYaw = false,
            isChangingPitch = true
        });
    end;
    v13.onPitchStateRequested = function()
        v13:setState({
            isChangingYaw = true,
            isChangingPitch = false
        });
    end;
    v13.onSpeedStateRequested = function()
        v13:setState({
            isChangingYaw = false,
            isChangingPitch = false
        });
    end;
end;
v12.loadPosition = function(v16)
    local v17 = v16.props.Plugin:get();
    local v18 = v16.viewportRef:getValue();
    if not (not v17 or not v18) then
        local l_X_0 = v18.AbsoluteSize.X;
        local function _(v20, v21)
            local v22 = game.Workspace.CurrentCamera.ViewportSize[v20];
            local v23 = 0.5;
            local v24 = 0.5;
            if l_X_0 < v22 then
                v23 = v17:GetSetting("WindControl_Position" .. v20) or v21;
                v24 = (v23 * (v22 - l_X_0) + v23 * l_X_0) / v22;
            end;
            return v23, v24;
        end;
        local l_X_1 = game.Workspace.CurrentCamera.ViewportSize.X;
        local v27 = 0.5;
        local v28 = 0.5;
        if l_X_0 < l_X_1 then
            v27 = v17:GetSetting("WindControl_Position" .. "X") or 1;
            v28 = (v27 * (l_X_1 - l_X_0) + v27 * l_X_0) / l_X_1;
        end;
        local l_v27_0 = v27;
        local l_v28_0 = v28;
        v28 = game.Workspace.CurrentCamera.ViewportSize.Y;
        local v31 = 0.5;
        local v32 = 0.5;
        if l_X_0 < v28 then
            v31 = v17:GetSetting("WindControl_Position" .. "Y") or 0;
            v32 = (v31 * (v28 - l_X_0) + v31 * l_X_0) / v28;
        end;
        l_X_1 = v31;
        v27 = v32;
        v18.AnchorPoint = Vector2.new(l_v27_0, l_X_1);
        v18.Position = UDim2.fromScale(l_v28_0, v27);
    end;
end;
v12.clampAndSavePosition = function(v33)
    local v34 = v33.props.Plugin:get();
    local v35 = v33.viewportRef:getValue();
    if not (not v34 or not v35) then
        local l_X_2 = v35.AbsoluteSize.X;
        local function _(v37)
            local v38 = game.Workspace.CurrentCamera.ViewportSize[v37];
            local v39 = 0.5;
            local v40 = 0.5;
            if l_X_2 < v38 then
                local v41 = math.clamp(v35.AbsolutePosition[v37], 0, v38 - l_X_2);
                v39 = v41 / (v38 - l_X_2);
                v40 = (v41 + v39 * l_X_2) / v38;
            end;
            v34:SetSetting("WindControl_Position" .. v37, v39);
            return v39, v40;
        end;
        local l_X_3 = game.Workspace.CurrentCamera.ViewportSize.X;
        local v44 = 0.5;
        local v45 = 0.5;
        if l_X_2 < l_X_3 then
            local v46 = math.clamp(v35.AbsolutePosition.X, 0, l_X_3 - l_X_2);
            v44 = v46 / (l_X_3 - l_X_2);
            v45 = (v46 + v44 * l_X_2) / l_X_3;
        end;
        v34:SetSetting("WindControl_Position" .. "X", v44);
        local l_v44_0 = v44;
        local l_v45_0 = v45;
        v45 = game.Workspace.CurrentCamera.ViewportSize.Y;
        local v49 = 0.5;
        local v50 = 0.5;
        if l_X_2 < v45 then
            local v51 = math.clamp(v35.AbsolutePosition.Y, 0, v45 - l_X_2);
            v49 = v51 / (v45 - l_X_2);
            v50 = (v51 + v49 * l_X_2) / v45;
        end;
        v34:SetSetting("WindControl_Position" .. "Y", v49);
        l_X_3 = v49;
        v44 = v50;
        v35.AnchorPoint = Vector2.new(l_v44_0, l_X_3);
        v35.Position = UDim2.fromScale(l_v45_0, v44);
    end;
end;
v12.loadWindControl = function(v52)
    coroutine.wrap(function()
        local v53 = nil;
        if v52.mounted then
            pcall(function()
                v53 = l_InsertService_0:LoadLocalAsset("rbxasset://models/WindControl/windhose.rbxm");
            end);
            if v53 == nil then
                return ;
            else
                v52.windControlModel = v53;
                if v52.viewportRef:getValue() then
                    v52.windControlModel.Parent = v52.viewportRef:getValue();
                    v52.windhose:init(v52.windControlModel, v52.cameraRef:getValue(), v52.viewportRef:getValue(), v52.onWindChanged, nil, v52.onYawStateRequested, v52.onPitchStateRequested);
                    v52.windhose:setEnabled(true);
                end;
                v52.loaded = true;
                return ;
            end;
        else
            return ;
        end;
    end)();
end;
v12.unloadWindControl = function(v54)
    if v54.mounted then
        v54.windhose:setEnabled(false);
        if v54.windControlModel ~= nil then
            v54.windControlModel:Destroy();
            v54.windControlModel = nil;
        end;
    end;
end;
v12.render = function(v55)
    local l_MainGui_0 = v55.props.Stylizer.MainGui;
    return v4.createPortal({
        WindControl = v3.createElement("Folder", {}, {
            Screengui = v3.createElement("ScreenGui", {}, {
                ViewportFrame = v3.createElement("ViewportFrame", {
                    ZIndex = 1,
                    Size = l_MainGui_0.ViewportFrame.Size,
                    Position = l_MainGui_0.ViewportFrame.Position,
                    CurrentCamera = v55.cameraRef,
                    BackgroundTransparency = 1,
                    ref = v55.viewportRef
                }, {
                    Background = v3.createElement(l_Pane_0, l_MainGui_0.BackgroundPane),
                    Camera = v3.createElement("Camera", {
                        CameraType = Enum.CameraType.Scriptable,
                        CFrame = CFrame.new(Vector3.new(0, 0, 0), (Vector3.new(0, 0, 0))),
                        FieldOfView = l_MainGui_0.CameraFOV,
                        ref = v55.cameraRef
                    }),
                    ImageButton = v3.createElement("ImageButton", {
                        Size = UDim2.fromScale(1, 1),
                        BackgroundTransparency = 1,
                        [v3.Event.MouseEnter] = function()
                            v55.windhose:onMouseEnter();
                        end,
                        [v3.Event.MouseLeave] = function()
                            v55.windhose:onMouseLeave();
                        end,
                        [v3.Event.MouseButton1Down] = function(_, v58, v59)
                            v55.windhose:onMouseButton1Down(v58, v59);
                        end,
                        [v3.Event.MouseMoved] = function(_, v61, v62)
                            v55.windhose:onMouseMove(v61, v62);
                        end
                    }),
                    WindspeedDisplay = v3.createElement(v11, {
                        Windspeed = v55.state.windspeed,
                        WindDirection = v55.state.windDirection,
                        isChangingPitch = v55.state.isChangingPitch,
                        isChangingYaw = v55.state.isChangingYaw,
                        yawStateRequested = v55.onYawStateRequested,
                        pitchStateRequested = v55.onPitchStateRequested,
                        speedStateRequested = v55.onSpeedStateRequested
                    })
                })
            })
        })
    }, l_CoreGui_0);
end;
v12.didMount = function(v63)
    v63.mounted = true;
    v63:loadWindControl();
    v63:loadPosition();
end;
v12.willUnmount = function(v64)
    v64:unloadWindControl();
    v64:clampAndSavePosition();
end;
return (l_withContext_0({
    Plugin = l_ContextServices_0.Plugin,
    Stylizer = l_Stylizer_0
})(v12));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local l_DEPRECATED_TextInput_0 = require(l_Parent_0.Packages.Framework).UI.DEPRECATED_TextInput;
local v3 = v1.Component:extend("ValueEditTextBox");
v3.init = function(v4)
    v4.textBoxRef = v1.createRef();
    v4.enteredText = "";
    v4.onTextChanged = function(v5)
        v4.enteredText = v5;
    end;
    v4.onFocusLost = function(v6)
        local l_props_0 = v4.props;
        local l_enteredText_0 = v4.enteredText;
        if v6 and l_enteredText_0 ~= "" then
            l_props_0.OnTextConfirmed(l_enteredText_0);
        end;
        l_props_0.OnEditCanceled();
    end;
end;
v3.render = function(v9)
    local l_props_1 = v9.props;
    return v1.createElement(l_DEPRECATED_TextInput_0, {
        Size = l_props_1.Size,
        Style = "FilledRoundedBorder",
        LayoutOrder = l_props_1.LayoutOrder,
        TextWrapped = true,
        ShouldFocus = true,
        TextXAlignment = Enum.TextXAlignment.Left,
        ForwardRef = v9.textBoxRef,
        PlaceholderText = l_props_1.Text,
        OnTextChanged = v9.onTextChanged,
        OnFocusLost = v9.onFocusLost
    });
end;
v3.didMount = function(v11)
    v11.textBoxRef.current:CaptureFocus();
end;
return v3;


Particle = require(script.Parent.class)(function(v0, v1, v2)
    v0.velocity = Vector3.new(0, 0, 0);
    v0.mass = v2;
    v0.acceleration = Vector3.new(0, 0, 0);
    v0.momentum = Vector3.new(0, 0, 0);
    v0.force = Vector3.new(0, 0, 0);
    v0.position = v1;
end);
Particle.addForce = function(v3, v4)
    v3.force = v3.force + v4;
end;
Particle.update = function(v5, v6, v7)
    v5.acceleration = (1 / v5.mass) * v5.force;
    v5.velocity = v5.velocity * (1 - 1.5E-4 * v6);
    v5.velocity = v5.velocity + v5.acceleration * v6;
    if not v7 then
        v5.position = v5.position + v5.velocity * v6;
    end;
    v5.force = Vector3.new(0, 0, 0);
end;
return Particle;


SpringDamper = require(script.Parent.class)(function(v0, v1, v2)
    v0.springConstant = 10;
    v0.dampingFactor = 2;
    v0.restingLength = (v1.position - v2.position).Magnitude;
    v0.p1 = v1;
    v0.p2 = v2;
end);
SpringDamper.computeForce = function(v3)
    local v4 = v3.p2.position - v3.p1.position;
    local l_Magnitude_0 = v4.Magnitude;
    local v6 = v4 / math.max(l_Magnitude_0, 1.0E-5);
    local v7 = (-v3.springConstant * math.clamp(v3.restingLength - l_Magnitude_0, -1, 1) - v3.dampingFactor * (v3.p1.velocity:Dot(v6) - v3.p2.velocity:Dot(v6))) * v6;
    local v8 = -v7;
    v3.p1:addForce(v7);
    v3.p2:addForce(v8);
end;
return SpringDamper;


return {
    isInvalidCameraType = function()
        local l_CameraType_0 = game.Workspace.CurrentCamera.CameraType;
        if not (l_CameraType_0 ~= Enum.CameraType.Attach) or l_CameraType_0 == Enum.CameraType.Scriptable then
            return true;
        else
            return false;
        end;
    end,
    getRayPlaneHit = function(v1, v2, v3, v4)
        local l_v2_0 = v2;
        local v6 = v2 - v1;
        local v7 = (v4 - v3:Dot(v1)) / v3:Dot(v6);
        if v7 >= 0 and v7 <= 1 then
            l_v2_0 = v1 + v7 * v6;
        end;
        return l_v2_0;
    end
};


return function(v0, v1)
    local v2 = {};
    if not v1 and type(v0) == "function" then
        v1 = v0;
        v0 = nil;
    elseif type(v0) == "table" then
        for v3, v4 in pairs(v0) do
            v2[v3] = v4;
        end;
        v2._base = v0;
    end;
    v2.__index = v2;
    local v7 = {
        __call = function(_, ...)
            local v6 = {};
            setmetatable(v6, v2);
            if not v1 then
                if not (not v0 or not v0.init) then
                    v0.init(v6, ...);
                end;
                return v6;
            else
                v1(v6, ...);
                return v6;
            end;
        end
    };
    v2.init = v1;
    v2.is_a = function(v8, v9)
        local v10 = getmetatable(v8);
        while true do
            if not v10 then
                return false;
            elseif v10 == v9 then
                return true;
            else
                v10 = v10._base;
            end;
        end;
    end;
    setmetatable(v2, v7);
    return v2;
end;


return {
    sqrt3on2 = 0.866025,
    radiusOfStructure = 0.25,
    viewportSize = 1000,
    spsToFudgedMps = 0.28,
    numBones = 6,
    windScaleFactor = 10,
    cameraDistance = 3,
    maxDtsToAvg = 10,
    animationTime = 0.2,
    selectRingXZDistance = -0.5,
    dragDelta = 0,
    planeTestRayLength = 500,
    inverseStandardGravity = 0.0101936
};


return function(v0, v1)
    local l_position_0 = v1[3 * (v0 - 1) + 1].position;
    local l_position_1 = v1[3 * (v0 - 1) + 2].position;
    local l_position_2 = v1[3 * (v0 - 1) + 3].position;
    local v5 = ((l_position_0 + l_position_1) + l_position_2) / 3;
    local l_Unit_0 = (v5 - l_position_0).Unit;
    local l_Unit_1 = (l_position_1 - l_position_0):Cross(l_position_2 - l_position_0).Unit;
    local v8 = l_Unit_0:Cross(l_Unit_1);
    return CFrame.new(v5.x, v5.y, v5.z, v8.x, l_Unit_0.x, l_Unit_1.x, v8.y, l_Unit_0.y, l_Unit_1.y, v8.z, l_Unit_0.z, l_Unit_1.z);
end;


local l_RunService_0 = game:GetService("RunService");
local l_GuiService_0 = game:GetService("GuiService");
local l_UserInputService_0 = game:GetService("UserInputService");
local v3 = require(script.class);
local v4 = require(script.constants);
local v5 = require(script.Util);
local v6 = require(script.WindhoseSimulation);
local v7 = require(script.Parent.Parent.Util.AnalyticsGlobals);
local l_EnableWindControlRBXTelemetry_0 = game:GetFastFlag("EnableWindControlRBXTelemetry");
local v10 = v3(function(v9)
    v9.cameraCFrame = nil;
    v9.initSucceded = false;
    v9.animStartCFrame = nil;
    v9.animTargetCFrame = nil;
    v9.windhoseSimulation = nil;
    v9.lastTick = nil;
    v9.currentTime = nil;
    v9.windScaleFactor = 10;
    v9.spinX = 0;
    v9.spinY = 1.5707963267948966;
    v9.windSpeed = workspace.GlobalWind.Magnitude;
    v9.lastWind = nil;
end);
v10.init = function(v11, v12, v13, v14, v15, v16, v17, v18)
    v11.worldModel = v12;
    v11.viewportCamera = v13;
    v11.viewport = v14;
    v11.onWindChanged = v15;
    v11.onWindowMoved = v16;
    v11.onisChangingPitchChanged = v17;
    v11.onisChangingYawChanged = v18;
    v11.selectRing = v12:WaitForChild("UnitSelectRingXZ");
    v11.selectStick = v12:WaitForChild("UnitSelectStickDownPositiveZ");
    v11.selectArrow = v12:WaitForChild("ArrowTipDownPositiveZ");
    v11.selectStick.Color = Color3.new(0, 0, 1);
    v11.selectRing.Size = Vector3.new(v11.selectRing.Size.x, 2 * v11.selectRing.Size.y, v11.selectRing.Size.z);
    v11.selectRingOrigSize = v11.selectRing.Size;
    v11.selectStick.Size = Vector3.new(4 * v11.selectStick.Size.x, 4 * v11.selectStick.Size.y, v11.selectStick.Size.z);
    v11.selectStickOrigSize = v11.selectStick.Size;
    v11.selectArrow.Size = Vector3.new(4 * v11.selectArrow.Size.x, 4 * v11.selectArrow.Size.y, 2 * v11.selectArrow.Size.z);
    v11.selectArrowOrigSize = v11.selectArrow.Size;
    v11.ringDragIndicatorPart = Instance.new("Part");
    v11.ringDragIndicatorPart.Parent = v12;
    v11.ringDragIndicatorPart.Material = v11.selectRing.Material;
    v11.ringDragIndicatorPart.Color = Color3.new(0, 1, 0);
    v11.ringDragIndicatorPart.Transparency = 1;
    v11.ringDragIndicatorPart.Size = Vector3.new(0.05, 0.05, v11.selectRing.Size.z / 2);
    v11.ringDragIndicatorPart.CFrame = CFrame.new(v11.selectRing.CFrame.Position + Vector3.new(0, 0, v11.selectRing.Size.z / 2));
    v11.initSucceded = true;
end;
v10.loadValuesFromGlobalWind = function(v19)
    if not (((v19.windChanged or v19.isScaling) or v19.isChangingPitch) or v19.isChangingYaw) and v19.lastWind ~= workspace.GlobalWind then
        if workspace.GlobalWind:Dot(workspace.GlobalWind) > 0 then
            local v20 = -workspace.GlobalWind.Unit;
            local v21 = 0;
            if v20.z < 0 then
                v21 = 3.141592653589793;
            end;
            if v20.z ~= 0 then
                v19.spinY = v21 + math.atan(v20.x / v20.z);
            elseif v20.x > 0 then
                v19.spinY = v21 + 1.5707963267948966;
            else
                v19.spinY = v21 - 1.5707963267948966;
            end;
            v19.spinX = math.asin((math.clamp(-v20.y, -1, 1)));
        end;
        if v19.lastWind ~= workspace.GlobalWind then
            v19.selectStick.CFrame = CFrame.fromEulerAnglesYXZ(0, v19.spinY, 0) * CFrame.fromEulerAnglesYXZ(v19.spinX, 0, 0);
            v19.selectStick.CFrame = v19.selectStick.CFrame - v19.selectStick.CFrame.LookVector;
            v19.onWindChanged();
        end;
        v19.windSpeed = math.clamp(workspace.GlobalWind.Magnitude, 0, 999.9);
        v19.lastWind = workspace.GlobalWind;
    end;
end;
v10.onMouseEnter = function(v22)
    v22.hover = true;
end;
v10.onMouseLeave = function(v23)
    v23.hover = false;
    v23.isHoveringOverRing = false;
    v23.isHoveringOverStick = false;
end;
v10.processRaycast = function(v24, v25, v26)
    v24:updatePickRay(v25, v26);
    local v27 = RaycastParams.new();
    v27.FilterType = Enum.RaycastFilterType.Blacklist;
    v27.FilterDescendantsInstances = {
        v24.windhoseSimulation.cone
    };
    local v28 = v24.worldModel:Raycast(v24.ray.Origin, v24.ray.Direction * v4.planeTestRayLength, v27);
    if not v28 then
        v24.isHoveringOverRing = false;
        v24.isHoveringOverArrow = false;
        v24.isHoveringOverStick = false;
        return ;
    else
        if v24.selectRing == v28.Instance then
            v24.isHoveringOverRing = true;
        else
            v24.isHoveringOverRing = false;
        end;
        if v24.selectStick == v28.Instance then
            v24.isHoveringOverStick = true;
            v24.isHoveringOverRing = false;
        else
            v24.isHoveringOverStick = false;
        end;
        if v24.selectArrow == v28.Instance then
            v24.isHoveringOverStick = true;
            return ;
        else
            v24.isHoveringOverArrow = false;
            return ;
        end;
    end;
end;
v10.onMouseMove = function(v29, v30, v31)
    if v29.initSucceded then
        if not v5.isInvalidCameraType() then
            v29:processRaycast(v30, v31);
            local l_ray_0 = v29.ray;
            local v33 = Vector3.new(0, 0, 0);
            local v34 = nil;
            if v29.isChangingYaw then
                v34 = v5.getRayPlaneHit(l_ray_0.Origin, l_ray_0.Origin + l_ray_0.Direction * v4.planeTestRayLength, Vector3.new(0, 1, 0), v4.selectRingXZDistance);
                if not v29.rayHitLastFrame then
                    v29.rayHitLastFrame = v34;
                end;
                local v35 = v34 - v33;
                v35 = Vector3.new(v35.x, 0, v35.z).Unit;
                local l_Unit_0 = (v29.rayHitLastFrame - v33).Unit;
                l_Unit_0 = Vector3.new(l_Unit_0.x, 0, l_Unit_0.z).Unit;
                local _ = nil;
                v29.spinY = v29.spinY + (v35:Cross(l_Unit_0).y >= 0 and -1 or 1) * math.acos((math.clamp(v35:Dot(l_Unit_0), -1, 1)));
            end;
            if v29.isChangingPitch then
                v34 = v5.getRayPlaneHit(l_ray_0.Origin, l_ray_0.Origin + l_ray_0.Direction * v4.planeTestRayLength, v29.selectStick.CFrame.RightVector, 0);
                if CFrame.fromEulerAnglesYXZ(0, v29.spinY, 0).LookVector:Dot(v34) < 0 then
                    if not v29.rayHitLastFrame then
                        v29.rayHitLastFrame = v34;
                    end;
                    local l_Unit_1 = (v34 - v33).Unit;
                    local _ = Vector3.new(l_Unit_1.x, 0, l_Unit_1.z).Unit;
                    v29.spinX = math.asin((math.clamp(-l_Unit_1.y, -1, 1)));
                end;
            end;
            v29.rayHitLastFrame = v34;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v10.onInputChanged = function(v40, v41)
    if v40.mouseDownPosition == nil then
        return ;
    else
        if v41.UserInputType == Enum.UserInputType.MouseMovement then
            local l_x_0 = v41.Position.x;
            local l_y_0 = v41.Position.y;
            if v4.dragDelta < math.abs(v40.mouseDownPosition.x - l_x_0) + math.abs(v40.mouseDownPosition.y - l_y_0) then
                local v44 = (v40.mouseDownGuiPosition.X.Offset + l_x_0) - v40.mouseDownPosition.x;
                local v45 = (v40.mouseDownGuiPosition.Y.Offset + l_y_0) - v40.mouseDownPosition.y;
                if not (not (v40.isChangingYaw or v40.isChangingPitch) and not v40.isScaling) then
                    v40:onMouseMove(l_x_0, l_y_0);
                    v40.windChanged = true;
                end;
                if not ((v40.isChangingYaw or v40.isChangingPitch) or v40.isScaling) then
                    v40.viewport.Position = UDim2.new(v40.mouseDownGuiPosition.X.Scale, v44, v40.mouseDownGuiPosition.Y.Scale, v45);
                end;
            end;
        end;
        return ;
    end;
end;
v10.onInputEnded = function(v46, v47)
    if v47.UserInputType == Enum.UserInputType.MouseButton1 then
        v46.isChangingYaw = false;
        v46.isChangingPitch = false;
        v46.isScaling = false;
        v46.ringDragIndicatorPart.Transparency = 1;
    end;
    if not (not (v47.UserInputType == Enum.UserInputType.MouseButton1) or not v46.mouseDownPosition) then
        v46.mouseDownPosition = nil;
    end;
end;
v10.screenPointToViewport = function(v48, v49, v50)
    local l_l_GuiService_0_GuiInset_0 = l_GuiService_0:GetGuiInset();
    return (v49 - v48.viewport.AbsolutePosition.x) - l_l_GuiService_0_GuiInset_0.x, (v50 - v48.viewport.AbsolutePosition.y) - l_l_GuiService_0_GuiInset_0.y;
end;
v10.updatePickRay = function(v52, v53, v54)
    local v55, v56 = v52:screenPointToViewport(v53, v54);
    v52.ray = v52.viewportCamera:ViewportPointToRay(v55 / v52.viewport.AbsoluteSize.x, v56 / v52.viewport.AbsoluteSize.y, 0);
    if v52.cameraCFrame == nil then
        return ;
    else
        v52.direction = v52.cameraCFrame:VectorToWorldSpace(v52.ray.Direction);
        return ;
    end;
end;
v10.onMouseButton1Down = function(v57, v58, v59)
    if v57.initSucceded then
        v57:processRaycast(v58, v59);
        v57.mouseDownPosition = Vector2.new(v58, v59);
        v57.mouseDownGuiPosition = v57.viewport.Position;
        v57.isChangingPitch = v57.isHoveringOverStick or v57.isHoveringOverArrow;
        v57.isChangingYaw = (not v57.isChangingPitch and not v57.isScaling) and v57.isHoveringOverRing;
        v57.ringDragIndicatorPart.Transparency = not v57.isChangingYaw and 1 or 0;
        if not v57.isChangingYaw then
            if v57.isChangingPitch then
                v57.onisChangingPitchChanged();
            end;
        else
            v57.onisChangingYawChanged();
            if l_EnableWindControlRBXTelemetry_0 then
                local l_v7_0 = v7;
                l_v7_0.greenCircleCount = l_v7_0.greenCircleCount + 1;
                return ;
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v10.afterCamera = function(v61, _)
    local l_viewportCamera_0 = v61.viewportCamera;
    local l_selectStick_0 = v61.selectStick;
    local l_selectRing_0 = v61.selectRing;
    local l_selectArrow_0 = v61.selectArrow;
    local l_isHoveringOverStick_0 = v61.isHoveringOverStick;
    local l_isHoveringOverRing_0 = v61.isHoveringOverRing;
    local l_isHoveringOverArrow_0 = v61.isHoveringOverArrow;
    local l_isChangingPitch_0 = v61.isChangingPitch;
    local l_isChangingYaw_0 = v61.isChangingYaw;
    local l_isScaling_0 = v61.isScaling;
    if l_viewportCamera_0 == nil then
        return ;
    else
        v61:loadValuesFromGlobalWind();
        if v61.windChanged then
            workspace.GlobalWind = v61.selectStick.CFrame.LookVector * workspace.GlobalWind.Magnitude;
            v61.onWindChanged();
            v61.windChanged = false;
        end;
        v61.windhoseSimulation.windSpeed = v61.windSpeed;
        v61.windhoseSimulation.windDir = l_selectArrow_0.CFrame.LookVector;
        v61.windhoseSimulation.spinY = v61.spinY;
        v61.windhoseSimulation.spinX = v61.spinX;
        l_viewportCamera_0.CFrame = CFrame.new(l_viewportCamera_0.CFrame.Position.X, l_viewportCamera_0.CFrame.Position.Y, l_viewportCamera_0.CFrame.Position.Z + 0.001 * (tick() - v61.lastTick));
        l_selectStick_0.CFrame = CFrame.fromEulerAnglesYXZ(0, v61.spinY, 0) * CFrame.fromEulerAnglesYXZ(v61.spinX, 0, 0);
        l_selectStick_0.CFrame = l_selectStick_0.CFrame - l_selectStick_0.CFrame.LookVector;
        v61.ringDragIndicatorPart.CFrame = CFrame.fromEulerAnglesYXZ(0, v61.spinY, 0);
        v61.ringDragIndicatorPart.CFrame = v61.ringDragIndicatorPart.CFrame - v61.ringDragIndicatorPart.CFrame.LookVector / 2;
        v61.ringDragIndicatorPart.CFrame = v61.ringDragIndicatorPart.CFrame - Vector3.yAxis / 2;
        l_selectArrow_0.CFrame = l_selectStick_0.CFrame + (0.5 * (l_selectArrow_0.Size.z + l_selectStick_0.Size.z)) * l_selectStick_0.CFrame.LookVector;
        v61.windhoseSimulation.cone.CFrame = CFrame.fromEulerAnglesYXZ(0, v61.spinY, 0) * CFrame.fromEulerAnglesYXZ(v61.spinX, 0, 0);
        if v61.windhoseSimulation.physicallyAnimate then
            v61.windhoseSimulation.cone.CFrame = CFrame.lookAt(-5 * l_selectArrow_0.CFrame.LookVector, -10 * l_selectArrow_0.Position);
        end;
        local l_CurrentCamera_0 = game.Workspace.CurrentCamera;
        if (((l_isChangingPitch_0 or l_isScaling_0) or l_isHoveringOverArrow_0) or l_isHoveringOverStick_0) or not l_isHoveringOverRing_0 and not l_isChangingYaw_0 then
            l_selectRing_0.Size = v61.selectRingOrigSize;
            l_selectRing_0.Transparency = 0.2;
        else
            l_selectRing_0.Size = v61.selectRingOrigSize + Vector3.new(0.05, 0.05, 0.05);
            l_selectRing_0.Transparency = 0;
        end;
        if (l_isChangingYaw_0 or l_isScaling_0) or not l_isHoveringOverStick_0 and not l_isChangingPitch_0 then
            l_selectStick_0.Size = v61.selectStickOrigSize + Vector3.new(0.05, 0.05, -0.75);
            l_selectStick_0.Transparency = 0.2;
        else
            l_selectStick_0.Size = v61.selectStickOrigSize + Vector3.new(0.1, 0.1, -0.75);
            l_selectStick_0.Transparency = 0;
        end;
        l_selectStick_0.Size = Vector3.new(l_selectStick_0.Size.x, l_selectStick_0.Size.y, l_selectStick_0.Size.z * v61.windScaleFactor);
        if (l_isChangingYaw_0 or l_isScaling_0) or not l_isHoveringOverStick_0 and not l_isChangingPitch_0 then
            l_selectArrow_0.Size = v61.selectArrowOrigSize;
            l_selectArrow_0.Transparency = 0.2;
            v61.windScaleFactor = 1;
        else
            l_selectArrow_0.Size = v61.selectArrowOrigSize + Vector3.new(0.05, 0.05, 0.05);
            l_selectArrow_0.Transparency = 0;
        end;
        local l_CFrame_0 = l_CurrentCamera_0.CFrame;
        l_viewportCamera_0.CFrame = CFrame.fromMatrix(-l_CFrame_0.LookVector * v4.cameraDistance + Vector3.new(0, -0.5, 0), l_CFrame_0.RightVector, l_CFrame_0.UpVector, -l_CFrame_0.LookVector);
        if l_viewportCamera_0.CFrame ~= v61.cameraCFrame then
            v61.cameraCFrame = l_viewportCamera_0.CFrame;
            v61.viewport.LightDirection = (v61.cameraCFrame - v61.cameraCFrame.Position):ToWorldSpace(CFrame.new(-1, -1, -1)).Position;
        end;
        return ;
    end;
end;
v10.setEnabled = function(v75, v76)
    local function v78(v77)
        v75:onInputChanged(v77);
    end;
    local function v80(v79)
        v75:onInputEnded(v79);
    end;
    if v75.inputChangedConnection ~= nil then
        v75.inputChangedConnection:Disconnect();
    end;
    if v75.inputEndedConnection ~= nil then
        v75.inputEndedConnection:Disconnect();
    end;
    if not v76 or not v75.initSucceded then
        l_RunService_0:UnbindFromRenderStep("WindControlAfterCamera");
        if v75.windhoseSimulation ~= nil then
            v75.windhoseSimulation:destroy();
            v75.windhoseSimulation = nil;
        end;
        return ;
    else
        v75.windhoseSimulation = v6();
        v75.windhoseSimulation:init(v75.worldModel);
        v75.lastTick = tick();
        l_RunService_0:BindToRenderStep("WindControlAfterCamera", Enum.RenderPriority.Camera.Value + 1, function(v81)
            v75:afterCamera(v81);
        end);
        v75.inputChangedConnection = l_UserInputService_0.InputChanged:connect(v78);
        v75.inputEndedConnection = l_UserInputService_0.InputEnded:connect(v80);
        return ;
    end;
end;
return v10;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Localization_0 = l_ContextServices_0.Localization;
local l_Stylizer_0 = v2.Style.Stylizer;
local l_UI_0 = v2.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_Slider_0 = l_UI_0.Slider;
local l_TextLabel_0 = l_UI_0.TextLabel;
local v11 = require(script.Parent.ValueEditTextBox);
local v12 = require(l_Parent_0.Src.Util.AnalyticsGlobals);
local l_EnableWindControlRBXTelemetry_0 = game:GetFastFlag("EnableWindControlRBXTelemetry");
local _ = function()
    local _ = 0;
    if workspace.GlobalWind.Magnitude <= 1 then
        return -0.1;
    else
        return (math.min(math.log10(workspace.GlobalWind.Magnitude), 3));
    end;
end;
local function _(v16)
    if v16 < 0 then
        return 0;
    else
        return (math.pow(1000, v16 / 3));
    end;
end;
local v18 = v1.Component:extend("WindspeedDisplay");
v18.init = function(v19)
    v19:setState({
        isEditingText = false,
        isChangingPitch = false,
        isChangingYaw = false
    });
    v19.isHoldingSlider = false;
    v19.setisChangingPitch = function()
        v19.props.yawStateRequested();
    end;
    v19.setisChangingYaw = function()
        v19.props.pitchStateRequested();
    end;
    v19.setIsScaling = function()
        v19.props.speedStateRequested();
    end;
    v19.setWindSpeed = function(v20)
        workspace.GlobalWind = v19.props.WindDirection.Unit * math.max(0, v20);
    end;
    v19.setWindYaw = function(v21)
        local v22 = 1;
        local v23 = 0;
        local v24 = (0.5 - v21 / 180) * 3.141592653589793;
        if workspace.GlobalWind:Dot(workspace.GlobalWind) > 0 then
            v22 = workspace.GlobalWind.Magnitude;
            v23 = math.asin((math.clamp(workspace.GlobalWind.Unit.y, -1, 1)));
        end;
        workspace.GlobalWind = (CFrame.fromEulerAnglesYXZ(0, v24, 0) * CFrame.fromEulerAnglesYXZ(v23, 0, 0)).LookVector * v22;
    end;
    v19.setWindPitch = function(v25)
        local v26 = 1;
        local v27 = ((180 + v25) / 180) * 3.141592653589793;
        local v28 = -1.5707963267948966;
        if workspace.GlobalWind:Dot(workspace.GlobalWind) > 0 then
            v26 = workspace.GlobalWind.Magnitude;
            local l_Unit_0 = workspace.GlobalWind.Unit;
            local v30 = l_Unit_0.z < 0 and 3.141592653589793 or 0;
            v28 = if l_Unit_0.z ~= 0 then v30 + math.atan(l_Unit_0.x / l_Unit_0.z) else if l_Unit_0.x > 0 then v30 + 1.5707963267948966 else v30 - 1.5707963267948966;
        end;
        workspace.GlobalWind = (CFrame.fromEulerAnglesYXZ(0, v28, 0) * CFrame.fromEulerAnglesYXZ(v27, 0, 0)).LookVector * v26;
    end;
    v19.getWindPitch = function()
        if v19.props.WindDirection:Dot(v19.props.WindDirection) > 0 then
            local v31 = math.round(-90 + (180 * v19.props.WindDirection:Angle(Vector3.yAxis, Vector3.yAxis)) / 3.141592653589793);
            if v31 == nil then
                return 0;
            else
                return v31;
            end;
        else
            return 0;
        end;
    end;
    v19.getWindYaw = function()
        if v19.props.WindDirection:Dot(v19.props.WindDirection) > 0 then
            local v32 = math.round(180 + (180 * (v19.props.WindDirection * Vector3.new(1, 0, 1)):Angle(Vector3.xAxis, Vector3.yAxis)) / 3.141592653589793) % 360;
            if v32 == nil then
                return 0;
            else
                return v32;
            end;
        else
            return 0;
        end;
    end;
    v19.setCurrentValue = function(v33)
        if not v19.isChangingYaw then
            if not v19.isChangingPitch then
                v19.setWindSpeed(v33);
                return ;
            else
                v19.setWindPitch(v33);
                return ;
            end;
        else
            v19.setWindYaw(v33);
            return ;
        end;
    end;
    v19.getCurrentValueText = function()
        if not v19.isChangingYaw then
            if not v19.isChangingPitch then
                return v19.props.Localization:getText("WindspeedDisplay", "sps", {
                    string.format("%.1f", workspace.GlobalWind.Magnitude)
                });
            else
                return string.format("%d\194\176", v19.getWindPitch());
            end;
        else
            return string.format("%d\194\176", v19.getWindYaw());
        end;
    end;
    v19.getSliderMinValue = function()
        if not v19.isChangingYaw then
            if not v19.isChangingPitch then
                return -0.1;
            else
                return -90;
            end;
        else
            return 0;
        end;
    end;
    v19.getSliderMaxValue = function()
        if not v19.isChangingYaw then
            if not v19.isChangingPitch then
                return 3;
            else
                return 90;
            end;
        else
            return 359;
        end;
    end;
    v19.getSliderCurrentValue = function()
        if not v19.isChangingYaw then
            if not v19.isChangingPitch then
                local _ = 0;
                return workspace.GlobalWind.Magnitude <= 1 and -0.1 or math.min(math.log10(workspace.GlobalWind.Magnitude), 3);
            else
                return v19.getWindPitch();
            end;
        else
            return v19.getWindYaw();
        end;
    end;
end;
v18.render = function(v35)
    local l_props_0 = v35.props;
    local l_WindspeedDisplay_0 = l_props_0.Stylizer.WindspeedDisplay;
    local l_Localization_1 = l_props_0.Localization;
    v35.isChangingPitch = l_props_0.isChangingPitch;
    v35.isChangingYaw = l_props_0.isChangingYaw;
    local l_isEditingText_0 = v35.state.isEditingText;
    return v1.createElement(l_Pane_0, {
        Size = l_WindspeedDisplay_0.Size,
        Position = l_WindspeedDisplay_0.Position
    }, {
        ButtonPanel = v1.createElement(l_Pane_0, {
            Layout = Enum.FillDirection.Vertical,
            Size = UDim2.fromScale(0.5, 0.9),
            Position = UDim2.fromScale(0, -0.45)
        }, {
            Button1 = v1.createElement(l_Pane_0, {
                LayoutOrder = 1,
                Size = l_WindspeedDisplay_0.ButtonSize,
                OnClick = v35.setIsScaling
            }, {
                TextLabel1 = v1.createElement(l_TextLabel_0, {
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Text = l_Localization_1:getText("WindspeedDisplay", "Speed"),
                    TextSize = l_WindspeedDisplay_0.ButtonTextSize,
                    TextColor = if l_props_0.isChangingYaw or l_props_0.isChangingPitch then l_WindspeedDisplay_0.inactiveLabelColor else l_WindspeedDisplay_0.activeLabelColor
                })
            }),
            Button2 = v1.createElement(l_Pane_0, {
                LayoutOrder = 2,
                Size = l_WindspeedDisplay_0.ButtonSize,
                OnClick = v35.setisChangingYaw
            }, {
                TextLabel2 = v1.createElement(l_TextLabel_0, {
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Text = l_Localization_1:getText("WindspeedDisplay", "Yaw"),
                    TextSize = l_WindspeedDisplay_0.ButtonTextSize,
                    TextColor = if not l_props_0.isChangingYaw then l_WindspeedDisplay_0.inactiveLabelColor else l_WindspeedDisplay_0.activeLabelColor
                })
            }),
            Button3 = v1.createElement(l_Pane_0, {
                LayoutOrder = 3,
                Size = l_WindspeedDisplay_0.ButtonSize,
                OnClick = v35.setisChangingPitch
            }, {
                TextLabel3 = v1.createElement(l_TextLabel_0, {
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Text = l_Localization_1:getText("WindspeedDisplay", "Pitch"),
                    TextSize = l_WindspeedDisplay_0.ButtonTextSize,
                    TextColor = if not l_props_0.isChangingPitch then l_WindspeedDisplay_0.inactiveLabelColor else l_WindspeedDisplay_0.activeLabelColor
                })
            })
        }),
        Slider = v1.createElement(l_Slider_0, {
            Min = v35.getSliderMinValue(),
            Max = v35.getSliderMaxValue(),
            Value = v35.getSliderCurrentValue(),
            Size = l_WindspeedDisplay_0.Slider.Size,
            Position = l_WindspeedDisplay_0.Slider.Position,
            OnValueChanged = function(v40)
                if not v35.isChangingYaw and not v35.isChangingPitch then
                    v35.setWindSpeed(v40 < 0 and 0 or math.pow(1000, v40 / 3));
                    return ;
                else
                    v35.setCurrentValue(v40);
                    return ;
                end;
            end,
            OnChangeBegan = function()
                if l_EnableWindControlRBXTelemetry_0 then
                    local l_v12_0 = v12;
                    l_v12_0.sliderCount = l_v12_0.sliderCount + 1;
                end;
            end
        }),
        Pane = v1.createElement(l_Pane_0, {
            Size = l_WindspeedDisplay_0.TextLabel.Size,
            Position = l_WindspeedDisplay_0.TextLabel.Position,
            OnClick = function()
                if not l_isEditingText_0 then
                    v35:setState({
                        isEditingText = true
                    });
                end;
            end
        }, {
            TextLabel = not l_isEditingText_0 and v1.createElement(l_TextLabel_0, {
                Text = v35.getCurrentValueText(),
                Style = l_WindspeedDisplay_0.TextLabel.Style,
                ref = v35.textLabelRef
            }),
            ValueEditTextBox = l_isEditingText_0 and v1.createElement(v11, {
                Text = v35.getCurrentValueText(),
                Size = UDim2.fromScale(1, 1),
                OnTextConfirmed = function(v42)
                    v35:setState({
                        isEditingText = false
                    });
                    local v43 = tonumber(v42);
                    if v43 ~= nil then
                        v35.setCurrentValue(v43);
                    end;
                    if l_EnableWindControlRBXTelemetry_0 then
                        local l_v12_1 = v12;
                        l_v12_1.textFieldCount = l_v12_1.textFieldCount + 1;
                    end;
                end,
                OnEditCanceled = function()
                    v35:setState({
                        isEditingText = false
                    });
                end
            })
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_Stylizer_0,
    Localization = l_Localization_0
})(v18));


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_join_0 = require(l_Parent_0.Packages.Cryo).Dictionary.join;
local v4 = require(l_Parent_0.Packages.Framework);
local l_UI_0 = v4.UI;
local l_PluginButton_0 = l_UI_0.PluginButton;
local l_PluginToolbar_0 = l_UI_0.PluginToolbar;
local l_ContextServices_0 = v4.ContextServices;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local l_Mouse_0 = l_ContextServices_0.Mouse;
local v11 = require(l_Parent_0.Src.Util.Telemetry.TelemetryProtocol);
local v12 = require(l_Parent_0.Src.Util.Telemetry.WindsockOrigin);
local v13 = require(l_Parent_0.Src.Util.Telemetry.WindsockUsage);
local _ = require(l_Parent_0.Src.Util.Telemetry.TelemetryProtocolTypes);
local v15 = require(l_Parent_0.Src.Util.AnalyticsGlobals);
local v16 = require(l_Parent_0.Src.Resources.MakeTheme);
local l_SourceStrings_0 = l_Parent_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_Parent_0.Src.Resources.Localization.LocalizedStrings;
local v19 = require(l_Parent_0.Src.Components.MainGui);
local l_EnableWindControlPluginPropertyButton_0 = game:GetFastFlag("EnableWindControlPluginPropertyButton");
local l_EnableWindControlPluginRibbonButton_0 = game:GetFastFlag("EnableWindControlPluginRibbonButton");
local l_EnableWindControlRBXTelemetry_0 = game:GetFastFlag("EnableWindControlRBXTelemetry");
local v23 = v1.PureComponent:extend("MainPlugin");
v23.init = function(v24, _)
    v24:setState({
        enabled = false
    });
    v24.log = function(v26, v27)
        v24.telemetry:logRobloxTelemetryEvent(v26, nil, l_join_0({
            placeId = game.PlaceId
        }, v27));
    end;
    v24.logUsageReport = function(v28)
        if v15:totalCount() > 0 then
            v24.log(v13, {
                ctx = v28,
                textFieldCount = v15.textFieldCount,
                sliderCount = v15.sliderCount,
                greenCircleCount = v15.greenCircleCount
            });
            v15:reset();
        end;
    end;
    v24.toggleEnabled = function()
        v24:setState(function(v29)
            return {
                enabled = not v29.enabled
            };
        end);
    end;
    v24.toggleFromRibbon = function()
        v24.toggleEnabled();
        if v24.state.enabled then
            v24.logUsageReport("widgetDisabled");
            return ;
        else
            v24.log(v12, {
                ctx = "ribbon"
            });
            return ;
        end;
    end;
    v24.toggleFromProperties = function()
        v24.toggleEnabled();
        if v24.state.enabled then
            v24.logUsageReport("widgetDisabled");
            return ;
        else
            v24.log(v12, {
                ctx = "properties"
            });
            return ;
        end;
    end;
    v24.onClose = function()
        v24:setState({
            enabled = false
        });
    end;
    v24.onRestore = function(v30)
        v24:setState({
            enabled = v30
        });
    end;
    v24.onWidgetEnabledChanged = function(v31)
        v24:setState({
            enabled = v31.Enabled
        });
    end;
    v24.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = "WindControl"
    });
    v24.analytics = l_ContextServices_0.Analytics.new(function()
        return {};
    end, {});
    v24.telemetry = v11.new();
    if l_EnableWindControlPluginPropertyButton_0 then
        if not l_EnableWindControlRBXTelemetry_0 then
            v24.onOpenWindControlEditorConnection = l_MemStorageService_0:bind("openGlobalWindControl", v24.toggleEnabled);
        else
            v24.onOpenWindControlEditorConnection = l_MemStorageService_0:bind("openGlobalWindControl", v24.toggleFromProperties);
            return ;
        end;
    end;
end;
v23.renderButtons = function(v32, v33)
    local l_enabled_0 = v32.state.enabled;
    if not l_EnableWindControlPluginRibbonButton_0 then
        return {
            Toggle = v1.createElement(l_PluginButton_0, {
                Toolbar = v33,
                Active = l_enabled_0,
                Id = "wind_control_toggle_button",
                Title = v32.localization:getText("Plugin", "Button"),
                Tooltip = v32.localization:getText("Plugin", "Description"),
                Icon = "rbxasset://textures/GameSettings/ToolbarIcon.png",
                OnClick = if not l_EnableWindControlRBXTelemetry_0 then v32.toggleEnabled else v32.toggleFromRibbon,
                ClickableWhenViewportHidden = true
            })
        };
    else
        return {
            Toggle = v1.createElement(l_PluginButton_0, {
                Toolbar = v33,
                Active = l_enabled_0,
                Title = "WindControl",
                Tooltip = "",
                Icon = "",
                OnClick = if not l_EnableWindControlRBXTelemetry_0 then v32.toggleEnabled else v32.toggleFromRibbon,
                ClickableWhenViewportHidden = false
            })
        };
    end;
end;
v23.render = function(v35)
    local l_Plugin_1 = v35.props.Plugin;
    local l_enabled_1 = v35.state.enabled;
    local _ = nil;
    return l_ContextServices_0.provide({
        l_Plugin_0.new(l_Plugin_1),
        l_Mouse_0.new(l_Plugin_1:getMouse()),
        v16(),
        v35.localization,
        v35.analytics
    }, {
        MainGui = l_enabled_1 and v1.createElement(v19, {}),
        Toolbar = v1.createElement(l_PluginToolbar_0, {
            Title = if not l_EnableWindControlPluginRibbonButton_0 then v35.localization:getText("Plugin", "Toolbar") else "windControl",
            RenderButtons = function(v39)
                return v35:renderButtons(v39);
            end
        })
    });
end;
v23.willUnmount = function(v40)
    if not (not l_EnableWindControlRBXTelemetry_0 or not v40.analytics) then
        v40.logUsageReport("placeClosing");
    end;
    if not (not l_EnableWindControlPluginPropertyButton_0 or not v40.onOpenWindControlEditorConnection) then
        v40.onOpenWindControlEditorConnection:Disconnect();
        v40.onOpenWindControlEditorConnection = nil;
    end;
end;
return v23;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Cryo);
local v2 = require(l_Parent_0.Src.Util.AnalyticsGlobals);
return function(v3)
    local function v7(v4, v5, v6)
        v3:SendEventDeferred("studio", v5 or "WindControl", v4, (v1.Dictionary.join({
            placeId = game.PlaceId
        }, v6 or {})));
    end;
    return {
        openedFromRibbon = function()
            v7("windsockOrigin", "ribbon");
        end,
        openedFromProperties = function()
            v7("windsockOrigin", "properties");
        end,
        usageReport = function(v8)
            local v9 = not v8 and "placeClosing" or "widgetDisabled";
            if v2:totalCount() > 0 then
                v7("windsockUsage", v9, {
                    textFieldCount = v2.textFieldCount,
                    sliderCount = v2.sliderCount,
                    greenCircleCount = v2.greenCircleCount
                });
                v2:reset();
            end;
        end
    };
end;


local l_StudioTheme_0 = require(script.Parent.Parent.Parent.Packages.Framework).Style.Themes.StudioTheme;
local v1 = {
    MainGui = {
        BackgroundPane = {
            ZIndex = 0,
            Position = UDim2.new(0, -50, 0, 40),
            Size = UDim2.fromOffset(210, 120),
            Style = "CornerBox",
            BackgroundColor = Color3.new(0.4, 0.4, 0.4),
            Transparency = 0.65
        },
        ViewportFrame = {
            Size = UDim2.fromOffset(180, 160),
            Position = UDim2.fromOffset(55, 15)
        },
        CameraFOV = 70
    },
    WindspeedDisplay = {
        Size = UDim2.fromOffset(85, 60),
        Position = UDim2.fromScale(-0.2, 0.5),
        ArrowDown = "rbxasset://textures/WindControl/ArrowDown.png",
        ArrowUp = "rbxasset://textures/WindControl/ArrowUp.png",
        TextLabel = {
            Size = UDim2.fromScale(1, 0.5),
            Position = UDim2.fromScale(0, 0.5),
            Style = {
                Font = Enum.Font.SourceSansSemibold,
                TextSize = 26,
                TextColor = Color3.new(1, 1, 1),
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top
            }
        },
        Slider = {
            Size = UDim2.fromOffset(195, 15),
            Position = UDim2.fromScale(0, 1)
        },
        ButtonTextSize = 16,
        ButtonSize = UDim2.fromScale(1, 0.33),
        ButtonTransparency = 0.7,
        MinusButtonPosition = UDim2.new(0.25, 0, 1, -20),
        BigMinusButtonPosition = UDim2.new(0.05, 0, 1, -20),
        PlusButtonPosition = UDim2.new(0.25, 0, 0, 0),
        BigPlusButtonPosition = UDim2.new(0.05, 0, 0, 0),
        activeLabelColor = Color3.new(1, 1, 1),
        inactiveLabelColor = Color3.new(0.8, 0.8, 0.8)
    }
};
return function(v2)
    local _ = nil;
    return (if not v2 then l_StudioTheme_0.new() else l_StudioTheme_0.mock()):extend(v1);
end;


return {
    textFieldCount = 0,
    sliderCount = 0,
    greenCircleCount = 0,
    reset = function(v0)
        v0.textFieldCount = 0;
        v0.sliderCount = 0;
        v0.greenCircleCount = 0;
    end,
    totalCount = function(v1)
        return (v1.textFieldCount + v1.sliderCount) + v1.greenCircleCount;
    end
};


local v0 = require(script.Parent.TelemetryProtocol);
return {
    eventName = "windsockOrigin",
    backends = {
        v0.TelemetryBackends.EventIngest
    },
    throttlingPercentage = v0.ONE_HUNDRED_PERCENT,
    lastUpdated = {
        23,
        8,
        7
    },
    description = "Open the Windsock widget in Studio. Does not fire when dismissing the widdget",
    links = "https://roblox.atlassian.net/l/cp/ysYjQfcq"
};


local v0 = require(script.Parent.TelemetryProtocol);
return {
    eventName = "windsockUsage",
    backends = {
        v0.TelemetryBackends.EventIngest
    },
    throttlingPercentage = v0.ONE_HUNDRED_PERCENT,
    lastUpdated = {
        23,
        8,
        7
    },
    description = "Reports aggregate counts of the three main interaction types in the windsock widget",
    links = "https://roblox.atlassian.net/l/cp/ysYjQfcq"
};


require(script.Parent.Parent.Common.defineLuaFlags);
if game:GetService("RunService"):IsEdit() then
    local l_PlaceId_0 = game.PlaceId;
    local l_GameId_0 = game.GameId;
    plugin:SetItem("placeid", l_PlaceId_0);
    plugin:SetItem("universeid", l_GameId_0);
    plugin:Invoke("idsupdated");
    game:GetPropertyChangedSignal("PlaceId"):Connect(function()
        plugin:SetItem("placeid", game.PlaceId);
        plugin:Invoke("idsupdated");
    end);
    game:GetPropertyChangedSignal("GameId"):Connect(function()
        plugin:SetItem("universeid", game.GameId);
        plugin:Invoke("idsupdated");
    end);
end;
if plugin then
    local l_Parent_0 = script.Parent.Parent.Parent;
    local v3 = require(l_Parent_0.Packages.TestLoader);
    v3.launch("ActivityFeed", l_Parent_0.Src);
    if not v3.isCli() then
        return ;
    else
        return ;
    end;
else
    return ;
end;


game:DefineFastFlag("COLLAB4260ActivityFeed", false);
game:DefineFastInt("ActivityFeedEndpointFetchCount", 50);
game:DefineFastInt("ActivityFeedRefreshMs", 60000);
game:DefineFastFlag("ActivityHistoryTelemetry", false);
return nil;


require(script.Parent.Parent.Common.defineLuaFlags);
local l_Common_0 = script.Parent.Parent.Common;
if plugin then
    local l_Parent_0 = script.Parent.Parent.Parent;
    require(l_Common_0.commonInit)();
    local v2 = require(l_Parent_0.Packages.TestLoader);
    v2.launch("ActivityFeed", l_Parent_0.Src);
    if not v2.isCli() then
        if game:GetFastFlag("COLLAB4260ActivityFeed") then
            local l_Frame_0 = Instance.new("Frame");
            local v4 = require(l_Parent_0.Packages.React);
            local v5 = require(l_Parent_0.Packages.ReactRoblox);
            local v6 = require(l_Parent_0.Src.MainPlugin);
            local v7 = nil;
            local function v9()
                plugin.Name = l_Parent_0.Name;
                local v8 = v4.createElement(v6, {
                    Plugin = plugin
                });
                v7 = v5.createRoot(l_Frame_0);
                if v7 then
                    v7:render(v8);
                end;
            end;
            plugin.Unloading:Connect(function()
                if v7 then
                    v7:render(nil);
                    v7 = nil;
                end;
            end);
            v9();
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local _ = require(l_Parent_0.Src.Util.ActivityHistoryEventTranslated);
local v4 = require(l_Parent_0.Src.Contexts.ActivityHistoryContext);
local v5 = require(l_Parent_0.Src.Util.BaseUrls);
local l_UI_0 = v2.UI;
local l_Localization_0 = v2.ContextServices.Localization;
local l_Analytics_0 = v2.ContextServices.Analytics;
local l_DropdownMenu_0 = l_UI_0.DropdownMenu;
local l_joinTags_0 = v2.Styling.joinTags;
local v11 = v2.Util.LayoutOrderIterator.new();
local v19 = {
    Universe = function(v12)
        return (("rbxthumb://type=GameIcon&id=%*&w=50&h=50"):format(v12));
    end,
    Place = function(v13)
        return (("rbxthumb://type=Asset&id=%*&w=150&h=150"):format(v13));
    end,
    User = function(v14)
        return (("rbxthumb://type=AvatarHeadShot&id=%*&w=48&h=48"):format(v14));
    end,
    Badge = function(v15)
        return (("rbxthumb://type=BadgeIcon&id=%*&w=150&h=150"):format(v15));
    end,
    DeveloperProduct = function(_)
        return "";
    end,
    GamePass = function(v17)
        return (("rbxthumb://type=GamePass&id=%*&w=150&h=150"):format(v17));
    end,
    Group = function(v18)
        return (("rbxthumb://type=GroupIcon&id=%*&w=150&h=150"):format(v18));
    end
};
local v34 = {
    Universe = function(_, v21)
        return v5.createPath .. "dashboard/creations/experiences/" .. tostring(v21) .. "/overview";
    end,
    Place = function(_, v23)
        return v5.wwwPath .. "games/" .. tostring(v23);
    end,
    User = function(_, v25)
        return v5.wwwPath .. "users/" .. tostring(v25) .. "/profile";
    end,
    Badge = function(_, v27)
        return v5.createPath .. "dashboard/creations/experiences/" .. tostring(v27) .. "/badges/" .. tostring(v27) .. "/overview";
    end,
    DeveloperProduct = function(_, v29)
        return v5.createPath .. "dashboard/creations/experiences/" .. tostring(v29) .. "/developer-products/" .. tostring(v29) .. "/configure";
    end,
    GamePass = function(_, v31)
        return v5.createPath .. "dashboard/creations/experiences/" .. tostring(v31) .. "/passes/" .. tostring(v31) .. "/configure";
    end,
    Group = function(_, v33)
        return v5.wwwPath .. "groups/" .. tostring(v33);
    end
};
local function _(v35, v36)
    local v37 = tostring(v36);
    if not v19[v35] then
        return "";
    else
        return v19[v35](v37);
    end;
end;
local function _(v39)
    if v39 == "User" then
        return true;
    else
        return false;
    end;
end;
local function v68(v41)
    local v42 = l_Localization_0:use();
    local v43 = l_Analytics_0:use();
    local v44 = v1.useContext(v4);
    local v45, v46 = v1.useState(false);
    local v47 = true;
    if v41.Bubble.viewBasicSettingsLink == nil then
        v47 = v41.Bubble.viewOnRobloxLink ~= nil;
    end;
    local v49 = v1.useMemo(function()
        local v48 = {};
        if v41.Bubble.viewBasicSettingsLink then
            table.insert(v48, v42:getText("Bubble", "ViewOnCreatorDashboard"));
        end;
        if v41.Bubble.viewOnRobloxLink then
            table.insert(v48, v42:getText("Bubble", "ViewOnRoblox"));
        end;
        return v48;
    end, {
        v41.Bubble.viewBasicSettingsLink,
        v41.Bubble.viewOnRobloxLink
    });
    local v51 = v1.useMemo(function()
        local v50 = {};
        if v41.Bubble.viewBasicSettingsLink then
            table.insert(v50, {
                type = "viewBasicSetting",
                link = v41.Bubble.viewBasicSettingsLink
            });
        end;
        if v41.Bubble.viewOnRobloxLink then
            table.insert(v50, {
                type = "viewOnRoblox",
                link = v41.Bubble.viewOnRobloxLink
            });
        end;
        return v50;
    end, {
        v41.Bubble.viewBasicSettingsLink,
        v41.Bubble.viewOnRobloxLink
    });
    local function v54(_, v53)
        v46(false);
        if v51[v53] then
            v43:report("deeplink", v41.Bubble.eventType, v51[v53].type);
            v44.openBrowserLink(v51[v53].link);
        end;
    end;
    local function v55()
        v46(false);
    end;
    local function v56()
        v46(true);
    end;
    local v57 = v34[v41.Bubble.iconType];
    local v58 = nil;
    if not v57 then
        local l_createElement_0 = v1.createElement;
        local v60 = "ImageLabel";
        local v61 = {
            [v1.Tag] = not not (v41.Bubble.iconType == "User") and l_joinTags_0("RoundIcon") or l_joinTags_0("SquareIcon")
        };
        local l_iconType_0 = v41.Bubble.iconType;
        v61.Image = not v19[l_iconType_0] and "" or v19[l_iconType_0]((tostring(v41.Bubble.iconId)));
        v61.LayoutOrder = v11:getNextOrder();
        v58 = l_createElement_0(v60, v61);
    else
        local l_createElement_1 = v1.createElement;
        local v64 = "ImageButton";
        local v65 = {
            [v1.Tag] = not not (v41.Bubble.iconType == "User") and l_joinTags_0("RoundIcon") or l_joinTags_0("SquareIcon")
        };
        local l_iconType_1 = v41.Bubble.iconType;
        v65.Image = not v19[l_iconType_1] and "" or v19[l_iconType_1]((tostring(v41.Bubble.iconId)));
        v65.LayoutOrder = v11:getNextOrder();
        v65[v1.Event.Activated] = function()
            v43:report("deeplink", v41.Bubble.eventType, v41.Bubble.iconType);
            v44.openBrowserLink(v57(v41.Bubble.universeId, v41.Bubble.iconId));
        end;
        v58 = l_createElement_1(v64, v65);
    end;
    local function v67()
        v43:report("deeplink", v41.Bubble.eventType, "actorProfile");
        v44.openBrowserLink(v34.User(tostring(v41.Bubble.universeId), (tostring(v41.Bubble.actorId))));
    end;
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("Component-ActivityHistoryBubble", "X-Row")
    }, {
        Left = v1.createElement("Frame", {
            [v1.Tag] = l_joinTags_0("CX-Invisible"),
            LayoutOrder = v11:getNextOrder()
        }, {
            Icon = v58
        }),
        Right = v1.createElement("Frame", {
            [v1.Tag] = l_joinTags_0("X-Column", "CX-Invisible"),
            LayoutOrder = v11:getNextOrder()
        }, {
            Top = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("X-Row", "CX-Invisible"),
                LayoutOrder = v11:getNextOrder()
            }, {
                Date = v1.createElement("TextLabel", {
                    LayoutOrder = v11:getNextOrder(),
                    Text = v41.Bubble.date
                }),
                DotDotDot = if v47 then v1.createElement("Frame", {
                    [v1.Tag] = l_joinTags_0("CX-Invisible"),
                    LayoutOrder = v11:getNextOrder()
                }, {
                    Dropdown = v1.createElement(l_DropdownMenu_0, {
                        Items = v49,
                        Hide = not v45,
                        OnItemActivated = v54,
                        OnFocusLost = v55,
                        Width = 240
                    }),
                    Button = v1.createElement("ImageButton", {
                        [v1.Tag] = l_joinTags_0("X-Fill"),
                        LayoutOrder = v11:getNextOrder(),
                        AutoButtonColor = true,
                        [v1.Event.Activated] = v56
                    })
                }) else nil
            }),
            Middle = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("CX-Invisible"),
                LayoutOrder = v11:getNextOrder()
            }, {
                v1.createElement("TextLabel", {
                    [v1.Tag] = l_joinTags_0("X-Fill"),
                    RichText = true,
                    Text = v41.Bubble.translation
                })
            }),
            MiddlePadding = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("CX-Invisible"),
                LayoutOrder = v11:getNextOrder()
            }),
            Bottom = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("X-Row", "CX-Invisible"),
                LayoutOrder = v11:getNextOrder()
            }, {
                Icon = v1.createElement("ImageButton", {
                    Image = not v19.User and "" or v19.User((tostring(v41.Bubble.actorId))),
                    LayoutOrder = v11:getNextOrder(),
                    [v1.Event.Activated] = v67
                }),
                TargetName = v1.createElement("TextButton", {
                    LayoutOrder = v11:getNextOrder(),
                    Text = "  " .. v41.Bubble.actorName,
                    [v1.Event.Activated] = v67
                })
            })
        })
    });
end;
local v69 = v1.PureComponent:extend("ActivityHistoryBubble");
v69.render = function(v70)
    return v1.createElement(v68, v70.props);
end;
return v69;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Src.Resources.StyleTips);
local l_createStyleRule_0 = v1.Styling.createStyleRule;
local l_bubbleTopHeight_0 = v2.bubbleTopHeight;
local l_bubbleMiddleHeight_0 = v2.bubbleMiddleHeight;
local l_bubbleMiddlePadding_0 = v2.bubbleMiddlePadding;
local l_bubbleBottomHeight_0 = v2.bubbleBottomHeight;
local l_bubbleHeight_0 = v2.bubbleHeight;
local l_bubblePaddingHalf_0 = v2.bubblePaddingHalf;
return l_createStyleRule_0(".Component-ActivityHistoryBubble", {
    Size = UDim2.new(1, 0, 0, l_bubbleHeight_0),
    BackgroundColor3 = "$ForegroundMain"
}, {
    l_createStyleRule_0("::UICorner", {
        CornerRadius = UDim.new(0, v2.bubbleCornerRadius)
    }),
    l_createStyleRule_0("::UIStroke", {
        Color = "$Divider",
        Thickness = 1
    }),
    l_createStyleRule_0("::UIPadding", {
        PaddingTop = UDim.new(0, l_bubblePaddingHalf_0),
        PaddingBottom = UDim.new(0, l_bubblePaddingHalf_0),
        PaddingLeft = UDim.new(0, l_bubblePaddingHalf_0),
        PaddingRight = UDim.new(0, l_bubblePaddingHalf_0)
    }),
    l_createStyleRule_0(":hover", {
        BackgroundColor3 = "$ForegroundContrast"
    }),
    l_createStyleRule_0(">> TextLabel", {
        TextColor3 = "$TextPrimary",
        BackgroundTransparency = 1
    }),
    l_createStyleRule_0("> #Left", {
        Size = UDim2.new(0, 16, 1, 0)
    }, {
        l_createStyleRule_0("> #Icon", {
            Position = UDim2.new(0, 0, 0, 20),
            Size = UDim2.new(0, 16, 0, 16)
        }),
        l_createStyleRule_0("> .RoundIcon", {}, {
            l_createStyleRule_0("::UICorner", {
                CornerRadius = UDim.new(0, 8)
            })
        }),
        l_createStyleRule_0("> .SquareIcon", {}, {
            l_createStyleRule_0("::UICorner", {
                CornerRadius = UDim.new(0, 5)
            })
        })
    }),
    l_createStyleRule_0("> #Right", {
        Size = UDim2.new(1, -16, 1, 0)
    }, {
        l_createStyleRule_0("::UIPadding", {
            PaddingLeft = UDim.new(0, 8)
        }),
        l_createStyleRule_0(">> TextLabel", {
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Center
        }),
        l_createStyleRule_0("> #Top", {
            Size = UDim2.new(1, 0, 0, l_bubbleTopHeight_0)
        }, {
            l_createStyleRule_0("> #DotDotDot", {
                Size = UDim2.new(0, l_bubbleTopHeight_0, 0, l_bubbleTopHeight_0)
            }, {
                l_createStyleRule_0("> ImageButton", {
                    BorderSizePixel = 0,
                    Image = "$threedotsicon",
                    BackgroundTransparency = 1,
                    ScaleType = Enum.ScaleType.Fit
                })
            }),
            l_createStyleRule_0("> #Date", {
                Size = UDim2.new(1, -l_bubbleTopHeight_0, 1, 0),
                TextSize = v2.detailFontSize,
                TextColor3 = "$TextSecondary"
            })
        }),
        l_createStyleRule_0("> #Middle", {
            Size = UDim2.new(1, 0, 0, l_bubbleMiddleHeight_0)
        }, {
            l_createStyleRule_0("::UIPadding", {
                PaddingRight = UDim.new(0, 8)
            }),
            l_createStyleRule_0("> #More", {
                Size = UDim2.new(0, 30, 0, l_bubbleTopHeight_0),
                BackgroundTransparency = 0
            }),
            l_createStyleRule_0(">> TextLabel", {
                TextColor3 = "$TextPrimary",
                TextSize = v2.normalFontSize,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Top,
                TextTruncate = Enum.TextTruncate.SplitWord,
                TextWrapped = false
            })
        }),
        l_createStyleRule_0("> #MiddlePadding", {
            Size = UDim2.new(1, 0, 0, l_bubbleMiddlePadding_0)
        }),
        l_createStyleRule_0("> #Bottom", {
            Size = UDim2.new(1, 0, 0, l_bubbleBottomHeight_0)
        }, {
            l_createStyleRule_0("::UIPadding", {
                PaddingRight = UDim.new(0, 4)
            }),
            l_createStyleRule_0("> #Icon", {
                Size = UDim2.new(0, 16, 0, 16)
            }, {
                l_createStyleRule_0("::UICorner", {
                    CornerRadius = UDim.new(0, 8)
                })
            }),
            l_createStyleRule_0("> #TargetName", {
                Size = UDim2.new(1, -16, 1, 0),
                TextSize = v2.detailFontSize,
                TextColor3 = "$TextSecondary",
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center,
                BackgroundTransparency = 1
            }, {
                l_createStyleRule_0(":hover", {
                    TextColor3 = "$TextPrimary"
                })
            })
        })
    }),
    l_createStyleRule_0(".TargetIcon ::UICorner", {
        CornerRadius = UDim.new(0, 8)
    }),
    l_createStyleRule_0(":hover", {
        AutomaticSize = Enum.AutomaticSize.Y
    }, {
        l_createStyleRule_0(">> #Middle", {
            AutomaticSize = Enum.AutomaticSize.Y
        }, {
            l_createStyleRule_0(">> TextLabel", {
                TextWrapped = true,
                TextTruncate = Enum.TextTruncate.None
            })
        })
    })
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local v3 = require(l_Parent_0.Packages.Cryo);
local v4 = require(l_Parent_0.Packages.VirtualizedList);
local v5 = require(l_Parent_0.Src.Resources.StyleTips);
local _ = require(l_Parent_0.Src.Clients.ActivityHistoryClient);
local v7 = require(l_Parent_0.Src.Components.ActivityHistoryBubble);
local v8 = require(l_Parent_0.Src.Util.ActivityHistoryEventTranslated);
local v9 = require(l_Parent_0.Src.Hooks.UsernameCache);
local l_VirtualizedList_0 = v4.VirtualizedList;
local l_UI_0 = v2.UI;
local l_Localization_0 = v2.ContextServices.Localization;
local l_keys_0 = v3.Dictionary.keys;
local l_values_0 = v3.Dictionary.values;
local _ = l_UI_0.Button;
local l_joinTags_0 = v2.Styling.joinTags;
local function v19(v17, v18)
    if not v17 or not v17[v18] then
        return nil;
    else
        if v17[v18].key == nil then
            v17[v18].key = v17[v18].id;
        end;
        return v17[v18];
    end;
end;
local function v21(v20)
    if v20 == nil then
        return 0;
    else
        return #v20;
    end;
end;
local function v24(_, v23)
    return {
        length = v5.bubbleHeight,
        offset = v5.bubbleHeight * v23,
        index = v23
    };
end;
local function v26(v25)
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("X-Border", "X-Fill", "CX-Invisible", "Component-BubbleFrame")
    }, {
        BubbleContainer = v1.createElement(v7, {
            Bubble = v25.item
        })
    });
end;
local function v42()
    local v27 = v9();
    local v28, _ = v1.useState({});
    local v30 = l_Localization_0:use();
    return {
        updated = v27.cache,
        getTranslations = function(v31)
            local v32 = {};
            local v33 = {};
            for _, v35 in pairs(v31) do
                local v36 = false;
                do
                    local l_v36_0 = v36;
                    local function v40(v38)
                        if v38 ~= nil then
                            local v39 = v27.cache[v38];
                            if not v39 then
                                l_v36_0 = true;
                                v33[v38] = true;
                            else
                                return v39;
                            end;
                        end;
                        return v30:getText("Bubble", "Unknown");
                    end;
                    local v41 = v28[v35.id];
                    if not v41 then
                        v41 = v8.translateEvent(v40, v30, v35);
                        if not l_v36_0 then
                            v28[v35.id] = v41;
                        end;
                    end;
                    table.insert(v32, v41);
                end;
            end;
            v27.fetchUsernames(l_keys_0(v33));
            return v32;
        end
    };
end;
local v43 = {
    minimumViewTime = 2000,
    viewAreaCoveragePercentThreshold = 80,
    itemVisiblePercentThreshold = nil,
    waitForInteraction = false
};
return function(v44)
    local v45 = v42();
    local v46 = v1.useMemo(function()
        return l_values_0((v45.getTranslations(v44.Events)));
    end, {
        v44.Events,
        v45.updated
    });
    local v51 = v1.useCallback(function(v47)
        local v48 = {};
        for _, v50 in pairs(v47.viewableItems) do
            v48[v50.key] = true;
        end;
        v44.OnViewableItemsChanged(v48);
    end, {
        v44.OnViewableItemsChanged
    });
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("X-Fill", "CX-Invisible", "Component-ActivityHistoryBubbleList")
    }, {
        VirtualizedList = v1.createElement(l_VirtualizedList_0, {
            ref = v1.useRef(nil),
            data = v46,
            getItem = v19,
            getItemCount = v21,
            getItemLayout = v24,
            renderItem = v26,
            windowSize = 3,
            viewabilityConfigCallbackPairs = {
                (v1.useMemo(function()
                    return {
                        viewabilityConfig = v43,
                        onViewableItemsChanged = v51
                    };
                end, {
                    v51
                }))
            },
            showsVerticalScrollIndicator = false,
            showsHorizontalScrollIndicator = false,
            onEndReached = v44.OnEndReached,
            keyExtractor = function(v52)
                return v52.id;
            end
        })
    });
end;


local l_createStyleRule_0 = require(script.Parent.Parent.Parent.Parent.Packages.Framework).Styling.createStyleRule;
return l_createStyleRule_0(".Component-ActivityHistoryBubbleList", {}, {
    l_createStyleRule_0(">> .Component-BubbleFrame", {}, {
        l_createStyleRule_0("::UIPadding", {
            PaddingTop = UDim.new(0, 4),
            PaddingLeft = UDim.new(0, 1),
            PaddingRight = UDim.new(0, 2)
        })
    }),
    l_createStyleRule_0("> ScrollingFrame", {
        BackgroundTransparency = 1
    }, {
        l_createStyleRule_0("> Frame", {
            BackgroundTransparency = 1
        })
    })
});


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_createStyleRule_0 = require(l_Parent_0.Packages.Framework).Styling.createStyleRule;
local v2 = require(l_Parent_0.Src.Resources.StyleTips);
local v3 = v2.filterHeaderHeight - 4;
return l_createStyleRule_0(".Component-ActivityHistoryMain", {
    Size = UDim2.new(1, 0, 1, 0),
    BackgroundColor3 = "$BackgroundPaper"
}, {
    l_createStyleRule_0("> #EventList", {
        Size = UDim2.new(1, 0, 1, 0)
    }, {
        l_createStyleRule_0("::UIPadding", {
            PaddingTop = UDim.new(0, 4),
            PaddingBottom = UDim.new(0, 4),
            PaddingLeft = UDim.new(0, 4),
            PaddingRight = UDim.new(0, 4)
        }),
        l_createStyleRule_0("> #HeaderContainer", {
            Size = UDim2.new(1, 0, 0, v2.filterHeaderHeight)
        }, {
            l_createStyleRule_0(">> #Header", {}, {
                l_createStyleRule_0("::UICorner", {
                    CornerRadius = UDim.new(0, v2.bubbleCornerRadius)
                }),
                l_createStyleRule_0("::UIStroke", {
                    Color = "$Divider",
                    Thickness = 1
                }),
                l_createStyleRule_0("> #ToggleFilterMenuButton", {
                    BackgroundColor3 = "$BackgroundPaper",
                    TextColor3 = "$TextPrimary",
                    TextSize = v2.headerFontSize
                }, {
                    l_createStyleRule_0("::UICorner", {
                        CornerRadius = UDim.new(0, v2.bubbleCornerRadius)
                    }),
                    l_createStyleRule_0(":hover", {
                        BackgroundColor3 = "$ActionHover"
                    })
                }),
                l_createStyleRule_0("> #FilterMenuToggleIconContainer", {
                    Size = UDim2.new(0, v3, 0, v3),
                    Position = UDim2.new(1, -v3, 0, 0)
                }, {
                    l_createStyleRule_0("> #FilterMenuToggleIcon", {
                        Size = UDim2.new(0, 16, 0, 16),
                        AnchorPoint = Vector2.new(0.5, 0.5),
                        Position = UDim2.new(0.5, 0, 0.5, 0),
                        Image = "$toggleicon",
                        BackgroundTransparency = 1
                    })
                })
            })
        }),
        l_createStyleRule_0("> #ActivityHistoryBubbleListContainer", {
            Size = UDim2.new(1, 0, 1, -v2.filterHeaderHeight)
        })
    }),
    l_createStyleRule_0("> #FilterMenu", {
        Size = UDim2.new(1, 0, 1, 0)
    }),
    l_createStyleRule_0("> #Footer", {
        Size = UDim2.new(1, 0, 0, 0),
        BackgroundColor3 = "$ForegroundMain"
    }, {
        l_createStyleRule_0(">> .Component-TextLabel", {
            Size = UDim2.new(1, 0, 1, 0),
            TextColor3 = "$TextPrimary",
            TextXAlignment = Enum.TextXAlignment.Center,
            TextYAlignment = Enum.TextYAlignment.Center,
            BackgroundTransparency = 1
        }),
        l_createStyleRule_0("::UICorner", {
            CornerRadius = UDim.new(0, 20)
        })
    })
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Src.Clients.ActivityHistoryClient);
local _ = require(l_Parent_0.Src.Clients.MockActivityHistoryClient);
local v4 = require(l_Parent_0.Src.Contexts.ActivityHistoryProvider);
local v5 = require(l_Parent_0.Src.Components.ActivityHistoryMain);
local v6 = require(l_Parent_0.Src.Components.EnableTeamCreate);
local _ = require(l_Parent_0.Src.Components.StylingExamples);
local v8 = require(l_Parent_0.Src.Hooks.useCollaborators);
local v9 = require(l_Parent_0.Src.Hooks.usePlaceAndUniverseId);
return function(v10)
    local _, v12 = v9(v10.plugin);
    local v13 = v12 ~= 0;
    local function v19(v14, v15)
        local l_MultipleDocumentInterfaceInstance_0 = v10.plugin.MultipleDocumentInterfaceInstance;
        v1.useEffect(function()
            local v17 = l_MultipleDocumentInterfaceInstance_0.DataModelSessionStarted:Connect(v14);
            local v18 = l_MultipleDocumentInterfaceInstance_0.DataModelSessionEnded:Connect(v15);
            return function()
                v17:Disconnect();
                v18:Disconnect();
            end;
        end, {
            v14,
            v15
        });
    end;
    local l_GuiService_0 = game:GetService("GuiService");
    local l_StudioPublishService_0 = game:GetService("StudioPublishService");
    return v1.createElement(v4, {
        activityHistoryClient = v2,
        showSaveOrPublishPlaceToRobloxFn = function()
            l_StudioPublishService_0:ShowSaveOrPublishPlaceToRoblox(false, false, Enum.StudioCloseMode.None);
        end,
        useCollaborators = v8,
        usePlaceAndUniverseId = v9,
        useConnectToDataModelSessionEffect = v19,
        openBrowserLink = function(v22)
            l_GuiService_0:OpenBrowserWindow(v22);
        end,
        contextType = "real context"
    }, {
        EnableTeamCreate = not v13 and v1.createElement(v6, {}),
        ActivityHistoryMain = v13 and v1.createElement(v5, {
            plugin = v10.plugin
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local v3 = require(l_Parent_0.Src.Contexts.ActivityHistoryContext);
local l_Localization_0 = v2.ContextServices.Localization;
local v5 = v2.Util.LayoutOrderIterator.new();
local l_joinTags_0 = v2.Styling.joinTags;
return function(_)
    local v8 = v1.useContext(v3);
    local v9 = l_Localization_0:use();
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("X-Column", "X-Middle", "X-Center", "Component-EnableTeamCreate")
    }, {
        Text = v1.createElement("TextLabel", {
            [v1.Tag] = l_joinTags_0("CX-Invisible", "X-Fit"),
            LayoutOrder = v5:getNextOrder(),
            Text = v9:getText("EnableTeamCreate", "SaveText")
        }),
        Button = v1.createElement("TextButton", {
            [v1.Tag] = l_joinTags_0("X-Corner", "X-Fit"),
            LayoutOrder = v5:getNextOrder(),
            [v1.Event.Activated] = function()
                v8.showSaveOrPublishPlaceToRobloxFn();
            end,
            Text = v9:getText("EnableTeamCreate", "SaveToRobloxButtonText")
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_createStyleRule_0 = require(l_Parent_0.Packages.Framework).Styling.createStyleRule;
local v2 = require(l_Parent_0.Src.Resources.StyleTips);
return l_createStyleRule_0(".Component-EnableTeamCreate", {
    Size = UDim2.new(1, 0, 1, 0),
    BackgroundColor3 = "$SecondaryMuted"
}, {
    l_createStyleRule_0("::UIListLayout", {
        Padding = UDim.new(0, 16)
    }),
    l_createStyleRule_0("> #Text", {
        TextXAlignment = Enum.TextXAlignment.Center,
        TextColor3 = "$TextPrimary",
        TextSize = v2.detailFontSize
    }),
    l_createStyleRule_0("> #Button", {
        BackgroundColor3 = "$PrimaryMain",
        TextColor3 = "$TextContrast",
        TextSize = v2.buttonFontSize
    }, {
        l_createStyleRule_0("::UIPadding", {
            PaddingTop = UDim.new(0, 8),
            PaddingBottom = UDim.new(0, 8),
            PaddingLeft = UDim.new(0, 16),
            PaddingRight = UDim.new(0, 16)
        }),
        l_createStyleRule_0(":hover", {
            BackgroundColor3 = "$PrimaryHoverBackground"
        })
    })
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local l_joinTags_0 = v2.Styling.joinTags;
local l_DropdownMenu_0 = v2.UI.DropdownMenu;
return function(v5)
    local v6, v7 = v1.useState(false);
    local v8, v9 = v1.useState(Vector2.new(0, 0));
    local v10 = v1.useMemo(function()
        return v8.X;
    end, {
        v8
    });
    local v11, v12 = v1.useState("All Events");
    local v16 = v1.useMemo(function()
        local v13 = {};
        for v14, v15 in pairs(v5.items) do
            v13[v15] = v14;
        end;
        return v13;
    end, {
        v5.items
    });
    local v20 = v1.useMemo(function()
        local v17 = {};
        for _, v19 in pairs(v5.items) do
            table.insert(v17, v19);
        end;
        return v17;
    end, {
        v5.items
    });
    local function v23(v21, _)
        v12(v21);
        v7(false);
        v5.OnChanged(v16[v21]);
    end;
    local function v24()
        v7(false);
    end;
    local function v25()
        v7(true);
    end;
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("Component-FilterDropdown"),
        LayoutOrder = v5.LayoutOrder,
        [v1.Change.AbsoluteSize] = function(v26)
            v9(v26.AbsoluteSize);
        end
    }, {
        Selected = v1.createElement("TextButton", {
            [v1.Tag] = l_joinTags_0("X-Fill", "CX-Invisible"),
            Text = v11,
            ZIndex = 100,
            [v1.Event.Activated] = v25
        }),
        ButtonContainer = v1.createElement("Frame", {
            [v1.Tag] = l_joinTags_0("CX-Invisible"),
            ZIndex = 101
        }, {
            Button = v1.createElement("ImageButton", {
                [v1.Event.Activated] = v25
            })
        }),
        Menu = v1.createElement(l_DropdownMenu_0, {
            Items = v20,
            Width = v10,
            Hide = not v6,
            OnItemActivated = v23,
            OnFocusLost = v24
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Src.Resources.StyleTips);
local l_createStyleRule_0 = v1.Styling.createStyleRule;
return l_createStyleRule_0(".Component-FilterDropdown", {
    BorderSizePixel = 1,
    BackgroundColor3 = "$BackgroundPaper",
    BorderColor3 = "$BackgroundDefault"
}, {
    l_createStyleRule_0("::UICorner", {
        CornerRadius = UDim.new(0, v2.bubbleCornerRadius)
    }),
    l_createStyleRule_0(":hover", {
        BackgroundColor3 = "$ActionHover"
    }),
    l_createStyleRule_0("::UIPadding", {
        PaddingLeft = UDim.new(0, 8),
        PaddingRight = UDim.new(0, 8),
        PaddingTop = UDim.new(0, 3),
        PaddingBottom = UDim.new(0, 3)
    }),
    l_createStyleRule_0("> #Selected", {
        TextColor3 = "$TextPrimary",
        TextSize = v2.normalFontSize,
        TextXAlignment = Enum.TextXAlignment.Left
    }),
    l_createStyleRule_0("> #ButtonContainer", {
        Position = UDim2.new(1, -34, 0, 0),
        Size = UDim2.new(0, 34, 1, 0)
    }, {
        l_createStyleRule_0("> #Button", {
            Size = UDim2.new(0, 16, 0, 16),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            Image = "$arrowdownicon"
        })
    })
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.React);
local v2 = require(l_Parent_0.Packages.Framework);
local v3 = require(l_Parent_0.Packages.Cryo);
local v4 = require(l_Parent_0.Src.Components.FilterDropdown);
local v5 = require(l_Parent_0.Src.Resources.StyleTips);
local l_Localization_0 = v2.ContextServices.Localization;
local l_Checkbox_0 = v2.UI.Checkbox;
local v8 = v2.Util.LayoutOrderIterator.new();
local l_joinTags_0 = v2.Styling.joinTags;
local function v11(v10)
    return {
        Experience = v10:getText("FilterMenu", "FilterForExperience"),
        Localization = v10:getText("FilterMenu", "FilterForLocalization"),
        Monetization = v10:getText("FilterMenu", "FilterForMonetization"),
        Permissions = v10:getText("FilterMenu", "FilterForPermissions"),
        Place = v10:getText("FilterMenu", "FilterForPlace"),
        Publish = v10:getText("FilterMenu", "FilterForPublish")
    };
end;
local function v13(v12)
    return {
        v12:getText("FilterMenu", "FilterForAllEvents"),
        v12:getText("FilterMenu", "FilterFor7days"),
        v12:getText("FilterMenu", "FilterFor30days"),
        v12:getText("FilterMenu", "FilterFor90days"),
        v12:getText("FilterMenu", "FilterFor365days")
    };
end;
local v14 = {
    0,
    7,
    30,
    90,
    365
};
local v15 = {
    EndDate = "",
    ExcludedEventCategories = {},
    ShowCollaborators = {},
    ShowEveryoneElse = true
};
local function v20(v16)
    local v17 = {};
    for v18, v19 in pairs(v16) do
        if not v19 then
            table.insert(v17, v18);
        end;
    end;
    return v17;
end;
local v65 = v1.forwardRef(function(v21, v22)
    local v23 = l_Localization_0:use();
    local v24 = {};
    for v25, _ in pairs(v21.rows) do
        v24[v25] = true;
    end;
    local v27, v28 = v1.useState(v24);
    v1.useImperativeHandle(v22, function()
        return {
            resetRows = function(v29)
                local v30 = {};
                for v31, _ in pairs(v29) do
                    v30[v31] = true;
                end;
                v28(v30);
            end
        };
    end);
    local v35 = v1.useMemo(function()
        for _, v34 in pairs(v27) do
            if not v34 then
                return false;
            end;
        end;
        return true;
    end, {
        v27
    });
    local v39 = v1.useCallback(function()
        local v36 = {};
        for v37, _ in pairs(v21.rows) do
            v36[v37] = not v35;
        end;
        v28(v36);
        v21.OnChange(v36);
    end, {
        v35
    });
    local v40 = v1.useMemo(function()
        if v21.ordering == nil then
            return v3.Dictionary.keys(v21.rows);
        else
            return v21.ordering;
        end;
    end, {
        v21.ordering,
        v21.rows
    });
    local v41 = v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("X-Row", "Component-FilterMenu-By"),
        LayoutOrder = v8:getNextOrder()
    }, {
        Label = v1.createElement("TextLabel", {
            Text = v21.title,
            LayoutOrder = v8:getNextOrder()
        }),
        SelectAll = v1.createElement("TextButton", {
            [v1.Tag] = l_joinTags_0("Component-OptionButton"),
            Text = not not v35 and v23:getText("FilterMenu", "UnselectAll") or v23:getText("FilterMenu", "SelectAll"),
            LayoutOrder = v8:getNextOrder(),
            [v1.Event.Activated] = v39
        })
    });
    local v42 = {};
    local v43 = 1;
    for _, v45 in ipairs(v40) do
        local v46 = v21.rows[v45];
        if v46 ~= nil then
            v43 = v43 + 1;
            local function v52()
                local l_join_0 = v3.Dictionary.join;
                local l_v27_0 = v27;
                local v49 = {};
                local l_v45_0 = v45;
                local v51 = true;
                if v27[v45] ~= nil then
                    v51 = v27[v45];
                end;
                v49[l_v45_0] = not v51;
                l_join_0 = l_join_0(l_v27_0, v49);
                v28(l_join_0);
                v21.OnChange(l_join_0);
            end;
            local l_createElement_0 = v1.createElement;
            local v54 = "Frame";
            local v55 = {
                [v1.Tag] = l_joinTags_0("X-Row", "Component-FilterMenu-CheckBoxes", "CX-Invisible"),
                LayoutOrder = v8:getNextOrder()
            };
            local v56 = {};
            local l_createElement_1 = v1.createElement;
            local v58 = "Frame";
            local v59 = {
                [v1.Tag] = l_joinTags_0("CX-Invisible")
            };
            local v60 = {};
            local l_createElement_2 = v1.createElement;
            local l_l_Checkbox_0_0 = l_Checkbox_0;
            local v63 = {
                LayoutOrder = v8:getNextOrder()
            };
            local v64 = true;
            if v27[v45] ~= nil then
                v64 = v27[v45];
            end;
            v63.Checked = v64;
            v63.OnClick = v52;
            v60.Checkbox = l_createElement_2(l_l_Checkbox_0_0, v63);
            v56.CheckboxContainer = l_createElement_1(v58, v59, v60);
            v56.Text = v1.createElement("TextButton", {
                [v1.Tag] = l_joinTags_0("Component-CheckboxButton"),
                Text = v46,
                LayoutOrder = v8:getNextOrder(),
                [v1.Event.Activated] = v52
            });
            v42[v43] = l_createElement_0(v54, v55, v56);
        end;
    end;
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("X-Column", "CX-Invisible"),
        Size = UDim2.new(1, 0, 0, v5.checkBoxRowHeight * (v43 - 1) + v5.byHeight),
        LayoutOrder = v21.LayoutOrder
    }, v3.Dictionary.join({
        v41
    }, v42));
end);
return function(v66)
    local v67, v68 = v1.useState(v15);
    local v69 = l_Localization_0:use();
    local v70 = v1.useRef(nil);
    local v71 = v1.useRef(nil);
    local v75 = v1.useMemo(function()
        local v72 = {};
        for v73, v74 in pairs(v66.collaborators) do
            v72[v73] = v74;
        end;
        v72[-1] = v69:getText("FilterMenu", "EveryoneElse");
        return v72;
    end, {
        v66.collaborators
    });
    return v1.createElement("Frame", {
        [v1.Tag] = l_joinTags_0("Component-FilterMenu", "X-Column", "X-Fill")
    }, {
        Header = v1.createElement("Frame", {
            [v1.Tag] = l_joinTags_0("X-Row", "CX-Invisible"),
            LayoutOrder = v8:getNextOrder()
        }, {
            Text = v1.createElement("TextLabel", {
                Text = v69:getText("FilterMenu", "FilterEvents"),
                LayoutOrder = v8:getNextOrder()
            }),
            Clear = v1.createElement("TextButton", {
                [v1.Tag] = l_joinTags_0("Component-OptionButton"),
                Text = v69:getText("FilterMenu", "Clear"),
                LayoutOrder = v8:getNextOrder(),
                [v1.Event.Activated] = function()
                    if v70.current then
                        v70.current.resetRows((v11(v69)));
                    end;
                    if v71.current then
                        v71.current.resetRows(v75);
                    end;
                    if v66.OnClear then
                        v66.OnClear();
                    end;
                end
            }),
            Apply = v1.createElement("TextButton", {
                [v1.Tag] = l_joinTags_0("Component-OptionButton"),
                Text = v69:getText("FilterMenu", "Apply"),
                LayoutOrder = v8:getNextOrder(),
                [v1.Event.Activated] = function()
                    if v66.OnApply then
                        v66.OnApply(v67);
                    end;
                end
            })
        }),
        Divider = v1.createElement("Frame", {
            [v1.Tag] = l_joinTags_0("CX-Divider"),
            LayoutOrder = v8:getNextOrder()
        }),
        Contents = v1.createElement("ScrollingFrame", {
            [v1.Tag] = l_joinTags_0("CX-Invisible"),
            LayoutOrder = v8:getNextOrder(),
            AutomaticCanvasSize = Enum.AutomaticSize.Y,
            CanvasSize = UDim2.new(0, 0, 0, 0),
            VerticalScrollBarInset = Enum.ScrollBarInset.ScrollBar
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            ByDateRange = v1.createElement("Frame", {
                [v1.Tag] = "Component-FilterMenu-By",
                LayoutOrder = v8:getNextOrder()
            }, {
                Label = v1.createElement("TextLabel", {
                    Text = v69:getText("FilterMenu", "ByDate")
                })
            }),
            TinySpacer = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("Component-SpacerSmall"),
                LayoutOrder = v8:getNextOrder()
            }),
            ByDateRangeFilter = v1.createElement(v4, {
                LayoutOrder = v8:getNextOrder(),
                OnChanged = function(v76)
                    v68(v3.Dictionary.join(v67, {
                        EndDate = v14[v76]
                    }));
                end,
                items = v13(v69)
            }),
            Spacer1 = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("Component-Spacer"),
                LayoutOrder = v8:getNextOrder()
            }),
            ByTypeCheckBoxes = v1.createElement(v65, {
                ref = v70,
                rows = v11(v69),
                title = v69:getText("FilterMenu", "ByType"),
                LayoutOrder = v8:getNextOrder(),
                OnChange = function(v77)
                    v68(v3.Dictionary.join(v67, {
                        ExcludedEventCategories = v20(v77)
                    }));
                end
            }),
            Spacer2 = v1.createElement("Frame", {
                [v1.Tag] = l_joinTags_0("Component-Spacer"),
                LayoutOrder = v8:getNextOrder()
            }),
            ByCollaboratorCheckBoxes = v1.createElement(v65, {
                ref = v71,
                rows = v75,
                title = v69:getText("FilterMenu", "ByUser"),
                LayoutOrder = v8:getNextOrder(),
                OnChange = function(v78)
                    local v79 = {};
                    for v80, _ in pairs(v66.collaborators) do
                        v79[v80] = true;
                    end;
                    local v82 = v20(v78);
                    v82[-1] = nil;
                    for _, v84 in pairs(v82) do
                        if v84 then
                            v79[v84] = false;
                        end;
                    end;
                    v68(v3.Dictionary.join(v67, {
                        ShowCollaborators = v79,
                        ShowEveryoneElse = not v78[-1]
                    }));
                end
            })
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Src.Resources.StyleTips);
local l_createStyleRule_0 = v1.Styling.createStyleRule;
return l_createStyleRule_0(".Component-FilterMenu", {
    BackgroundColor3 = "$ForegroundMain"
}, {
    l_createStyleRule_0(">> .Component-OptionButton", {
        Size = UDim2.new(0, 58, 1, 0),
        AutoButtonColor = false,
        TextColor3 = "$TextPrimary"
    }, {
        l_createStyleRule_0("::UICorner", {
            CornerRadius = UDim.new(0, 4)
        })
    }),
    l_createStyleRule_0(">> #Header", {
        Size = UDim2.new(1, 0, 0, v2.filterHeaderHeight)
    }, {
        l_createStyleRule_0("::UIPadding", {
            PaddingTop = UDim.new(0, 4),
            PaddingBottom = UDim.new(0, 4),
            PaddingLeft = UDim.new(0, 16),
            PaddingRight = UDim.new(0, 16)
        }),
        l_createStyleRule_0("::UIListLayout", {
            Padding = UDim.new(0, 4)
        }),
        l_createStyleRule_0(">> #Clear", {
            BackgroundColor3 = "$SecondaryMain"
        }, {
            l_createStyleRule_0(":hover", {
                BackgroundColor3 = "$SecondaryHoverBackground"
            })
        }),
        l_createStyleRule_0(">> #Apply", {
            BackgroundColor3 = "$PrimaryMain"
        }, {
            l_createStyleRule_0(":hover", {
                BackgroundColor3 = "$PrimaryHoverBackground"
            })
        }),
        l_createStyleRule_0("> TextLabel", {
            Size = UDim2.new(1, -124, 1, 0),
            BackgroundTransparency = 1,
            TextSize = v2.headerFontSize,
            TextColor3 = "$TextPrimary"
        })
    }),
    l_createStyleRule_0("> #Contents", {
        Size = UDim2.new(1, 0, 1, -v2.filterHeaderHeight),
        BorderSizePixel = 0
    }, {
        l_createStyleRule_0("::UIPadding", {
            PaddingTop = UDim.new(0, 16),
            PaddingBottom = UDim.new(0, 16),
            PaddingLeft = UDim.new(0, 16),
            PaddingRight = UDim.new(0, 16)
        }),
        l_createStyleRule_0("> #ByDateRangeFilter", {
            Size = UDim2.new(1, 0, 0, 40)
        }, {}),
        l_createStyleRule_0(">> .Component-SpacerSmall", {
            Size = UDim2.new(1, 0, 0, 8),
            BackgroundTransparency = 1
        }),
        l_createStyleRule_0(">> .Component-Spacer", {
            Size = UDim2.new(1, 0, 0, 16),
            BackgroundTransparency = 1
        }),
        l_createStyleRule_0(">> .Component-FilterMenu-By", {
            Size = UDim2.new(1, 0, 0, v2.byHeight),
            BackgroundTransparency = 1
        }, {
            l_createStyleRule_0("> #Label", {
                Position = UDim2.new(0, 2, 0, 0),
                Size = UDim2.new(0.5, 0, 1, 0),
                TextSize = v2.normalFontSize,
                TextColor3 = "$TextPrimary",
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center,
                BackgroundTransparency = 1
            }),
            l_createStyleRule_0("> #SelectAll", {
                Size = UDim2.new(0.5, 0, 1, 0),
                TextSize = v2.normalFontSize,
                TextXAlignment = Enum.TextXAlignment.Right,
                TextYAlignment = Enum.TextYAlignment.Center,
                BackgroundTransparency = 1,
                TextColor3 = "$TextPrimary"
            }, {
                l_createStyleRule_0(":hover", {
                    TextColor3 = "$TextSecondary"
                })
            })
        }),
        l_createStyleRule_0(">> .Component-FilterMenu-CheckBoxes", {
            Size = UDim2.new(1, 0, 0, v2.checkBoxRowHeight)
        }, {
            l_createStyleRule_0("::UIListLayout", {
                Padding = UDim.new(0, 8)
            }),
            l_createStyleRule_0(">> #CheckboxContainer", {
                Size = UDim2.new(0, 24, 0, v2.checkBoxRowHeight)
            }),
            l_createStyleRule_0(">> .Component-Checkbox", {
                Position = UDim2.new(0, 0, 0, v2.checkBoxRowHeight / 2 - 12)
            }),
            l_createStyleRule_0(">> .Component-CheckboxButton", {
                TextColor3 = "$TextPrimary",
                Size = UDim2.new(1, -100, 0, v2.checkBoxRowHeight),
                BackgroundTransparency = 1,
                TextSize = v2.normalFontSize,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center
            })
        })
    })
});