local v0 = require(game:GetService("CorePackages").Packages.Dash);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v3 = require(l_Modules_0.AvatarExperience.Common.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Reducers.OutfitTryOn);
local v5 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v6 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarScreen);
local v7 = require(l_Modules_0.AvatarExperience.ProfilePictureEditor.PPEThumbnailType);
local v8 = require(l_Modules_0.AvatarExperience.AvatarEditor.Constants);
local v9 = require(l_Modules_0.AvatarExperience.AvatarEditor.GetAvatarEditorCategories);
local v10 = require(l_Modules_0.AvatarExperience.Catalog.Reducers.SortAndFilters);
local v11 = require(l_Modules_0.AvatarExperience.Common.Models.AssetInfo);
local v12 = {};
v12.__index = v12;
v12.DynamicHeadMoodAnimationAssetId = "10687293613";
v12.DylanDefaultHeadAssetId = "10687288296";
v12.DylanDefaultOutfitId = "11164330909";
v12.GeckoMoodAnimationAssetId = "10647852134";
v12.GeckoBundleId = "965";
v12.GeckoOutfitId = "11625687672";
v12.DylanDefaultBundleId = "945";
v12.YellowSciFiJacketAssetId = "11449307353";
v12.NinjaIdleAnimationAssetId = "658832408";
v12.DefaultLocalUserId = "129687796";
v12.BodybuilderEmoteAssetId = "3994130516";
v12.BodybuilderKeyframeSequenceAssetId = "10713990381";
v12.PirateAnimationBundleId = "55";
v12.PirateIdleAnimationAssetId = "837024662";
v12.PirateRunAnimationAssetId = "837023444";
v12.PirateJumpAnimationAssetId = "837024350";
v12.DummySearchUid = "test_uuid";
v12.DummyKeyword = "test";
v12.DunceHatAssetId = "12536385254";
v12.PirateOutfitId = "132923221";
v12.NumPirateAnimations = 0;
v12.UnusedItemId = "1011011010";
local v13 = {
    [v12.PirateRunAnimationAssetId] = {
        assetType = "53"
    },
    ["837023892"] = {
        assetType = "55"
    },
    ["837024147"] = {
        assetType = "50"
    },
    [v12.PirateJumpAnimationAssetId] = {
        assetType = "52"
    },
    [v12.PirateIdleAnimationAssetId] = {
        assetType = "51"
    },
    ["837025054"] = {
        assetType = "54"
    },
    ["837025325"] = {
        assetType = "48"
    }
};
for _, _ in v13, nil, nil do
    v12.NumPirateAnimations = v12.NumPirateAnimations + 1;
end;
local v16 = {};
for v17, _ in v13, nil, nil do
    table.insert(v16, {
        id = v17,
        type = v3.ItemType.Asset
    });
end;
table.insert(v16, {
    id = v12.PirateOutfitId,
    type = v3.ItemType.Outfit
});
v12.new = function(v19)
    local v20 = {};
    setmetatable(v20, v12);
    v20.state = v19 or {};
    v20.itemRecency = 0;
    return v20;
end;
v12.basicScales = {
    bodyType = 1,
    depth = 1,
    head = 1,
    height = 1,
    proportion = 0,
    width = 1
};
v12.makeBodyColors = function(v21)
    return {
        headColorId = v21,
        leftArmColorId = v21,
        leftLegColorId = v21,
        rightArmColorId = v21,
        rightLegColorId = v21,
        torsoColorId = v21
    };
end;
v12.makeBodyColor3s = function(v22)
    return {
        headColor3 = v22,
        torsoColor3 = v22,
        rightArmColor3 = v22,
        leftArmColor3 = v22,
        rightLegColor3 = v22,
        leftLegColor3 = v22
    };
end;
v12.makeSkeletonOutfitInfo = function()
    return {
        assets = {},
        avatarType = "R15",
        containsDynamicHead = false,
        isEditable = false,
        name = "SkeletonOutfit",
        outfitId = "1234",
        outfitType = v3.OutfitTypes.Avatar,
        updateCounter = 0,
        bodyColor3s = v12.basicBodyColor3s,
        bodyColors = v12.basicBodyColors,
        scales = v12.basicScales
    };
end;
v12.makeSkeletonTryOnItem = function()
    return {
        version = "1",
        itemId = "dummy",
        itemType = v3.ItemType.Asset,
        itemSubType = v3.AssetTypeIdStrings.JacketAccessory,
        selectedInTryOnManager = true,
        isUnequipped = false,
        receivedBundleInfo = false,
        itemRecency = 0
    };
end;
v12.basicBodyColors = v12.makeBodyColors(v5.DefaultBodyColorBrickId);
v12.basicBodyColor3s = v12.makeBodyColor3s(v5.DefaultBodyColor3);
v12.getState = function(v23)
    return v23.state;
end;
v12.addCameraButtonStatus = function(v24, v25)
    v24.state = v0.joinDeep({
        AvatarExperience = {
            CameraButton = {
                enabled = v25
            }
        }
    }, v24.state);
    return v24;
end;
v12.addCameraButtonErrorOccurred = function(v26, v27)
    v26.state = v0.joinDeep({
        AvatarExperience = {
            CameraButton = {
                errorOccurred = v27
            }
        }
    }, v26.state);
    return v26;
end;
v12.addFetchStatus = function(v28, v29, v30)
    v28.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                UserInventoryRecommendationsFetchStatus = {
                    [v29] = v30
                }
            }
        }
    }, v28.state);
    return v28;
end;
v12.addCurrentCharacter = function(v31, v32, v33)
    if not v32 then
        local l_Players_0 = game:GetService("Players");
        local _ = nil;
        v32 = l_Players_0:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), if not v33 then Enum.HumanoidRigType.R15 else Enum.HumanoidRigType.R6);
    end;
    assert(v32, "character is not nil.");
    v32.Parent = workspace;
    v31.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                Character = {
                    AvatarType = if not v33 then v8.AvatarType.R15 else v8.AvatarType.R6
                }
            },
            AvatarScene = {
                Character = {
                    CurrentCharacter = v32
                }
            }
        }
    }, v31.state);
    return v31;
end;
v12.addPPEStartState = function(v36)
    v36.state = v0.joinDeep({
        AvatarExperience = {
            ProfilePictureEditor = {
                ProfilePictureParams = {
                    ppeVersion = {
                        [v7.Closeup] = 0,
                        [v7.FullBody] = 0
                    },
                    ppeEmoteLoadingCount = 0
                }
            }
        }
    }, v36.state);
    return v36;
end;
v12.addLocalUserId = function(v37, v38)
    if not v38 then
        v38 = v12.DefaultLocalUserId;
    end;
    v37.state = v0.joinDeep({
        LocalUserId = v38
    }, v37.state);
    return v37;
end;
v12.addEquippedItem = function(v39, v40, v41)
    v39.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                Character = {
                    EquippedAssets = {
                        [v40] = v41
                    }
                }
            }
        }
    }, v39.state);
    return v39;
end;
v12.addEquippedNinjaIdleAnimation = function(v42)
    return v42:addEquippedItem(v3.AssetTypeIdStrings.IdleAnimation, {
        [v12.NinjaIdleAnimationAssetId] = {
            isLayered = false,
            version = "nil"
        }
    });
end;
v12.addEquippedYellowSciFiJacket = function(v43)
    return v43:addEquippedItem(v3.AssetTypeIdStrings.JacketAccessory, {
        [v12.YellowSciFiJacketAssetId] = {
            isLayered = true,
            order = 12,
            type = Enum.AccessoryType.Jacket,
            version = "1"
        }
    });
end;
v12.addEquippedHat = function(v44)
    return v44:addEquippedItem(v3.AssetTypeIdStrings.Hat, {
        [v12.DunceHatAssetId] = {
            isLayered = false,
            type = Enum.AccessoryType.Hat,
            version = "1"
        }
    });
end;
v12.addEquippedShirt = function(v45)
    return v45:addEquippedItem(v3.AssetTypeIdStrings.ShirtAccessory, {
        ["9512497883"] = {
            isLayered = true,
            order = 10,
            type = Enum.AccessoryType.Shirt,
            version = "1"
        }
    });
end;
v12.addEquippedGear = function(v46)
    return v46:addEquippedItem(v3.AssetTypeIdStrings.Gear, {
        ["1132887630"] = {
            version = "1"
        }
    });
end;
v12.addEquippedDynamicHead = function(v47)
    return v47:addEquippedItem(v3.AssetTypeIdStrings.DynamicHead, {
        [v12.DylanDefaultHeadAssetId] = {
            isLayered = false,
            version = "nil"
        }
    });
end;
v12.addEquippedMoodAnimation = function(v48)
    return v48:addEquippedItem(v3.AssetTypeIdStrings.MoodAnimation, {
        [v12.DynamicHeadMoodAnimationAssetId] = {
            isLayered = false,
            version = "nil"
        }
    });
end;
v12.addOutfitTryOnItem = function(v49, v50, v51)
    v51.itemRecency = v49.itemRecency;
    v49.itemRecency = v49.itemRecency + 1;
    v49.state = v0.joinDeep({
        AvatarExperience = {
            AvatarScene = {
                OutfitTryOn = {
                    TryOnItems = {
                        [v50] = v51
                    }
                }
            }
        }
    }, v49.state);
    return v49;
end;
v12.addOutfitTryOnLastToggledItem = function(v52, v53)
    v52.state = v0.joinDeep({
        AvatarExperience = {
            AvatarScene = {
                OutfitTryOn = {
                    LastToggledItem = v53
                }
            }
        }
    }, v52.state);
    return v52;
end;
v12.addOutfitTryOnItemAsAsset = function(v54, v55, v56)
    local v57 = v12.makeSkeletonTryOnItem();
    v57.itemId = v55;
    v57.itemType = v3.ItemType.Asset;
    v57.itemSubType = v56;
    v57.itemRecency = v54.itemRecency;
    v54.itemRecency = v54.itemRecency + 1;
    v54.state = v0.joinDeep({
        AvatarExperience = {
            AvatarScene = {
                OutfitTryOn = {
                    TryOnItems = {
                        [v55] = v57
                    }
                }
            }
        }
    }, v54.state);
    return v54;
end;
v12.addOutfitTryOnItemAsPartsBundleAsset = function(v58, v59, v60, v61)
    local v62 = v12.makeSkeletonTryOnItem();
    v62.itemId = v59;
    v62.itemType = v3.ItemType.Bundle;
    v62.itemSubType = v3.BundleTypeIdStrings.BodyParts;
    v62.itemRecency = v58.itemRecency;
    v62.bundleInfo = {
        [v60] = {
            assetType = v61
        }
    };
    v58.itemRecency = v58.itemRecency + 1;
    v58.state = v0.joinDeep({
        AvatarExperience = {
            AvatarScene = {
                OutfitTryOn = {
                    TryOnItems = {
                        [v60] = v62
                    }
                }
            }
        }
    }, v58.state);
    return v58;
end;
v12.addDylanDefaultOutfitTryOnItem = function(v63)
    return v63:addOutfitTryOnItem(v12.DylanDefaultBundleId, {
        bundleInfo = {
            [v12.DylanDefaultHeadAssetId] = {
                assetType = v3.AssetTypeIdStrings.DynamicHead
            },
            [v12.DynamicHeadMoodAnimationAssetId] = {
                assetType = v3.AssetTypeIdStrings.MoodAnimation
            }
        },
        isUnequipped = false,
        itemId = v12.DylanDefaultBundleId,
        itemRecency = 0,
        itemSubType = v3.BundleTypeIdStrings.DynamicHead,
        itemType = v3.ItemType.Bundle,
        receivedBundleInfo = false,
        selectedInTryOnManager = true,
        version = "1"
    });
end;
v12.addGeckoOutfitTryOnItem = function(v64)
    return v64:addOutfitTryOnItem(v12.GeckoBundleId, {
        bundleInfo = {
            ["10407915508"] = {
                assetType = v3.AssetTypeIdStrings.DynamicHead
            },
            [v12.GeckoMoodAnimationAssetId] = {
                assetType = v3.AssetTypeIdStrings.MoodAnimation
            },
            ["2510230574"] = {
                assetType = "48"
            },
            ["2510233257"] = {
                assetType = "50"
            },
            ["2510235063"] = {
                assetType = "51"
            },
            ["2510236649"] = {
                assetType = "52"
            },
            ["2510238627"] = {
                assetType = "53"
            },
            ["2510240941"] = {
                assetType = "54"
            },
            ["2510242378"] = {
                assetType = "55"
            },
            ["7200822331"] = {
                assetType = "29"
            },
            ["7200822888"] = {
                assetType = "30"
            },
            ["7200823471"] = {
                assetType = "28"
            },
            ["7200824015"] = {
                assetType = "31"
            },
            ["7200824885"] = {
                assetType = "27"
            },
            ["7200826678"] = {
                assetType = "47"
            }
        },
        isUnequipped = false,
        itemId = v12.GeckoBundleId,
        itemRecency = 7,
        itemSubType = v3.BundleTypeIdStrings.BodyParts,
        itemType = v3.ItemType.Bundle,
        receivedBundleInfo = false,
        selectedInTryOnManager = true,
        version = "1"
    });
end;
v12.addPirateAnimationOutfitTryOnItem = function(v65)
    return v65:addOutfitTryOnItem(v12.PirateAnimationBundleId, {
        bundleInfo = v13,
        isUnequipped = false,
        itemId = v12.PirateAnimationBundleId,
        itemRecency = 0,
        itemSubType = v3.BundleTypeIdStrings.Animations,
        itemType = v3.ItemType.Bundle,
        receivedBundleInfo = true,
        selectedInTryOnManager = true,
        version = "1"
    });
end;
v12.addPirateAnimationOutfitTryOnLastToggledItem = function(v66)
    local v67 = v12.makeSkeletonTryOnItem();
    v67.itemId = v12.PirateAnimationBundleId;
    v67.itemType = v3.ItemType.Bundle;
    return v66:addOutfitTryOnLastToggledItem(v67);
end;
v12.addDHWithNoMoodOutfitTryOnItem = function(v68)
    return v68:addOutfitTryOnItem(v12.GeckoBundleId, {
        bundleInfo = {
            ["10407915508"] = {
                assetType = v3.AssetTypeIdStrings.DynamicHead
            },
            ["2510230574"] = {
                assetType = "48"
            },
            ["2510233257"] = {
                assetType = "50"
            },
            ["2510235063"] = {
                assetType = "51"
            },
            ["2510236649"] = {
                assetType = "52"
            },
            ["2510238627"] = {
                assetType = "53"
            },
            ["2510240941"] = {
                assetType = "54"
            },
            ["2510242378"] = {
                assetType = "55"
            },
            ["7200822331"] = {
                assetType = "29"
            },
            ["7200822888"] = {
                assetType = "30"
            },
            ["7200823471"] = {
                assetType = "28"
            },
            ["7200824015"] = {
                assetType = "31"
            },
            ["7200824885"] = {
                assetType = "27"
            },
            ["7200826678"] = {
                assetType = "47"
            }
        },
        isUnequipped = false,
        itemId = v12.GeckoBundleId,
        itemRecency = 7,
        itemSubType = "1",
        itemType = v3.ItemType.Bundle,
        receivedBundleInfo = false,
        selectedInTryOnManager = true,
        version = "1"
    });
end;
v12.addTryOnAnimation = function(v69, v70)
    v69.state = v0.joinDeep({
        AvatarExperience = {
            AvatarScene = {
                TryOn = {
                    AnimationPreview = v70
                }
            }
        }
    }, v69.state);
    return v69;
end;
v12.addPirateTryOnAnimation = function(v71)
    return v71:addTryOnAnimation(v12.PirateIdleAnimationAssetId);
end;
v12.addAssetInfo = function(v72, v73)
    local l_id_0 = v73.id;
    assert(l_id_0 ~= nil, "assetInfo should have an id");
    v72.state = v0.joinDeep({
        AvatarExperience = {
            Common = {
                AssetInfos = {
                    [l_id_0] = v73
                }
            }
        }
    }, v72.state);
    return v72;
end;
v12.addBundleInfo = function(v75, v76)
    local l_id_1 = v76.id;
    assert(l_id_1 ~= nil, "bundleInfo should have an id");
    v75.state = v0.joinDeep({
        AvatarExperience = {
            Common = {
                BundleInfos = {
                    [l_id_1] = v76
                }
            }
        }
    }, v75.state);
    return v75;
end;
v12.addPirateAnimationAssetInfos = function(v78)
    for v79, v80 in v13, nil, nil do
        local v81 = v11.mock();
        v81.id = v79;
        v81.assetType = v80.assetType;
        v78 = v78:addAssetInfo(v81);
    end;
    return v78;
end;
v12.addDunceHatAssetInfo = function(v82)
    return v82:addAssetInfo((v11.fromGetCatalogItemData({
        receivedCatalogData = true,
        id = v12.DunceHatAssetId,
        assetType = Enum.AvatarAssetType.Hat.Name,
        name = "Dunce Hat",
        description = "Go sit in the corner",
        product = {
            id = "1379526016"
        },
        creator = {
            id = "13805545",
            name = "BRICK UGC",
            type = "Group",
            hasVerifiedBadge = true
        },
        price = 69,
        favoriteCount = 7486,
        isOwned = false,
        isPurchasable = true,
        itemStatus = {},
        itemRestrictions = {}
    })));
end;
v12.addDylanDefaultBundleInfo = function(v83)
    return v83:addBundleInfo({
        bundleType = tostring(Enum.BundleType.DynamicHead.Value),
        description = "A look that never goes out of style.",
        expectedSellerId = "1",
        favoriteCount = 196358,
        id = v12.DylanDefaultBundleId,
        isOwned = true,
        isPublicDomain = true,
        isPurchasable = false,
        itemStatus = {},
        itemType = v3.ItemType.Bundle,
        items = {
            [1] = {
                id = v12.DylanDefaultHeadAssetId,
                type = v3.ItemType.Asset
            },
            [2] = {
                id = v12.DynamicHeadMoodAnimationAssetId,
                type = v3.ItemType.Asset
            },
            [3] = {
                id = v12.DylanDefaultOutfitId,
                type = v3.ItemType.Outfit
            }
        },
        name = "Dylan Default",
        priceInRobux = 0,
        priceStatus = "Free",
        receivedBundleDetails = true,
        receivedCatalogData = true,
        receivedFromSortResults = true
    });
end;
v12.addGeckoBundleInfo = function(v84)
    return v84:addBundleInfo({
        bundleType = v3.BundleTypeIdStrings.BodyParts,
        creator = {
            hasVerifiedBadge = true,
            id = "1",
            name = "Roblox",
            type = "User"
        },
        description = "Some geckos have been seen running across the surface of water. Other geckos refer to them as \"overachievers.\"",
        expectedSellerId = "1",
        favoriteCount = 24889,
        id = v12.GeckoBundleId,
        isOwned = false,
        isPublicDomain = false,
        isPurchasable = true,
        itemRestrictions = {},
        itemStatus = {},
        itemType = v3.ItemType.Bundle,
        items = {
            [1] = {
                id = "7200822331",
                type = v3.ItemType.Asset
            },
            [2] = {
                id = "7200822888",
                type = v3.ItemType.Asset
            },
            [3] = {
                id = "7200823471",
                type = v3.ItemType.Asset
            },
            [4] = {
                id = "7200824015",
                type = v3.ItemType.Asset
            },
            [5] = {
                id = "7200824885",
                type = v3.ItemType.Asset
            },
            [6] = {
                id = "10407915508",
                type = v3.ItemType.Asset
            },
            [7] = {
                id = "7200826678",
                type = v3.ItemType.Asset
            },
            [8] = {
                id = "2510230574",
                type = v3.ItemType.Asset
            },
            [9] = {
                id = "2510233257",
                type = v3.ItemType.Asset
            },
            [10] = {
                id = "2510235063",
                type = v3.ItemType.Asset
            },
            [11] = {
                id = "2510236649",
                type = v3.ItemType.Asset
            },
            [12] = {
                id = "2510238627",
                type = v3.ItemType.Asset
            },
            [13] = {
                id = "2510240941",
                type = v3.ItemType.Asset
            },
            [14] = {
                id = "2510242378",
                type = v3.ItemType.Asset
            },
            [15] = {
                id = v12.GeckoMoodAnimationAssetId,
                type = v3.ItemType.Asset
            },
            [16] = {
                id = v12.GeckoOutfitId,
                type = v3.ItemType.Outfit
            },
            [17] = {
                id = "11625698220",
                type = v3.ItemType.Outfit
            }
        },
        name = "Galloping Gecko",
        priceInRobux = 500,
        product = {
            id = "1324726369",
            isForSale = true,
            type = "productType"
        },
        receivedBundleDetails = true,
        receivedCatalogData = true,
        receivedFromSortResults = true
    });
end;
v12.addPirateAnimationBundleInfo = function(v85)
    return v85:addBundleInfo({
        bundleType = "2",
        creator = {
            hasVerifiedBadge = true,
            id = "1",
            name = "Roblox",
            type = "User"
        },
        description = "This animation pack only works with R15 avatars. Arr, I'll wipe the deck with ya blasted swabbies",
        expectedSellerId = "1",
        favoriteCount = 99606,
        id = "55",
        isOwned = true,
        isPublicDomain = false,
        isPurchasable = false,
        itemRestrictions = {},
        itemStatus = {},
        itemType = v3.ItemType.Bundle,
        items = v16,
        name = "Pirate Animation Package",
        priceInRobux = 750,
        product = {
            id = "1324726369",
            isForSale = true,
            type = "productType"
        },
        receivedBundleDetails = true,
        receivedCatalogData = true,
        receivedFromSortResults = true
    });
end;
v12.addOutfitInfo = function(v86, v87, v88)
    v86.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                OutfitInfos = {
                    [v87] = v88
                }
            }
        }
    }, v86.state);
    return v86;
end;
v12.addDylanDefaultOutfitInfo = function(v89)
    local v90 = v12.makeSkeletonOutfitInfo();
    v90.assets = {
        [v3.AssetTypeIdStrings.MoodAnimation] = {
            [v12.DynamicHeadMoodAnimationAssetId] = {
                isLayered = false,
                version = "nil"
            }
        },
        [v3.AssetTypeIdStrings.DynamicHead] = {
            [v12.DylanDefaultHeadAssetId] = {
                isLayered = false,
                version = "nil"
            }
        }
    };
    v90.containsDynamicHead = true;
    v90.name = "Dylan Default";
    v90.outfitId = v12.DylanDefaultOutfitId;
    v90.outfitType = v3.OutfitTypes.DynamicHead;
    return v89:addOutfitInfo(v12.DylanDefaultOutfitId, v90);
end;
v12.addGeckoOutfitInfo = function(v91)
    local v92 = v12.makeSkeletonOutfitInfo();
    v92.assets = {
        ["27"] = {
            ["7200824885"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["28"] = {
            ["7200823471"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["29"] = {
            ["7200822331"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["30"] = {
            ["7200822888"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["31"] = {
            ["7200824015"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["47"] = {
            ["7200826678"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["48"] = {
            ["2510230574"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["50"] = {
            ["2510233257"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["51"] = {
            ["2510235063"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["52"] = {
            ["2510236649"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["53"] = {
            ["2510238627"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["54"] = {
            ["2510240941"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["55"] = {
            ["2510242378"] = {
                isLayered = false,
                version = "nil"
            }
        },
        [v3.AssetTypeIdStrings.MoodAnimation] = {
            [v12.GeckoMoodAnimationAssetId] = {
                isLayered = false,
                version = "nil"
            }
        },
        [v3.AssetTypeIdStrings.DynamicHead] = {
            ["10407915508"] = {
                isLayered = false,
                version = "nil"
            }
        }
    };
    v92.outfitType = v3.OutfitTypes.Avatar;
    v92.name = "Galloping Gecko";
    v92.outfitId = v12.GeckoOutfitId;
    v92.containsDynamicHead = true;
    return v91:addOutfitInfo(v12.GeckoOutfitId, v92);
end;
v12.addPirateAnimationOutfitInfo = function(v93)
    local v94 = v12.makeSkeletonOutfitInfo();
    v94.assets = {
        ["48"] = {
            ["837025325"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["50"] = {
            ["837024147"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["51"] = {
            [v12.PirateIdleAnimationAssetId] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["52"] = {
            [v12.PirateJumpAnimationAssetId] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["53"] = {
            [v12.PirateRunAnimationAssetId] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["54"] = {
            ["837025054"] = {
                isLayered = false,
                version = "nil"
            }
        },
        ["55"] = {
            ["837023892"] = {
                isLayered = false,
                version = "nil"
            }
        }
    };
    v94.name = "Pirate Animation Package";
    v94.outfitId = v12.PirateOutfitId;
    return v93:addOutfitInfo(v12.PirateOutfitId, v94);
end;
v12.addCategory = function(v95, v96)
    v95.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                Categories = {
                    category = v96
                }
            }
        }
    }, v95.state);
    return v95;
end;
v12.addEquippedEmote = function(v97, v98, v99)
    v97.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                EquippedEmotes = {
                    selectedSlot = v98,
                    slotInfo = {
                        {
                            assetId = v99
                        }
                    }
                }
            }
        }
    }, v97.state);
    return v97;
end;
v12.addBodybuilderEquippedEmote = function(v100)
    return v100:addEquippedEmote(1, v12.BodybuilderEmoteAssetId);
end;
v12.addIsInAx = function(v101)
    v101.state = v0.joinDeep({
        Navigation = {
            history = {
                {
                    {
                        name = v6.AvatarExperienceRoot
                    }
                }
            }
        }
    }, v101.state);
    return v101;
end;
v12.addPPEFinalPageFullView = function(v102)
    v102.state = v0.joinDeep({
        AvatarExperience = {
            ProfilePictureEditor = {
                FinalPageViewMode = {
                    finalPageViewMode = v7.FullBody
                }
            }
        }
    }, v102.state);
    return v102;
end;
v12.addSelectedPPEEmote = function(v103, v104)
    v103.state = v0.joinDeep({
        AvatarExperience = {
            ProfilePictureEditor = {
                ProfilePictureParams = {
                    emoteAssetId = v104
                }
            }
        }
    }, v103.state);
    return v103;
end;
v12.addBodyBuilderSelectedPPEEmote = function(v105)
    return v105:addSelectedPPEEmote(v12.BodybuilderEmoteAssetId);
end;
v12.addAvatarEditorCategoryAndSubcategory = function(v106, v107, v108)
    v106.state = v0.joinDeep({
        AvatarExperience = {
            AvatarEditor = {
                Categories = {
                    category = v107,
                    subcategory = v108
                }
            }
        }
    }, v106.state);
    return v106;
end;
v12.addAvatarEditorCategoryAndSubcategoryByName = function(v109, v110, v111)
    local v112 = nil;
    local v113 = nil;
    for v114, v115 in (v9()), nil, nil do
        if v115.Name == v110 then
            v112 = v114;
            if v111 then
                assert(v115.Subcategories, "category.Subcategories should be non-nil");
                for v116, v117 in v115.Subcategories, nil, nil do
                    if v117.Name == v111 then
                        v113 = v116;
                        goto label0 --[[  true, false  ]];
                    end;
                end;
                break;
            else
                break;
            end;
        end;
    end;
    ::label0::;
    assert(v112, "categoryIndex should be non-nil");
    if v111 then
        assert(v113, "subcategoryIndex should be non-nil");
    end;
    return v109:addAvatarEditorCategoryAndSubcategory(v112, v113);
end;
v12.addSortAndFilters = function(v118)
    v118.state = v0.joinDeep({
        AvatarExperience = {
            Catalog = {
                SortAndFilters = v10(nil, {})
            }
        }
    }, v118.state);
    return v118;
end;
v12.addSearchInCatalog = function(v119, v120)
    v119.state = v0.joinDeep({
        AvatarExperience = {
            Search = {
                SearchesInCatalog = {
                    [v12.DummySearchUid] = {
                        keyword = v12.DummyKeyword,
                        items = v120
                    }
                }
            }
        }
    }, v119.state);
    return v119;
end;
v12.addItemDetailsPeekViewState = function(v121, v122)
    v121.state = v0.joinDeep({
        AvatarExperience = {
            Common = {
                ItemDetailsPeekView = {
                    viewState = v122
                }
            }
        }
    }, v121.state);
    return v121;
end;
v12.addFetchingStatus = function(v123, v124, v125)
    v123.state = v0.joinDeep({
        FetchingStatus = {
            [v124] = v125
        }
    }, v123.state);
    return v123;
end;
return v12;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local l_MockId_0 = require(l_CorePackages_0.Workspace.Packages.UnitTestHelpers).MockId;
local l_ItemTileEnums_0 = require(l_CorePackages_0.UIBlox).Tile.ItemTileEnums;
local v5 = require(l_CorePackages_0.Packages.tutils);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v8 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v9 = require(script.Parent.ModelsUtils);
local v10 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXLimitedBundlesHandleNewData);
local v11 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXFixRecommendedItemCollectibles);
local v12 = game:DefineFastFlag("FixEmptyLimitedBadges", false);
return {
    mock = function()
        local v13 = {
            receivedCatalogData = false,
            receivedRecommendedData = false,
            receivedFromRecommendedData = false,
            receivedFromBundleItemData = false,
            receivedFromInventoryFetch = false,
            receivedFromOutfitDetails = false,
            receivedFromResaleData = false,
            receivedFromVersionData = false,
            name = "",
            description = "",
            creatorName = "",
            assetType = v8.AssetTypeIdStrings.Hat,
            id = l_MockId_0(),
            priceInRobux = 1,
            creator = {
                id = l_MockId_0(),
                name = "",
                type = "",
                targetId = "",
                hasVerifiedBadge = false
            },
            created = "",
            updated = "",
            genres = {},
            minimumMembershipLevel = 0,
            premiumPricing = nil,
            product = {
                id = l_MockId_0(),
                type = "",
                isForSale = true
            },
            recommendedItemSummaries = {},
            favoriteCount = 0,
            priceStatus = "",
            itemRestrictions = {},
            itemStatus = {},
            lowestPrice = nil,
            numberRobloxHasAvailable = nil,
            totalQuantity = nil,
            resellerUserAssetIds = {},
            soldCount = 0,
            averagePrice = 0,
            originalPrice = 0,
            isForRent = false,
            isOwned = false,
            isPurchasable = false,
            expectedSellerId = l_MockId_0(),
            creatingUniverseId = nil
        };
        if v10() then
            v13.collectibleItemId = "0";
        end;
        return v13;
    end,
    fromRecommendedItemSummaries = function(v14, v15)
        local v16 = v5.deepCopy(v15 or {});
        v16.receivedRecommendedData = true;
        v16.recommendedItemSummaries = v14;
        return v16;
    end,
    fromGetRecommendedItemsDataV2 = function(v17, v18, v19)
        local v20 = nil;
        if not v11() then
            v20 = v5.deepCopy(v19 or {});
            v20.receivedFromRecommendedData = true;
            v20.name = v17.name;
            v20.id = tostring(v17.id);
            v20.priceInRobux = v17.price or v17.lowestPrice;
            if v17.productId then
                v20.product = {
                    id = tostring(v17.productId)
                };
            end;
            if v17.creatorName then
                v20.creator = {
                    id = tostring(v17.creatorTargetId),
                    name = v17.creatorName,
                    type = v17.creatorType,
                    hasVerifiedBadge = not not v17.creatorHasVerifiedBadge and v17.creatorHasVerifiedBadge
                };
            end;
            if v18 then
                v20.assetType = v18;
            end;
            return v20;
        else
            v20 = v9.DEPRECATED_itemDataFromAssetInfo(v17, v19);
            v20.receivedFromRecommendedData = true;
            if v18 then
                v20.assetType = v18;
            end;
            return v20;
        end;
    end,
    fromHydrateWidgetInfo = function(v21, v22)
        local v23 = v5.deepCopy(v22 or {});
        v23.id = tostring(v21.id);
        if not v21.failedToHydrate then
            v23.name = v21.name;
            if v21.creatorName then
                v23.creator = {
                    name = v21.creatorName
                };
            end;
            v23.assetType = v8.AssetTypeIdStrings[tostring(v21.assetType)];
            v23.priceInRobux = v21.price;
            v23.receivedWidgetHydration = true;
            if v21.premiumPrice then
                v23.premiumPricing = {
                    premiumPriceInRobux = v21.premiumPrice
                };
            end;
            local v24 = if not v12 then {} else nil;
            if not (not (v21.isLimited or v21.isLimitedUnique) and not v21.isCollectible) then
                v24 = {
                    [l_ItemTileEnums_0.Restriction.Limited] = not not v21.isLimited or false,
                    [l_ItemTileEnums_0.Restriction.LimitedUnique] = not not v21.isLimitedUnique or false,
                    [l_ItemTileEnums_0.Restriction.Collectible] = not not v21.isCollectible or false
                };
            end;
            v23.tileRestrictionsMap = v24;
            return v23;
        else
            v23.failedToHydrate = true;
            return v23;
        end;
    end,
    fromGetRecommendedItemsData = function(v25, v26, v27)
        local v28 = v5.deepCopy(v27 or {});
        v28.receivedFromRecommendedData = true;
        if v25.item then
            v28.name = v25.item.name;
            v28.id = tostring(v25.item.assetId);
            v28.priceInRobux = v25.item.price;
        end;
        if not (not v25.product or not v25.product.isFree) then
            v28.priceInRobux = 0;
        end;
        if v25.product then
            v28.product = {
                id = tostring(v25.product.id)
            };
        end;
        if v25.creator then
            v28.creator = {
                id = tostring(v25.creator.creatorId),
                name = v25.creator.name,
                type = v25.creator.type
            };
        end;
        if v26 then
            v28.assetType = v26;
        end;
        return v28;
    end,
    fromGetCatalogItemData = function(v29, v30)
        local v31 = nil;
        if not v10() then
            v31 = v5.deepCopy(v30 or {});
            v31.receivedCatalogData = true;
            v31.id = tostring(v29.id);
            v31.assetType = v8.AssetTypeIdStrings[tostring(v29.assetType)];
            v31.name = v29.name;
            v31.description = v29.description;
            v31.product = {
                id = tostring(v29.productId)
            };
            v31.genres = v29.genres;
            v31.creator = {
                id = tostring(v29.creatorTargetId),
                name = v29.creatorName,
                type = v29.creatorType,
                hasVerifiedBadge = v29.creatorHasVerifiedBadge
            };
            v31.priceInRobux = v29.price;
            v31.lowestPrice = v29.lowestPrice;
            v31.favoriteCount = v29.favoriteCount;
            v31.itemStatus = v29.itemStatus;
            local v32, v33 = v9.CreateRestrictionInfo(v29.itemRestrictions);
            v31.itemRestrictions = v32;
            v31.tileRestrictionsMap = v33;
            v31.priceStatus = v29.priceStatus;
            v31.numberRobloxHasAvailable = v29.unitsAvailableForConsumption or v29.numberRobloxHasAvailable;
            v31.totalQuantity = v29.totalQuantity;
            v31.isForRent = v29.isForRent;
            v31.isOwned = v29.owned;
            v31.isPurchasable = v29.isPurchasable;
            v31.expectedSellerId = tostring(v29.expectedSellerId);
            v31.premiumPricing = v29.premiumPricing;
            v31.collectibleItemId = v29.collectibleItemId;
            v31.saleLocationType = v29.saleLocationType;
            v31.hasResellers = v29.hasResellers;
            return v31;
        else
            v31 = v9.DEPRECATED_itemDataFromAssetInfo(v29, v30);
            v31.receivedCatalogData = true;
            v31.assetType = v8.AssetTypeIdStrings[tostring(v29.assetType)];
            return v31;
        end;
    end,
    fromBundleItemData = function(v34, v35)
        local v36 = v5.deepCopy(v35 or {});
        v36.receivedFromBundleItemData = true;
        v36.id = tostring(v34.id);
        v36.name = v34.name;
        v36.isOwned = v34.owned;
        return v36;
    end,
    fromSortResults = function(v37, v38)
        local v39 = nil;
        if not v10() then
            v39 = v5.deepCopy(v38 or {});
            v39.receivedFromSortResults = true;
            v39.id = tostring(v37.id);
            v39.assetType = tostring(v37.assetType);
            v39.name = v37.name;
            v39.description = v37.description;
            v39.product = {
                id = tostring(v37.productId)
            };
            v39.genres = v37.genres;
            v39.creator = {
                id = tostring(v37.creatorTargetId),
                name = v37.creatorName,
                type = v37.creatorType,
                hasVerifiedBadge = v37.creatorHasVerifiedBadge
            };
            v39.priceInRobux = v37.price;
            v39.lowestPrice = v37.lowestPrice;
            v39.favoriteCount = v37.favoriteCount;
            v39.itemStatus = v37.itemStatus;
            local v40, v41 = v9.CreateRestrictionInfo(v37.itemRestrictions);
            v39.itemRestrictions = v40;
            v39.tileRestrictionsMap = v41;
            v39.priceStatus = v37.priceStatus;
            v39.numberRobloxHasAvailable = v37.unitsAvailableForConsumption or v37.numberRobloxHasAvailable;
            v39.totalQuantity = v37.totalQuantity;
            v39.premiumPricing = v37.premiumPricing;
            v39.collectibleItemId = v37.collectibleItemId;
            v39.saleLocationType = v37.saleLocationType;
            v39.hasResellers = v37.hasResellers;
            return v39;
        else
            v39 = v9.DEPRECATED_itemDataFromAssetInfo(v37, v38);
            v39.receivedFromSortResults = true;
            return v39;
        end;
    end,
    fromInventoryFetch = function(v42, v43)
        local v44 = v5.deepCopy(v43 or {});
        v44.receivedFromInventoryFetch = true;
        v44.id = tostring(v42.assetId);
        v44.name = v42.name;
        v44.assetType = v8.AssetTypeIdStrings[v42.assetType];
        return v44;
    end,
    fromAssetGrant = function(v45, v46, v47)
        local v48 = v5.deepCopy(v47 or {});
        v2.isType(v45, "string", "AssetInfo.fromAssetGrant expects assetId to be a string");
        v2.isType(v46, "string", "AssetInfo.fromAssetGrant expects assetType to be a string");
        v48.id = v45;
        v48.assetType = v46;
        return v48;
    end,
    fromOutfitDetails = function(v49, v50)
        local v51 = v5.deepCopy(v50 or {});
        v51.receivedFromOutfitDetails = true;
        v51.id = tostring(v49.id);
        v51.name = v49.name;
        v51.assetType = tostring(v49.assetType.id);
        return v51;
    end,
    fromGetResellers = function(v52, v53)
        local v54 = v5.deepCopy(v53 or {});
        v54.resellerUserAssetIds = v52;
        return v54;
    end,
    fromLowestPrice = function(v55, v56)
        local v57 = v5.deepCopy(v56 or {});
        v57.lowestPrice = v55;
        return v57;
    end,
    fromResaleData = function(v58, v59)
        local v60 = v5.deepCopy(v59 or {});
        v60.receivedFromResaleData = true;
        v60.soldCount = v58.sales;
        v60.averagePrice = v58.recentAveragePrice;
        v60.originalPrice = v58.originalPrice;
        return v60;
    end,
    fromIsOwned = function(v61, v62)
        local v63 = v5.deepCopy(v62 or {});
        v63.isOwned = v61;
        return v63;
    end,
    fromReceivedAvatarData = function(v64)
        return {
            id = tostring(v64.id),
            name = v64.name,
            assetType = tostring(v64.assetType.id)
        };
    end,
    fromVersionData = function(v65, v66)
        local v67 = v5.deepCopy(v66 or {});
        local v68 = v65.data[1];
        v67.receivedFromVersionData = true;
        v67.creatingUniverseId = if not v68.creatingUniverseId then nil else tostring(v68.creatingUniverseId);
        return v67;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.Common.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v4 = {
    mock = function()
        return {
            version = "1",
            order = 1,
            type = Enum.AccessoryType.Hat,
            isLayered = true
        };
    end,
    getDefaultLayeredClothingMetadata = function(v3)
        if v1.AssetTypeIdToAccessoryTypeEnum[v3] == nil then
            return {
                version = "1"
            };
        else
            return {
                version = "1",
                order = v1.LayeredClothingOrder[v3],
                type = v1.AssetTypeIdToAccessoryTypeEnum[v3],
                isLayered = v1.LayeredAssetTypes[v3] ~= nil
            };
        end;
    end
};
v4.getDefaultMetadata = function(v5)
    return (v4.getDefaultLayeredClothingMetadata(v5));
end;
v4.fromMetadata = function(v6, v7)
    v6 = v6 or {};
    return {
        version = tostring(v6.version),
        order = v6.order or v1.LayeredClothingOrder[v7],
        type = v6.type,
        isLayered = v1.LayeredAssetTypes[v7] ~= nil
    };
end;
return v4;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Packages.tutils);
local l_MockId_0 = require(l_CorePackages_0.Workspace.Packages.UnitTestHelpers).MockId;
local l_ItemTileEnums_0 = require(l_CorePackages_0.UIBlox).Tile.ItemTileEnums;
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v6 = require(l_Modules_0.AvatarExperience.Common.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v8 = require(script.Parent.ModelsUtils);
local v9 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXLimitedBundlesHandleNewData);
local v10 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXFixRecommendedItemCollectibles);
local v11 = game:DefineFastFlag("FixEmptyLimitedBadgesForBundles", false);
local v13 = {
    mock = function()
        local v12 = {
            receivedCatalogData = false,
            receivedRecommendedData = false,
            receivedFromRecommendedData = false,
            name = "",
            description = "",
            bundleType = "",
            id = "",
            items = {},
            creator = {
                id = l_MockId_0(),
                name = "",
                type = "",
                hasVerifiedBadge = false
            },
            priceInRobux = 1,
            isPublicDomain = true,
            product = {
                id = l_MockId_0(),
                type = "",
                isForSale = true
            },
            recommendedItemSummaries = {},
            favoriteCount = 0,
            priceStatus = "",
            itemRestrictions = {},
            itemStatus = {},
            lowestPrice = nil,
            numberRobloxHasAvailable = nil,
            isForRent = false,
            isOwned = false,
            isPurchasable = false,
            expectedSellerId = l_MockId_0()
        };
        if v9() then
            v12.collectibleItemId = "0";
            v12.totalQuantity = nil;
            v12.soldCount = 0;
            v12.averagePrice = 0;
            v12.originalPrice = 0;
            v12.premiumPricing = nil;
        end;
        return v12;
    end
};
local function v16(v14)
    local _ = nil;
    if v14 == Enum.BundleType.BodyParts.Name then
        return v6.BundleTypeIdStrings.BodyParts;
    elseif v14 == "AvatarAnimaions" then
        return v6.BundleTypeIdStrings.Animations;
    elseif v14 == Enum.BundleType.Animations.Name then
        return v6.BundleTypeIdStrings.Animations;
    elseif v14 == Enum.BundleType.DynamicHead.Name then
        return v6.BundleTypeIdStrings.DynamicHead;
    elseif v14 == Enum.BundleType.Shoes.Name then
        return v6.BundleTypeIdStrings.Shoes;
    else
        return (tostring(v14));
    end;
end;
v13.fromGetRecommendedItemsDataV2 = function(v17, v18)
    local v19 = nil;
    if not v10() then
        v19 = v2.deepCopy(v18 or {});
        v19.receivedFromRecommendedData = true;
        v19.name = v17.name;
        v19.id = tostring(v17.id);
        v19.description = v17.description;
        v19.creator = {
            id = tostring(v17.creatorTargetId),
            name = v17.creatorName,
            type = v17.creatorType,
            hasVerifiedBadge = v17.creatorHasVerifiedBadge
        };
        v19.itemType = v17.itemType;
        v19.bundleType = tostring(v17.bundleType);
        v19.product = {
            id = tostring(v17.productId)
        };
        v19.priceInRobux = v17.price;
        v19.favoriteCount = v17.favoriteCount;
        return v19;
    else
        v19 = v8.DEPRECATED_itemDataFromBundleInfo(v17, v16(v17.bundleType), v18);
        v19.receivedFromRecommendedData = true;
        return v19;
    end;
end;
v13.fromHydrateWidgetInfo = function(v20, v21)
    local v22 = v2.deepCopy(v21 or {});
    v22.id = tostring(v20.id);
    if not v20.failedToHydrate then
        v22.name = v20.name;
        if v20.creatorName then
            v22.creator = {
                name = v20.creatorName
            };
        end;
        v22.bundleType = v16(v20.bundleType);
        v22.priceInRobux = v20.price;
        v22.receivedWidgetHydration = true;
        local v23 = if not v11 then {} else nil;
        if not (not (v20.isLimited or v20.isLimitedUnique) and not v20.isCollectible) then
            v23 = {
                [l_ItemTileEnums_0.Restriction.Limited] = not not v20.isLimited or false,
                [l_ItemTileEnums_0.Restriction.LimitedUnique] = not not v20.isLimitedUnique or false,
                [l_ItemTileEnums_0.Restriction.Collectible] = not not v20.isCollectible or false
            };
        end;
        v22.tileRestrictionsMap = v23;
        return v22;
    else
        v22.failedToHydrate = true;
        return v22;
    end;
end;
v13.fromGetCatalogItemData = function(v24, v25)
    local v26 = nil;
    if not v9() then
        v26 = v2.deepCopy(v25 or {});
        v26.receivedCatalogData = true;
        v26.id = tostring(v24.id);
        v26.itemType = v24.itemType;
        v26.bundleType = v16(v24.bundleType);
        v26.name = v24.name;
        v26.description = v24.description;
        v26.product = {
            id = tostring(v24.productId)
        };
        v26.genres = v24.genres;
        v26.creator = {
            id = tostring(v24.creatorTargetId),
            name = v24.creatorName,
            type = v24.creatorType,
            hasVerifiedBadge = v24.creatorHasVerifiedBadge
        };
        v26.priceInRobux = v24.price;
        v26.favoriteCount = v24.favoriteCount;
        v26.itemStatus = v24.itemStatus;
        local v27, v28 = v8.CreateRestrictionInfo(v24.itemRestrictions);
        v26.itemRestrictions = v27;
        v26.tileRestrictionsMap = v28;
        v26.lowestPrice = v24.lowestPrice;
        v26.priceStatus = v24.priceStatus;
        v26.numberRobloxHasAvailable = v24.unitsAvailableForConsumption or v24.numberRobloxHasAvailable;
        v26.isForRent = v24.isForRent;
        v26.isOwned = v24.owned;
        v26.isPurchasable = v24.isPurchasable;
        v26.expectedSellerId = tostring(v24.expectedSellerId);
        v27 = {};
        if v24.bundledItems then
            for _, v30 in v24.bundledItems, nil, nil do
                table.insert(v27, {
                    id = tostring(v30.id),
                    type = v30.type
                });
            end;
            v26.items = v27;
        end;
        return v26;
    else
        v26 = v8.DEPRECATED_itemDataFromBundleInfo(v24, v16(v24.bundleType), v25);
        v26.receivedCatalogData = true;
        return v26;
    end;
end;
v13.fromRecommendedItemSummaries = function(v31, v32)
    local v33 = v2.deepCopy(v32 or {});
    v33.receivedRecommendedData = true;
    v33.recommendedItemSummaries = v31;
    return v33;
end;
v13.fromSortResults = function(v34, v35)
    local v36 = nil;
    if not v9() then
        v36 = v2.deepCopy(v35 or {});
        v36.receivedFromSortResults = true;
        v36.id = tostring(v34.id);
        v36.bundleType = v16(v34.bundleType);
        v36.name = v34.name;
        v36.description = v34.description;
        v36.product = {
            id = tostring(v34.productId)
        };
        v36.genres = v34.genres;
        v36.creator = {
            id = tostring(v34.creatorTargetId),
            name = v34.creatorName,
            type = v34.creatorType,
            hasVerifiedBadge = v34.creatorHasVerifiedBadge
        };
        v36.priceInRobux = v34.price;
        v36.lowestPrice = v34.lowestPrice;
        v36.favoriteCount = v34.favoriteCount;
        v36.itemStatus = v34.itemStatus;
        if v34.itemRestrictions then
            local v37 = {};
            for _, v39 in v34.itemRestrictions, nil, nil do
                v37[v39] = true;
            end;
            v36.itemRestrictions = v37;
        end;
        v36.priceStatus = v34.priceStatus;
        v36.numberRobloxHasAvailable = v34.unitsAvailableForConsumption or v34.numberRobloxHasAvailable;
        return v36;
    else
        v36 = v8.DEPRECATED_itemDataFromBundleInfo(v34, v16(v34.bundleType), v35);
        v36.receivedFromSortResults = true;
        return v36;
    end;
end;
v13.fromIsOwned = function(v40, v41)
    local v42 = v2.deepCopy(v41 or {});
    v42.isOwned = v40;
    return v42;
end;
return v13;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_MockId_0 = require(l_CorePackages_0.Workspace.Packages.UnitTestHelpers).MockId;
local v3 = require(l_Modules_0.AvatarExperience.Catalog.CatalogConstants);
local v4 = require(l_Modules_0.AvatarExperience.Flags.GetAXInExperienceItemLinking);
return {
    mock = function()
        return {
            collectibleItemId = l_MockId_0(),
            collectibleProductId = l_MockId_0(),
            name = "",
            description = "",
            creator = {
                id = l_MockId_0(),
                name = "",
                type = "",
                targetId = ""
            },
            price = 1,
            lowestPrice = 0,
            unitsAvailableForConsumption = 0,
            offsaleDeadline = "",
            assetStock = 0,
            recentAveragePrice = 0,
            saleLocationType = "ShopAndAllExperiences",
            quantityLimitPerUser = 0,
            resaleRestriction = v3.ResaleRestriction.None
        };
    end,
    fromGetCollectibleItemData = function(v5)
        return {
            collectibleItemId = v5.collectibleItemId,
            collectibleProductId = v5.collectibleProductId,
            name = v5.name,
            description = v5.description,
            creator = {
                id = v5.creatorId,
                name = v5.creatorName,
                type = v5.creatorType,
                targetId = v5.creatorTargetId
            },
            price = v5.price,
            lowestPrice = v5.lowestPrice,
            unitsAvailableForConsumption = v5.unitsAvailableForConsumption,
            offsaleDeadline = v5.offsaleDeadline,
            assetStock = v5.assetStock,
            saleLocationType = v5.saleLocationType,
            quantityLimitPerUser = v5.quantityLimitPerUser,
            experiences = if not v4() then nil else v5.experiences,
            resaleRestriction = v5.resaleRestriction
        };
    end,
    fromGetResellers = function(v6)
        return {
            hasResellers = #v6 > 0
        };
    end,
    fromGetResaleData = function(v7)
        return {
            recentAveragePrice = v7.recentAveragePrice
        };
    end
};


return {
    fromGetCollectibleItemInstances = function(v0)
        return {
            collectibleInstanceId = v0.collectibleInstanceId,
            collectibleItemId = v0.collectibleItemId,
            collectibleProductId = v0.collectibleProductId,
            serialNumber = v0.serialNumber,
            isHeld = v0.isHeld,
            saleState = v0.saleState,
            price = v0.price
        };
    end,
    fromGetCollectibleResellers = function(v1, v2)
        return {
            collectibleInstanceId = v1.collectibleItemInstanceId,
            collectibleItemId = v2,
            collectibleProductId = v1.collectibleProductId,
            serialNumber = v1.serialNumber,
            price = v1.price,
            seller = if not v1.seller then nil else {
                sellerId = v1.seller.sellerId,
                sellerType = v1.seller.sellerType,
                name = v1.seller.name,
                hasVerifiedBadge = v1.seller.hasVerifiedBadge
            }
        };
    end
};


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Flags.GetFFlagAXResalePriceFloor);
return {
    mock = function()
        local v1 = {
            resalePercentageFee = 30,
            minimumFee = 1
        };
        if v0() then
            v1.priceFloor = 0;
        end;
        return v1;
    end,
    fromGetCollectibleMarketplaceResaleParameters = function(v2, v3)
        local v4 = {
            resalePercentageFee = v2.resalePercentageFee,
            minimumFee = v2.minimumFee
        };
        if v0() then
            local l_resellableLimitedItemPriceFloors_0 = v2.resellableLimitedItemPriceFloors;
            if l_resellableLimitedItemPriceFloors_0 then
                local v6 = l_resellableLimitedItemPriceFloors_0[v3] and l_resellableLimitedItemPriceFloors_0[v3].priceFloor;
                if v6 then
                    v4.priceFloor = v6;
                end;
            end;
        end;
        return v4;
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v4 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v5 = require(l_CorePackages_0.Packages.t);
local v6 = require(l_Modules_0.AvatarExperience.Catalog.CatalogConstants);
local l_ItemTileEnums_0 = require(l_CorePackages_0.UIBlox).Tile.ItemTileEnums;
local v8 = require(l_Modules_0.AvatarExperience.Common.Utils);
local l_memoize_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).memoize;
local v10 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXGateUGC4ACollectibleAssetsBundles);
local v11 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXLimitedBundlesHandleNewData);
local v12 = {};
local v19 = l_memoize_0(function(v13)
    if v13 then
        if #v13 == 0 then
            return nil, nil;
        else
            local v14 = {};
            for _, v16 in v13, nil, nil do
                v14[v16] = true;
            end;
            local v17 = nil;
            local v18 = nil;
            if not v14[v6.ItemStatus.Sale] then
                if v14[v6.ItemStatus.New] then
                    v17 = l_ItemTileEnums_0.StatusStyle.Info;
                    v18 = v6.ItemStatusLocale.New;
                end;
                return v17, v18;
            else
                return l_ItemTileEnums_0.StatusStyle.Alert, v6.ItemStatusLocale.Sale;
            end;
        end;
    else
        return nil, nil;
    end;
end);
local v21 = l_memoize_0(function(v20)
    if v20 then
        if not v20[v6.ItemRestrictions.Limited] then
            if not v20[v6.ItemRestrictions.LimitedUnique] then
                if not v20[v6.ItemRestrictions.Collectible] then
                    return nil;
                else
                    return false;
                end;
            else
                return true;
            end;
        else
            return true;
        end;
    else
        return nil;
    end;
end);
local v24 = l_memoize_0(function(v22, v23)
    return (v23 and v23[v6.ItemRestrictions.Limited] or v23 and v23[v6.ItemRestrictions.Collectible]) or ((v23 and v23[v6.ItemRestrictions.LimitedUnique]) and v22) and v22 == 0;
end);
local v27 = l_memoize_0(function(v25, v26)
    if not v11() then
        return v26 ~= nil;
    elseif not v25 then
        return false;
    else
        return v25[v6.ItemRestrictions.Collectible] ~= nil;
    end;
end);
local v28 = nil;
if v10() then
    v28 = function(v29)
        return (v29 and v29[v6.ItemRestrictions.Limited] or v29 and v29[v6.ItemRestrictions.LimitedUnique]) or v29 and v29[v6.ItemRestrictions.Collectible];
    end;
end;
v12.fromOutfitInfo = l_memoize_0(function(v30)
    local v31 = {};
    for _, v33 in v30.assets, nil, nil do
        for v34, _ in v33, nil, nil do
            table.insert(v31, {
                id = v34,
                type = v4.ItemType.Asset
            });
        end;
    end;
    return {
        itemType = v4.ItemType.Outfit,
        itemId = v30.outfitId,
        name = v30.name,
        hasPremiumBenefits = false,
        isPremiumExclusive = false,
        isEditable = v30.isEditable,
        hasAttribution = not not v30.creatingUniverseId or false,
        updateCounter = v30.updateCounter,
        itemSubType = v30.outfitType,
        itemIconType = v8.getItemIconTypeFromOutfit(v30),
        includedItems = v31,
        outfitInfo = v30
    };
end);
v12.fromAssetInfo = l_memoize_0(function(v36)
    local v37, v38 = v19(v36.itemStatus);
    local v39 = v36.premiumPricing ~= nil;
    return {
        itemType = v4.ItemType.Asset,
        itemId = v36.id,
        name = v36.name,
        description = v36.description,
        hasPremiumBenefits = v39,
        isPremiumExclusive = v39 and v36.priceInRobux == nil,
        isEditable = false,
        itemSubType = v36.assetType,
        priceInRobux = v36.priceInRobux,
        productId = v36.product and v36.product.id,
        collectibleItemId = v36.collectibleItemId,
        statusStyle = v37,
        statusText = v38,
        resellerUserAssetIds = v36.resellerUserAssetIds,
        receivedCatalogData = v36.receivedCatalogData,
        lowestPrice = v36.lowestPrice,
        premiumPricing = v36.premiumPricing,
        isOwned = v36.isOwned,
        isTradeable = v21(v36.itemRestrictions),
        isResellable = v24(v36.numberRobloxHasAvailable, v36.itemRestrictions),
        hasLimitedQuantity = if not v10() then nil else v28(v36.itemRestrictions),
        hasAttribution = not not v36.creatingUniverseId or false,
        expectedSellerId = v36.expectedSellerId,
        creator = v36.creator,
        receivedRecommendedData = v36.receivedRecommendedData,
        recommendedItemSummaries = v36.recommendedItemSummaries,
        favoriteCount = v36.favoriteCount,
        soldCount = v36.soldCount,
        totalQuantity = v36.totalQuantity,
        originalPrice = v36.originalPrice,
        averagePrice = v36.averagePrice,
        creatingUniverseId = v36.creatingUniverseId,
        isForRent = v36.isForRent,
        isPurchasable = v36.isPurchasable,
        isLimitedCollectible = v27(v36.itemRestrictions, v36.collectibleItemId),
        assetInfo = v36
    };
end);
v12.fromBundleInfo = l_memoize_0(function(v40)
    local v41, v42 = v19(v40.itemStatus);
    local v43 = if not v10() then nil else v28(v40.itemRestrictions);
    local v44 = if not v11() then nil else v40.collectibleItemId;
    local v45 = false;
    if v44 ~= nil then
        v45 = v43;
    end;
    return {
        itemType = v4.ItemType.Bundle,
        itemId = v40.id,
        name = v40.name,
        description = v40.description,
        hasPremiumBenefits = false,
        isPremiumExclusive = false,
        isEditable = false,
        itemSubType = v40.bundleType,
        priceInRobux = v40.priceInRobux,
        productId = v40.product and v40.product.id,
        statusStyle = v41,
        statusText = v42,
        receivedCatalogData = v40.receivedCatalogData,
        lowestPrice = v40.lowestPrice,
        isOwned = v40.isOwned,
        isTradeable = v21(v40.itemRestrictions),
        isResellable = v24(v40.numberRobloxHasAvailable, v40.itemRestrictions),
        hasLimitedQuantity = v43,
        itemIconType = l_ItemTileEnums_0.ItemIconType.Bundle,
        expectedSellerId = v40.expectedSellerId,
        creator = v40.creator,
        receivedRecommendedData = v40.receivedRecommendedData,
        recommendedItemSummaries = v40.recommendedItemSummaries,
        favoriteCount = v40.favoriteCount,
        includedItems = v40.items,
        isForRent = v40.isForRent,
        isPurchasable = v40.isPurchasable,
        isLimitedBundle = v45,
        collectibleItemId = v44,
        isLimitedCollectible = v27(v40.itemRestrictions, v40.collectibleItemId),
        bundleInfo = v40
    };
end);
v12.Validator = v5.strictInterface({
    itemType = v5.string,
    itemId = v5.optional(v5.string),
    name = v5.optional(v5.string),
    description = v5.optional(v5.string),
    itemSubType = v5.optional(v5.string),
    priceInRobux = v5.optional(v5.number),
    productId = v5.optional(v5.string),
    collectibleItemId = v5.optional(v5.string),
    statusStyle = v5.optional(v5.string),
    statusText = v5.optional(v5.string),
    resellerUserAssetIds = v5.optional(v5.table),
    lowestPrice = v5.optional(v5.number),
    premiumPricing = v5.optional(v5.table),
    tileRestrictionsMap = v5.optional(v5.table),
    updateCounter = v5.optional(v5.number),
    itemIconType = v5.optional(v5.userdata),
    expectedSellerId = v5.optional(v5.string),
    creator = v5.optional(v5.table),
    recommendedItemSummaries = v5.optional(v5.table),
    favoriteCount = v5.optional(v5.number),
    includedItems = v5.optional(v5.table),
    soldCount = v5.optional(v5.number),
    totalQuantity = v5.optional(v5.number),
    originalPrice = v5.optional(v5.number),
    averagePrice = v5.optional(v5.number),
    creatingUniverseId = v5.optional(v5.string),
    hasAttribution = v5.optional(v5.boolean),
    hasLimitedQuantity = if not v10() then nil else v5.optional(v5.boolean),
    hasPremiumBenefits = v5.optional(v5.boolean),
    isEditable = v5.optional(v5.boolean),
    isForRent = v5.optional(v5.boolean),
    isLimitedCollectible = v5.optional(v5.boolean),
    isLimitedBundle = v5.optional(v5.boolean),
    isOwned = v5.optional(v5.boolean),
    isPremiumExclusive = v5.optional(v5.boolean),
    isPurchasable = v5.optional(v5.boolean),
    isResellable = v5.optional(v5.boolean),
    isTradeable = v5.optional(v5.boolean),
    receivedCatalogData = v5.optional(v5.boolean),
    receivedRecommendedData = v5.optional(v5.boolean),
    assetInfo = v5.optional(v5.table),
    bundleInfo = v5.optional(v5.table),
    outfitInfo = v5.optional(v5.table)
});
return v12;


return {
    mock = function()
        return {
            taxRate = 0.3,
            minimumFee = 1
        };
    end,
    fromGetResaleTaxRate = function(v0)
        return {
            taxRate = v0.taxRate,
            minimumFee = v0.minimumFee
        };
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Packages.Dash);
local v4 = require(l_CorePackages_0.UIBlox);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v6 = require(l_Modules_0.AvatarExperience.Catalog.CatalogConstants);
local l_ItemTileEnums_0 = v4.Tile.ItemTileEnums;
local v8 = require(l_CorePackages_0.Packages.tutils);
local v9 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXLimitedBundlesHandleNewData);
local v10 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXFixCatalogDataOverride);
local v11 = require(l_Modules_0.AvatarExperience.Flags.GetFFlagAXFixRecommendedItemCollectibles);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v19 = {
    CreateRestrictionInfo = function(v13)
        if v13 then
            local v14 = v2.List.toSet(v13);
            local v15 = v14[v6.ItemRestrictions.Limited];
            local v16 = v14[v6.ItemRestrictions.LimitedUnique];
            local v17 = v14[v6.ItemRestrictions.Collectible];
            local v18 = nil;
            if not (not (v15 or v16) and not v17) then
                v18 = {
                    [l_ItemTileEnums_0.Restriction.Limited] = v15,
                    [l_ItemTileEnums_0.Restriction.LimitedUnique] = v16,
                    [l_ItemTileEnums_0.Restriction.Collectible] = v17
                };
            end;
            return v14, v18;
        else
            return nil, nil;
        end;
    end
};
if not (not v9() and not v11()) then
    v19.DEPRECATED_itemDataFromAssetInfo = function(v20, v21)
        local v22 = v8.deepCopy(v21 or {});
        if not v10() then
            v22.id = tostring(v20.id);
            v22.assetType = tostring(v20.assetType);
            v22.name = v20.name;
            v22.description = v20.description;
            v22.product = {
                id = tostring(v20.productId)
            };
            v22.genres = v20.genres;
            v22.creator = {
                id = tostring(v20.creatorTargetId),
                name = v20.creatorName,
                type = v20.creatorType,
                hasVerifiedBadge = v20.creatorHasVerifiedBadge
            };
            v22.priceInRobux = v20.price;
            v22.lowestPrice = v20.lowestPrice;
            v22.favoriteCount = v20.favoriteCount;
            v22.itemStatus = v20.itemStatus;
            local v23, v24 = v19.CreateRestrictionInfo(v20.itemRestrictions);
            v22.itemRestrictions = v23;
            v22.tileRestrictionsMap = v24;
            v22.priceStatus = v20.priceStatus;
            v22.numberRobloxHasAvailable = v20.unitsAvailableForConsumption or v20.numberRobloxHasAvailable;
            v22.totalQuantity = v20.totalQuantity;
            v22.isForRent = v20.isForRent;
            v22.isOwned = v20.owned;
            v22.isPurchasable = v20.isPurchasable;
            v22.expectedSellerId = tostring(v20.expectedSellerId);
            v22.premiumPricing = v20.premiumPricing;
            v22.collectibleItemId = v20.collectibleItemId;
            v22.saleLocationType = v20.saleLocationType;
            v22.hasResellers = v20.hasResellers;
            return v22;
        else
            local v25, v26 = v19.CreateRestrictionInfo(v20.itemRestrictions);
            return (v3.join(v22, {
                id = if not v20.id then nil else tostring(v20.id),
                assetType = if not v20.assetType then nil else tostring(v20.assetType),
                name = v20.name,
                description = v20.description,
                product = if not v20.productId then nil else {
                    id = tostring(v20.productId)
                },
                genres = v20.genres,
                creator = if not v20.creatorTargetId then nil else {
                    id = tostring(v20.creatorTargetId),
                    name = v20.creatorName,
                    type = v20.creatorType,
                    hasVerifiedBadge = v20.creatorHasVerifiedBadge
                },
                priceInRobux = v20.price,
                lowestPrice = v20.lowestPrice,
                favoriteCount = v20.favoriteCount,
                itemStatus = v20.itemStatus,
                itemRestrictions = v25,
                tileRestrictionsMap = v26,
                priceStatus = v20.priceStatus,
                numberRobloxHasAvailable = v20.unitsAvailableForConsumption or v20.numberRobloxHasAvailable,
                totalQuantity = v20.totalQuantity,
                isForRent = v20.isForRent,
                isOwned = v20.owned,
                isPurchasable = v20.isPurchasable,
                expectedSellerId = if not v20.expectedSellerId then nil else tostring(v20.expectedSellerId),
                premiumPricing = v20.premiumPricing,
                collectibleItemId = v20.collectibleItemId,
                saleLocationType = v20.saleLocationType,
                hasResellers = v20.hasResellers
            }));
        end;
    end;
    v19.DEPRECATED_itemDataFromBundleInfo = function(v27, v28, v29)
        local v30 = v8.deepCopy(v29 or {});
        if not v10() then
            v30.id = tostring(v27.id);
            v30.itemType = v27.itemType;
            v30.bundleType = v28;
            v30.name = v27.name;
            v30.description = v27.description;
            v30.product = {
                id = tostring(v27.productId)
            };
            v30.genres = v27.genres;
            v30.creator = {
                id = tostring(v27.creatorTargetId),
                name = v27.creatorName,
                type = v27.creatorType,
                hasVerifiedBadge = v27.creatorHasVerifiedBadge
            };
            v30.priceInRobux = v27.price;
            v30.favoriteCount = v27.favoriteCount;
            v30.itemStatus = v27.itemStatus;
            local v31, v32 = v19.CreateRestrictionInfo(v27.itemRestrictions);
            v30.itemRestrictions = v31;
            v30.tileRestrictionsMap = v32;
            v30.lowestPrice = v27.lowestPrice;
            v30.priceStatus = v27.priceStatus;
            v30.numberRobloxHasAvailable = v27.unitsAvailableForConsumption or v27.numberRobloxHasAvailable;
            v30.isForRent = v27.isForRent;
            v30.isOwned = v27.owned;
            v30.isPurchasable = v27.isPurchasable;
            v30.expectedSellerId = tostring(v27.expectedSellerId);
            v31 = {};
            if v27.bundledItems then
                for _, v34 in v27.bundledItems, nil, nil do
                    table.insert(v31, {
                        id = tostring(v34.id),
                        type = v34.type
                    });
                end;
                v30.items = v31;
            end;
            v30.totalQuantity = v27.totalQuantity;
            v30.premiumPricing = v27.premiumPricing;
            v30.collectibleItemId = v27.collectibleItemId;
            v30.saleLocationType = v27.saleLocationType;
            v30.hasResellers = v27.hasResellers;
            return v30;
        else
            local v35, v36 = v19.CreateRestrictionInfo(v27.itemRestrictions);
            local v37 = if not v27.productId then nil else {
                id = tostring(v27.productId)
            };
            local v38 = if not v27.creatorTargetId then nil else {
                id = tostring(v27.creatorTargetId),
                name = v27.creatorName,
                type = v27.creatorType,
                hasVerifiedBadge = v27.creatorHasVerifiedBadge
            };
            local v39 = nil;
            if v27.bundledItems then
                v39 = {};
                for _, v41 in v27.bundledItems, nil, nil do
                    table.insert(v39, {
                        id = tostring(v41.id),
                        type = v41.type
                    });
                end;
            end;
            return (v3.join(v30, {
                id = if not v27.id then nil else tostring(v27.id),
                itemType = v27.itemType,
                bundleType = v28,
                name = v27.name,
                description = v27.description,
                product = v37,
                genres = v27.genres,
                creator = v38,
                priceInRobux = v27.price,
                favoriteCount = v27.favoriteCount,
                itemStatus = v27.itemStatus,
                itemRestrictions = v35,
                tileRestrictionsMap = v36,
                lowestPrice = v27.lowestPrice,
                priceStatus = v27.priceStatus,
                numberRobloxHasAvailable = v27.unitsAvailableForConsumption or v27.numberRobloxHasAvailable,
                isForRent = v27.isForRent,
                isOwned = v27.owned,
                isPurchasable = v27.isPurchasable,
                expectedSellerId = if not v27.expectedSellerId then nil else tostring(v27.expectedSellerId),
                items = v39,
                totalQuantity = v27.totalQuantity,
                premiumPricing = v27.premiumPricing,
                collectibleItemId = v27.collectibleItemId,
                saleLocationType = v27.saleLocationType,
                hasResellers = v27.hasResellers
            }));
        end;
    end;
end;
return v19;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.AvatarExperience.Common.Constants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return {
    filterTryOns = function(v3, v4)
        local v5 = {};
        local v6 = nil;
        for v7, v8 in v3, nil, nil do
            local v9 = v1.AssetTypeToAssetCategory[v4.itemSubType];
            local v10 = not v9 or v1.AssetTypeToAssetCategory[v8.itemSubType] ~= v9;
            if not (v8.itemSubType ~= v4.itemSubType) or not v10 then
                v6 = v8;
            else
                v5[v7] = v8;
            end;
        end;
        return v5, v6;
    end,
    convertDefaultBodyColorRanges = function(v11)
        local v12 = {};
        for _, v14 in v11, nil, nil do
            table.insert(v12, {
                rangeId = v14[1]:ToHex(),
                range = v14
            });
        end;
        return v12;
    end,
    generateTryOnItemIdKey = function(v15, v16, v17)
        if v17 ~= nil and v17 == v1.LookType.Avatar then
            return tostring(v15) .. "-" .. v16;
        else
            return v15;
        end;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
return require(game:GetService("CorePackages").Rodux).createReducer(false, {
    [require(l_Modules_0.AvatarExperience.Common.Actions.StartedApplyingLayeredClothing).name] = function(_, _)
        return true;
    end,
    [require(l_Modules_0.AvatarExperience.Common.Actions.FinishedApplyingLayeredClothing).name] = function(_, _)
        return false;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_CorePackages_0.Rodux);
local v6 = require(l_Modules_0.AvatarExperience.Common.Models.AssetInfo);
local v7 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetRecommendedAssetsAction);
local v8 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAssetInfoFromInventoryFetch);
local v9 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAssetInfoFromOutfitDetails);
local v10 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetInfoFromCatalogItemAction);
local v11 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetInfoFromBundleItemAction);
local v12 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetInfoFromSortResults);
local v13 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetAssetInfoFromAvatarEditorRecommendedItemsV2);
local v14 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetHydratedWidgetData);
local v15 = require(l_Modules_0.AvatarExperience.Catalog.Actions.AppendAssetResellersList);
local v16 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetResellersList);
local v17 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetLowestPrice);
local v18 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetResaleData);
local v19 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetAssetVersionData);
local v20 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v21 = require(l_Modules_0.AvatarExperience.Common.Actions.SetAssetOwned);
local v22 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.GrantAsset);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
local v24 = require(l_Modules_0.AvatarExperience.Common.WidgetConstants);
return v5.createReducer({}, {
    [v10.name] = function(v25, v26)
        v3.isType(v26.assetId, "string", "assetId must be a string.");
        v3.isType(v26.assetData, "table", "assetData must be a table.");
        local v27 = tostring(v26.assetId);
        return v4.Dictionary.join(v25, {
            [v27] = v6.fromGetCatalogItemData(v26.assetData, v25[v27])
        });
    end,
    [v11.name] = function(v28, v29)
        v3.isType(v29.assets, "table", "assets data must be a table.");
        local v30 = {};
        for _, v32 in v29.assets, nil, nil do
            local v33 = tostring(v32.id);
            v30[v33] = v6.fromBundleItemData(v32, v28[v33]);
        end;
        return v4.Dictionary.join(v28, v30);
    end,
    [v12.name] = function(v34, v35)
        v3.isType(v35.sortResults, "table", "sortResults must be a table.");
        local v36 = {};
        for _, v38 in v35.sortResults, nil, nil do
            local v39 = tostring(v38.id);
            v36[v39] = v6.fromSortResults(v38, v34[v39]);
        end;
        return v4.Dictionary.join(v34, v36);
    end,
    [v7.name] = function(v40, v41)
        v3.isType(v41.recommendedItems, "table", "recommendedItems must be a table.");
        local v42 = tostring(v41.assetId);
        local v43 = {};
        local v44 = {};
        for _, v46 in v41.recommendedItems, nil, nil do
            local v47 = tostring(v46.item.assetId);
            local v48 = v6.fromGetRecommendedItemsData(v46, v41.assetTypeId, v40[v47]);
            local l_assetTypeId_0 = v41.assetTypeId;
            v43[v47] = v48;
            table.insert(v44, {
                id = v47,
                type = v20.ItemType.Asset,
                subType = l_assetTypeId_0
            });
        end;
        v43[v42] = v6.fromRecommendedItemSummaries(v44, v40[v42]);
        return v4.Dictionary.join(v40, v43);
    end,
    [v18.name] = function(v50, v51)
        v3.isType(v51.assetResaleData, "table", "assetResaleData must be a table.");
        local v52 = tostring(v51.assetId);
        return v4.Dictionary.join(v50, {
            [v52] = v6.fromResaleData(v51.assetResaleData, v50[v52])
        });
    end,
    [v8.name] = function(v53, v54)
        v3.isType(v54.assets, "table", "assets must be a table.");
        local v55 = {};
        for _, v57 in v54.assets, nil, nil do
            local v58 = tostring(v57.assetId);
            v55[v58] = v6.fromInventoryFetch(v57, v53[v58]);
        end;
        return v4.Dictionary.join(v53, v55);
    end,
    [v9.name] = function(v59, v60)
        v3.isType(v60.assets, "table", "assets must be a table.");
        local v61 = {};
        for _, v63 in v60.assets, nil, nil do
            local v64 = tostring(v63.id);
            v61[v64] = v6.fromOutfitDetails(v63, v59[v64]);
        end;
        return v4.Dictionary.join(v59, v61);
    end,
    [v16.name] = function(v65, v66)
        v3.isType(v66.assetId, "string", "assetId must be a sting.");
        v3.isType(v66.userAssetIds, "table", "userAssetIds must be a table.");
        local v67 = tostring(v66.assetId);
        return v4.Dictionary.join(v65, {
            [v67] = v6.fromGetResellers(v66.userAssetIds, v65[v67])
        });
    end,
    [v15.name] = function(v68, v69)
        v3.isType(v69.assetId, "string", "assetId must be a sting.");
        v3.isType(v69.userAssetIds, "table", "userAssetIds must be a table.");
        local v70 = tostring(v69.assetId);
        local v71 = if not v68[v70] then v6.mock() else v68[v70];
        local l_resellerUserAssetIds_0 = v71.resellerUserAssetIds;
        local _ = nil;
        return v4.Dictionary.join(v68, {
            [v70] = v4.Dictionary.join(v71, (v6.fromGetResellers(if not l_resellerUserAssetIds_0 then v69.userAssetIds else v4.List.join(l_resellerUserAssetIds_0, v69.userAssetIds), v71)))
        });
    end,
    [v17.name] = function(v74, v75)
        v3.isType(v75.assetId, "string", "assetId must be a sting.");
        v3.isType(v75.priceInRobux, "number", "price must be a number.");
        local l_assetId_0 = v75.assetId;
        return v4.Dictionary.join(v74, {
            [l_assetId_0] = v6.fromLowestPrice(v75.priceInRobux, v74[l_assetId_0])
        });
    end,
    [v13.name] = function(v77, v78)
        v3.isType(v78.assets, "table", "assets must be a table.");
        v3.isType(v78.assetTypeId, "string", "assetTypeId must be a string.");
        local l_assetTypeId_1 = v78.assetTypeId;
        local v80 = {};
        for _, v82 in v78.assets, nil, nil do
            local v83 = tostring(v82.id);
            v80[v83] = v6.fromGetRecommendedItemsDataV2(v82, l_assetTypeId_1, v77[v83]);
        end;
        return v4.Dictionary.join(v77, v80);
    end,
    [v14.name] = function(v84, v85)
        v3.isType(v85.payload, "table", "payload must be a table.");
        if v85.payload[v24.ContentType.Asset] then
            local v86 = {};
            for _, v88 in v85.payload[v24.ContentType.Asset], nil, nil do
                local v89 = tostring(v88.id);
                local v90 = v6.fromHydrateWidgetInfo(v88, v84[v89]);
                v86[v89] = v4.Dictionary.join(v90, v90);
            end;
            return v4.Dictionary.join(v84, v86);
        else
            return v84;
        end;
    end,
    [v21.name] = function(v91, v92)
        v3.isType(v92.assetId, "string", "assetId must be a string.");
        v3.isType(v92.isOwned, "boolean", "isOwned must be a bool.");
        local v93 = tostring(v92.assetId);
        return v4.Dictionary.join(v91, {
            [v93] = v6.fromIsOwned(v92.isOwned, v91[v93])
        });
    end,
    [v22.name] = function(v94, v95)
        local v96 = tostring(v95.assetTypeId);
        local v97 = tostring(v95.assetId);
        local v98 = v6.fromAssetGrant(v97, v96);
        local v99 = v94[v97];
        if not v99 or not v99.assetType then
            if v99 then
                v98 = v4.Dictionary.join(v99, v98);
            end;
            return v4.Dictionary.join(v94, {
                [v97] = v98
            });
        else
            return v94;
        end;
    end,
    [require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.ReceivedAvatarData).name] = function(v100, v101)
        local l_assets_0 = v101.avatarData.assets;
        if l_assets_0 == nil then
            return v100;
        else
            local v103 = {};
            for _, v105 in l_assets_0, nil, nil do
                local v106 = tostring(v105.id);
                local v107 = v6.fromReceivedAvatarData(v105);
                local v108 = v100[v106];
                if v108 then
                    v103[v106] = v4.Dictionary.join(v107, v108);
                else
                    v103[v106] = v107;
                end;
            end;
            return v4.Dictionary.join(v100, v103);
        end;
    end,
    [v19.name] = function(v109, v110)
        v3.isType(v110.assetVersionData, "table", "assetVersionData must be a table.");
        local v111 = tostring(v110.assetId);
        return v4.Dictionary.join(v109, {
            [v111] = v6.fromVersionData(v110.assetVersionData, v109[v111])
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
return require(game:GetService("CorePackages").Rodux).combineReducers({
    AvatarEditor = require(l_Modules_0.AvatarExperience.AvatarEditor.Reducers.AvatarEditor),
    Catalog = require(l_Modules_0.AvatarExperience.Catalog.Reducers.Catalog),
    ProfilePictureEditor = require(l_Modules_0.AvatarExperience.ProfilePictureEditor.Reducers.ProfilePictureEditor),
    Common = require(l_Modules_0.AvatarExperience.Common.Reducers.Common),
    AvatarScene = require(l_Modules_0.AvatarExperience.Common.Reducers.AvatarScene),
    ExternalNavigationRequest = require(l_Modules_0.AvatarExperience.Common.Reducers.ExternalNavigationRequest),
    AvatarAutocompleteSuggestions = require(l_Modules_0.AvatarExperience.Catalog.Reducers.AvatarAutocompleteSuggestions),
    AccessoryAdjustment = require(l_Modules_0.AvatarExperience.AccessoryAdjustment.Reducers.AccessoryAdjustment),
    LayeredClothingSort = require(l_Modules_0.AvatarExperience.LayeredClothingSort.Reducers.LayeredClothingSort),
    CameraButton = require(l_Modules_0.AvatarExperience.Common.Reducers.CameraButton)
});


return require(game:GetService("CorePackages").Rodux).createReducer(false, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Actions.AvatarExperienceLoaded).name] = function(_, _)
        return true;
    end
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_Modules_0.AvatarExperience.Common.Actions.SetAvatarSceneRoute);
local v5 = require(l_Modules_0.AvatarExperience.Common.Components.RoactNavigation.AvatarRoute);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v3.createReducer(v5.new({}), {
    [v4.name] = function(_, v8)
        return v8.avatarRoute;
    end
});


local v0 = require(game:GetService("CorePackages").Rodux);
local l_Parent_0 = script.Parent;
return v0.combineReducers({
    Character = require(l_Parent_0.Character),
    TryOn = require(l_Parent_0.TryOn),
    AvatarRoute = require(l_Parent_0.AvatarRoute),
    OutfitTryOn = require(l_Parent_0.OutfitTryOn),
    Looks = require(l_Parent_0.Looks),
    LastSavedTriedOnOutfit = require(l_Parent_0.LastSavedTriedOnOutfit)
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(l_Modules_0.AvatarExperience.Common.Models.BundleInfo);
local v7 = require(l_Modules_0.AvatarExperience.Common.Constants);
local v8 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetRecommendedBundlesAction);
local v9 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetBundleInfoFromCatalogItemAction);
local v10 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetBundleInfoFromSortResults);
local v11 = require(l_Modules_0.AvatarExperience.AvatarEditor.Actions.SetBundleInfoFromAvatarEditorRecommendedItemsV2);
local v12 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetHydratedWidgetData);
local v13 = require(l_Modules_0.AvatarExperience.Common.Actions.SetBundleOwned);
local v14 = require(l_Modules_0.AvatarExperience.Common.WidgetConstants);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return v3.createReducer({}, {
    [v9.name] = function(v16, v17)
        v4.isType(v17.bundleId, "string", "bundleId must be a string.");
        v4.isType(v17.bundleData, "table", "bundleData must be a table.");
        local v18 = tostring(v17.bundleId);
        return v5.Dictionary.join(v16, {
            [v18] = v6.fromGetCatalogItemData(v17.bundleData, v16[v18])
        });
    end,
    [v11.name] = function(v19, v20)
        v4.isType(v20.bundles, "table", "bundles must be a table.");
        local v21 = {};
        for _, v23 in v20.bundles, nil, nil do
            local v24 = tostring(v23.id);
            v21[v24] = v6.fromGetRecommendedItemsDataV2(v23, v19[v24]);
        end;
        return v5.Dictionary.join(v19, v21);
    end,
    [v12.name] = function(v25, v26)
        v4.isType(v26.payload, "table", "payload must be a table.");
        if v26.payload[v14.ContentType.Bundle] then
            local v27 = {};
            for _, v29 in v26.payload[v14.ContentType.Bundle], nil, nil do
                local v30 = tostring(v29.id);
                v27[v30] = v6.fromHydrateWidgetInfo(v29, v25[v30]);
            end;
            return v5.Dictionary.join(v25, v27);
        else
            return v25;
        end;
    end,
    [v10.name] = function(v31, v32)
        v4.isType(v32.sortResults, "table", "sortResults must be a table.");
        local v33 = {};
        for _, v35 in v32.sortResults, nil, nil do
            local v36 = tostring(v35.id);
            v33[v36] = v6.fromSortResults(v35, v31[v36]);
        end;
        return v5.Dictionary.join(v31, v33);
    end,
    [v8.name] = function(v37, v38)
        v4.isType(v38.bundleId, "string", "bundleId must be a string.");
        v4.isType(v38.recommendedItems, "table", "recommendedItems must be a table.");
        local v39 = tostring(v38.bundleId);
        local v40 = {};
        local v41 = {};
        for _, v43 in v38.recommendedItems, nil, nil do
            local v44 = tostring(v43.id);
            v40[v44] = v6.fromGetRecommendedItemsDataV2(v43, v37[v44]);
            v41[#v41 + 1] = {
                id = v44,
                type = v7.ItemType.Bundle,
                subType = tostring(v43.bundleType)
            };
        end;
        v40[v39] = v6.fromRecommendedItemSummaries(v41, v37[v39]);
        return v5.Dictionary.join(v37, v40);
    end,
    [v13.name] = function(v45, v46)
        v4.isType(v46.bundleId, "string", "bundleId must be a string.");
        v4.isType(v46.isOwned, "boolean", "isOwned must be a bool.");
        local v47 = tostring(v46.bundleId);
        return v5.Dictionary.join(v45, {
            [v47] = v6.fromIsOwned(v46.isOwned, v45[v47])
        });
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Cryo);
local v2 = require(l_CorePackages_0.Rodux);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v4 = require(l_Modules_0.AvatarExperience.Common.Actions.SetCameraButtonStatus);
local v5 = require(l_Modules_0.AvatarExperience.Common.Actions.SetCameraButtonErrorOccurred);
local _ = require(l_Modules_0.AvatarExperience.Common.Types);
return (v2.createReducer({
    enabled = false,
    errorOccurred = false
}, {
    [v4.name] = function(v7, v8)
        return (v1.Dictionary.join(v7, {
            enabled = v8.status
        }));
    end,
    [v5.name] = function(v9, v10)
        return (v1.Dictionary.join(v9, {
            errorOccurred = v10.errorOccurred
        }));
    end
}));


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.CurrentCharacter);
local v2 = require(l_Parent_0.CharacterVersion);
local v3 = require(l_Parent_0.PlayingSwimAnimation);
local v4 = require(l_Parent_0.CharacterModelVersion);
local v5 = require(l_Parent_0.TryOnCharacterModelVersion);
local v6 = require(l_Parent_0.SavedCharacterModelVersion);
local v7 = require(l_Parent_0.ApplyingLayeredClothing);
local v8 = require(l_Parent_0.ShouldDelaySaveManager);
local v9 = require(l_Parent_0.WaitingOnLayeredClothingUpdates);
return function(v10, v11)
    v10 = v10 or {};
    return {
        CharacterVersion = v2(v10.CharacterVersion, v11),
        CurrentCharacter = v1(v10.CurrentCharacter, v11),
        PlayingSwimAnimation = v3(v10.PlayingSwimAnimation, v11),
        ApplyingLayeredClothing = v7(v10.ApplyingLayeredClothing, v11),
        CharacterModelVersion = v4(v10.CharacterModelVersion, v11),
        TryOnCharacterModelVersion = v5(v10.TryOnCharacterModelVersion, v11),
        SavedCharacterModelVersion = v6(v10.SavedCharacterModelVersion, v11),
        ShouldDelaySaveManager = v8(v10.ShouldDelaySaveManager, v11),
        WaitingOnLayeredClothingUpdates = v9(v10.WaitingOnLayeredClothingUpdates, v11)
    };
end;


return require(game:GetService("CorePackages").Rodux).createReducer(0, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.AvatarEditor.Actions.IncrementCharacterModelVersion).name] = function(v0, _)
        return v0 + 1;
    end
});


return require(game:GetService("CorePackages").Rodux).createReducer(0, {
    [require(game:GetService("CoreGui").RobloxGui.Modules.AvatarExperience.Common.Actions.IncrementCharacterVersion).name] = function(v0, _)
        return v0 + 1;
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
return require(l_CorePackages_0.Rodux).combineReducers({
    CollectiblesItemInfo = require(l_Modules_0.AvatarExperience.Common.Reducers.CollectiblesItemInfo),
    CollectiblesResellableInstances = require(l_Modules_0.AvatarExperience.Common.Reducers.CollectiblesResellableInstances),
    CollectiblesMarketplaceResaleParameters = require(l_Modules_0.AvatarExperience.Common.Reducers.CollectiblesMarketplaceResaleParameters),
    CollectiblesResellersInstances = require(l_Modules_0.AvatarExperience.Common.Reducers.CollectiblesResellersInstances)
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Workspace.Packages.ArgCheck);
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetCollectibleItemInfo);
local v6 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetCollectibleResellersInstances);
local v7 = require(l_Modules_0.AvatarExperience.Catalog.Actions.SetCollectibleResaleData);
local v8 = require(l_Modules_0.AvatarExperience.Common.Models.CollectibleInfo);
return v3.createReducer({}, {
    [v5.name] = function(v9, v10)
        v2.isType(v10.collectibleItemId, "string", "collectibleItemId must be a string.");
        v2.isType(v10.collectibleItemData, "table", "collectibleItemData must be a table.");
        local l_collectibleItemId_0 = v10.collectibleItemId;
        local v12 = v8.fromGetCollectibleItemData(v10.collectibleItemData);
        local v13 = v9[l_collectibleItemId_0];
        if not v13 then
            return v4.Dictionary.join(v9, {
                [l_collectibleItemId_0] = v12
            });
        else
            return v4.Dictionary.join(v9, {
                [l_collectibleItemId_0] = v4.Dictionary.join(v13, v12)
            });
        end;
    end,
    [v6.name] = function(v14, v15)
        v2.isType(v15.collectibleItemId, "string", "collectibleItemId must be a string.");
        v2.isType(v15.collectibleItemInstances, "table", "collectibleItemData must be a table.");
        local l_collectibleItemId_1 = v15.collectibleItemId;
        local v17 = v8.fromGetResellers(v15.collectibleItemInstances);
        local v18 = v14[l_collectibleItemId_1];
        if not v18 then
            return v4.Dictionary.join(v14, {
                [l_collectibleItemId_1] = v17
            });
        else
            return v4.Dictionary.join(v14, {
                [l_collectibleItemId_1] = v4.Dictionary.join(v18, v17)
            });
        end;
    end,
    [v7.name] = function(v19, v20)
        v2.isType(v20.collectibleItemId, "string", "collectibleItemId must be a string.");
        v2.isType(v20.resaleData, "table", "resaleData must be a table.");
        local l_collectibleItemId_2 = v20.collectibleItemId;
        local v22 = v8.fromGetResaleData(v20.resaleData);
        local v23 = v19[l_collectibleItemId_2];
        if not v23 then
            return v4.Dictionary.join(v19, {
                [l_collectibleItemId_2] = v22
            });
        else
            return v4.Dictionary.join(v19, {
                [l_collectibleItemId_2] = v4.Dictionary.join(v23, v22)
            });
        end;
    end
});