From b8fb22f4011068321b04255074d30d8545abe567 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sun, 25 Oct 2026 00:16:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(session):=20=E9=9D=99=E6=80=81=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=20modelId=20=E6=B3=A8=E5=86=8C=E8=A1=A8=EF=BC=8C?= =?UTF-8?q?=E8=A1=A5=E9=BD=90=E5=A4=A7=E5=8E=85=E5=AE=B9=E5=99=A8=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3DTank/docs/KtRebuild_Plan.md | 12 + 3DTank/names/model_registry.json | 2183 +++++++++++++++++ 3DTank/tools/gen_model_registry.js | 135 + .../jsMain/kotlin/App/Session/SessionCheck.kt | 4 + .../kotlin/App/Session/SessionRouter.kt | 7 + .../jsMain/kotlin/App/State/ModelRegistry.kt | 371 +++ 6 files changed, 2712 insertions(+) create mode 100644 3DTank/names/model_registry.json create mode 100644 3DTank/tools/gen_model_registry.js create mode 100644 TankiOffline/app/src/jsMain/kotlin/App/State/ModelRegistry.kt diff --git a/3DTank/docs/KtRebuild_Plan.md b/3DTank/docs/KtRebuild_Plan.md index 36c8a80..f258eef 100644 --- a/3DTank/docs/KtRebuild_Plan.md +++ b/3DTank/docs/KtRebuild_Plan.md @@ -476,6 +476,18 @@ 说明现有 modelId→codec 绑定只覆盖 363 个模型;需要补「modelId → 模块/类」的运行时注册表, 才能把大厅容器的模型路由进状态层。当前 `RunSessionTest.ps1` 只断言「会话解码 + 回编码」, 路由计数(已派发/未覆盖)作为诊断输出。 + - modelId 注册表(继续补): + - 新增 `tools/gen_model_registry.js`:静态解析各模块构造函数里的 + `this. = new X(lo, hi)` + `ModelReg.n7o(this., … new W(b(ModelClass), …))`, + 得到 **362 个 modelId**(361 个解析出语义名,如 `ItemCategoryCC` / `BuyableCC` / `UserPropertiesCC`)。 + 产物:`names/model_registry.json` + `App/State/ModelRegistry.kt`(`ModelNamesByModelId`)。 + - `SessionRouter` 把它用于诊断:`RunSessionTest.ps1` 现在会打印「未覆盖协议模型」TOP。 + 抓包实测:`plain` 目录前 8000 个 s2c 里未覆盖的主要是 + `ItemCategoryCC×1918`、`DescriptionModelCC×1883`、`BuyableCC×1879`、`TimePeriodModelCC×1879`、 + `ItemModelCC×1879`、`ItemRarityCC×1879`、`PremiumItemCC×1879`、`ItemViewCategoryCC×1879` + —— 即车库 / 商店的物品配置容器,不是用户属性。 + - 下一步:给这 8 个 CC 写「CC → 动作」适配器(原包在 module_47243 的模型层里聚合后派发), + 用户属性那条链路(`UserPropertiesCC` → `SetUserPropertiesAction`)已经可用。 - 委派表里的已知形态:`shop` / `home` / `localBattleUserState` / `partner` 是内联 IIFE, 已按字段具名为 `(inline@)` 并从函数体抓到顶层动作名(69 / 1 / 2 / 11 个); `launchParams` 是纯透传(`(pass-through)`,无 reducer),已把字段收口为 `Map`。 diff --git a/3DTank/names/model_registry.json b/3DTank/names/model_registry.json new file mode 100644 index 0000000..77444b7 --- /dev/null +++ b/3DTank/names/model_registry.json @@ -0,0 +1,2183 @@ +{ + "Note": "静态解析的 modelId → 模块 / 模型类 / 语义名。来源:各模块构造函数里的 `ModelReg.n7o(modelId, codec)` 注册点 + `this. = new X(lo, hi)` 的 64 位常量;语义名同模块的 ModelClassLocal 反查 codec_fields.json。", + "Source": [ + "src/*.js", + "codec_fields.json" + ], + "Count": 362, + "WithName": 361, + "Rows": [ + { + "ModelId": "3000206000964343740", + "Module": "module_01510", + "ModelClass": "ot", + "ModelName": "FacebookPaymentCC" + }, + { + "ModelId": "7245225301789542308", + "Module": "module_01510", + "ModelClass": "tn", + "ModelName": "SonyProductToItemIdMapCC" + }, + { + "ModelId": "7838366943662257567", + "Module": "module_10283", + "ModelClass": "Mt", + "ModelName": "AntiAddictionRealNameValidatorModelCC" + }, + { + "ModelId": "6791702738669939115", + "Module": "module_10283", + "ModelClass": "Vt", + "ModelName": "LoaderBackgroundModelCC" + }, + { + "ModelId": "4065909569861626318", + "Module": "module_10283", + "ModelClass": "rn", + "ModelName": "ServerHaltEntranceCC" + }, + { + "ModelId": "466296741210741928", + "Module": "module_10283", + "ModelClass": "gn", + "ModelName": "ExternalEntranceCC" + }, + { + "ModelId": "9117714962311439886", + "Module": "module_10283", + "ModelClass": "jn", + "ModelName": "InviteEntranceCC" + }, + { + "ModelId": "5457907984000701384", + "Module": "module_10283", + "ModelClass": "ti", + "ModelName": "NotificationsByCountryModelCC" + }, + { + "ModelId": "513176302374590130", + "Module": "module_10283", + "ModelClass": "ri", + "ModelName": "CompositePartnerCC" + }, + { + "ModelId": "2474458842977623992", + "Module": "module_10283", + "ModelClass": "ki", + "ModelName": "RegistrationModelCC" + }, + { + "ModelId": "7300500077035374704", + "Module": "module_10283", + "ModelClass": "yi", + "ModelName": "EntranceResourcesCC" + }, + { + "ModelId": "6403067749608679876", + "Module": "module_25377", + "ModelClass": "sn", + "ModelName": "UserNotifierCC" + }, + { + "ModelId": "1850509145998626828", + "Module": "module_25377", + "ModelClass": "vn", + "ModelName": "UserActionsLoggerCC" + }, + { + "ModelId": "1298753286651761171", + "Module": "module_25377", + "ModelClass": "Wn", + "ModelName": "PremiumNotifierCC" + }, + { + "ModelId": "258682513334072065", + "Module": "module_25377", + "ModelClass": "ti", + "ModelName": "RankNotifierData" + }, + { + "ModelId": "4255726087158005051", + "Module": "module_25377", + "ModelClass": "si", + "ModelName": "UidNotifierData" + }, + { + "ModelId": "3527205014716342329", + "Module": "module_25377", + "ModelClass": "vi", + "ModelName": "RankLoaderCC" + }, + { + "ModelId": "6627517808336136295", + "Module": "module_25377", + "ModelClass": "$i", + "ModelName": "UidCheckCC" + }, + { + "ModelId": "216902005816818019", + "Module": "module_31908", + "ModelClass": "He", + "ModelName": "SpectatorsModelCC" + }, + { + "ModelId": "2085529474881905981", + "Module": "module_31908", + "ModelClass": "Qe", + "ModelName": "StatisticsModelCC" + }, + { + "ModelId": "2472262160204144219", + "Module": "module_31908", + "ModelClass": "hu", + "ModelName": "StatisticsDMCC" + }, + { + "ModelId": "787936358514072261", + "Module": "module_31908", + "ModelClass": "pu", + "ModelName": "StatisticsTeamCC" + }, + { + "ModelId": "871785774630866042", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "6768558945605412944", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "8115862559097350286", + "Module": "module_37504", + "ModelClass": "dn", + "ModelName": "ClanFriendsCC" + }, + { + "ModelId": "7076997842038370798", + "Module": "module_37504", + "ModelClass": "qn", + "ModelName": "ClanMembersCC" + }, + { + "ModelId": "3413041240691998182", + "Module": "module_37504", + "ModelClass": "An", + "ModelName": "ClanIncomingCC" + }, + { + "ModelId": "6220257539261493170", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "8762499949521628954", + "Module": "module_37504", + "ModelClass": "Gn", + "ModelName": "ClanInfoCC" + }, + { + "ModelId": "6048708024205731750", + "Module": "module_37504", + "ModelClass": "Jn", + "ModelName": "ClanOutgoingCC" + }, + { + "ModelId": "6882547137659234022", + "Module": "module_37504", + "ModelClass": "vi", + "ModelName": "ClanPermissionsCC" + }, + { + "ModelId": "8495889215182031654", + "Module": "module_37504", + "ModelClass": "qi", + "ModelName": "LicenseClanUserCC" + }, + { + "ModelId": "7949064601138261608", + "Module": "module_37504", + "ModelClass": "Ci", + "ModelName": "ClanNotifierData" + }, + { + "ModelId": "2547093126916834195", + "Module": "module_37504", + "ModelClass": "Pi", + "ModelName": "ClanEditPriceCC" + }, + { + "ModelId": "6247612331185889342", + "Module": "module_37504", + "ModelClass": "Yi", + "ModelName": "ClanLoadingPanelCC" + }, + { + "ModelId": "2606798949852309286", + "Module": "module_37504", + "ModelClass": "ir", + "ModelName": "ClanPanelNotificationCC" + }, + { + "ModelId": "6042266992054445914", + "Module": "module_37504", + "ModelClass": "_r", + "ModelName": "ClanCreateCC" + }, + { + "ModelId": "1115275516484037832", + "Module": "module_37504", + "ModelClass": "pr", + "ModelName": "ClanUserCC" + }, + { + "ModelId": "2023935033691193766", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "5297988375509642470", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "4813819753066546054", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "649690707811173020", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "881620222948704326", + "Module": "module_37504", + "ModelClass": "zi", + "ModelName": "ContainerCC" + }, + { + "ModelId": "1986821874929333245", + "Module": "module_37504", + "ModelClass": "Yr", + "ModelName": "UserAccountRemovalModelCC" + }, + { + "ModelId": "7588919819099098108", + "Module": "module_47243", + "ModelClass": "dl", + "ModelName": "BattleInviteCC" + }, + { + "ModelId": "2855626038259597130", + "Module": "module_47243", + "ModelClass": "xl", + "ModelName": "BattlePassPurchaseNotifierCC" + }, + { + "ModelId": "7805766859473669177", + "Module": "module_47243", + "ModelClass": "Rl", + "ModelName": "ChallengeClientCC" + }, + { + "ModelId": "8677996546985988365", + "Module": "module_47243", + "ModelClass": "Jl", + "ModelName": "StarsInfoCC" + }, + { + "ModelId": "1987602940683756146", + "Module": "module_47243", + "ModelClass": "af", + "ModelName": "CoinInfoCC" + }, + { + "ModelId": "3349786357139026014", + "Module": "module_47243", + "ModelClass": "$f", + "ModelName": "ContractUserModelCC" + }, + { + "ModelId": "6514486185481319524", + "Module": "module_47243", + "ModelClass": "Af", + "ModelName": "CreatorTagCC" + }, + { + "ModelId": "965113061940997187", + "Module": "module_47243", + "ModelClass": "Lf", + "ModelName": "CreatorTagsCC" + }, + { + "ModelId": "7341286352739641155", + "Module": "module_47243", + "ModelClass": "Wf", + "ModelName": "DebtInfoCC" + }, + { + "ModelId": "3395764563215792356", + "Module": "module_47243", + "ModelClass": "Zf", + "ModelName": "DonationAlertCC" + }, + { + "ModelId": "8464700182634408374", + "Module": "module_47243", + "ModelClass": "hv", + "ModelName": "UserDroppableGoldSettingsCC" + }, + { + "ModelId": "3503382027414679973", + "Module": "module_47243", + "ModelClass": "xv", + "ModelName": "TankHasGrenadeCC" + }, + { + "ModelId": "5801057999588514016", + "Module": "module_47243", + "ModelClass": "Pv", + "ModelName": "ResistancesCC" + }, + { + "ModelId": "51703991768325247", + "Module": "module_47243", + "ModelClass": "Bv", + "ModelName": "SaleByShopCC" + }, + { + "ModelId": "7822174537018024954", + "Module": "module_47243", + "ModelClass": "Zv", + "ModelName": "GSWarningInfoModelCC" + }, + { + "ModelId": "3152693668290247629", + "Module": "module_47243", + "ModelClass": "op", + "ModelName": "IconsProviderCC" + }, + { + "ModelId": "6726403008449784914", + "Module": "module_47243", + "ModelClass": "wp", + "ModelName": "KeysInfoCC" + }, + { + "ModelId": "1417398836682569292", + "Module": "module_47243", + "ModelClass": "yp", + "ModelName": "PaymentCC" + }, + { + "ModelId": "1009501302658881534", + "Module": "module_47243", + "ModelClass": "Ep", + "ModelName": "PaymentLoaderCC" + }, + { + "ModelId": "4748522118519647527", + "Module": "module_47243", + "ModelClass": "Mp", + "ModelName": "PayModeCC" + }, + { + "ModelId": "6820688895043695030", + "Module": "module_47243", + "ModelClass": "Yp", + "ModelName": "AndroidPayCC" + }, + { + "ModelId": "5156898764211343104", + "Module": "module_47243", + "ModelClass": "_w", + "ModelName": "AppleAppStoreCC" + }, + { + "ModelId": "6144768774251946863", + "Module": "module_47243", + "ModelClass": "$w", + "ModelName": "BottomDescriptionCC" + }, + { + "ModelId": "8083057704493864984", + "Module": "module_47243", + "ModelClass": "Gw", + "ModelName": "PayGardenPaymentCC" + }, + { + "ModelId": "4905763060352702216", + "Module": "module_47243", + "ModelClass": "id", + "ModelName": "PayPalPayModelCC" + }, + { + "ModelId": "7860106430129114440", + "Module": "module_47243", + "ModelClass": "sd", + "ModelName": "RuStorePayCC" + }, + { + "ModelId": "3158124838791669092", + "Module": "module_47243", + "ModelClass": "dd", + "ModelName": "PaymentButtonCC" + }, + { + "ModelId": "3620520388804703780", + "Module": "module_47243", + "ModelClass": "$d", + "ModelName": "PeriodicRewardCC" + }, + { + "ModelId": "7307951074626252633", + "Module": "module_47243", + "ModelClass": "Bd", + "ModelName": "PresentsSettingsCC" + }, + { + "ModelId": "9028066746998427457", + "Module": "module_47243", + "ModelClass": "Zd", + "ModelName": "PaidRenameCC" + }, + { + "ModelId": "3179861497615625536", + "Module": "module_47243", + "ModelClass": "ag", + "ModelName": "UserEmailCC" + }, + { + "ModelId": "1893408944113965505", + "Module": "module_47243", + "ModelClass": "lg", + "ModelName": "UserPropertiesCC" + }, + { + "ModelId": "5780017129265868734", + "Module": "module_47243", + "ModelClass": "xg", + "ModelName": "ProfileVisibilityModelCC" + }, + { + "ModelId": "9006361281849290638", + "Module": "module_47243", + "ModelClass": "sm", + "ModelName": "UserPushNotificationSettingsModelCC" + }, + { + "ModelId": "5895522515282663537", + "Module": "module_47243", + "ModelClass": "gm", + "ModelName": "UserAchievementCC" + }, + { + "ModelId": "7105110962241677955", + "Module": "module_47243", + "ModelClass": "Wm", + "ModelName": "MainQuestUserModelCC" + }, + { + "ModelId": "5167916989664044333", + "Module": "module_47243", + "ModelClass": "ek", + "ModelName": "ReferralEventUserModelCC" + }, + { + "ModelId": "462434031489766566", + "Module": "module_47243", + "ModelClass": "ak", + "ModelName": "QuestCategoriesModelCC" + }, + { + "ModelId": "6966229709169193455", + "Module": "module_47243", + "ModelClass": "Uk", + "ModelName": "RewardedVideosCC" + }, + { + "ModelId": "2767408225195389970", + "Module": "module_47243", + "ModelClass": "Zk", + "ModelName": "RubyInfoCC" + }, + { + "ModelId": "1456475022890566348", + "Module": "module_47243", + "ModelClass": "ez", + "ModelName": "RulesUpdateShowingCC" + }, + { + "ModelId": "3189656422709297036", + "Module": "module_47243", + "ModelClass": "az", + "ModelName": "ItemsPackageCC" + }, + { + "ModelId": "3714146481313901316", + "Module": "module_47243", + "ModelClass": "wz", + "ModelName": "ShopCardCC" + }, + { + "ModelId": "5172585086901412996", + "Module": "module_47243", + "ModelClass": "bz", + "ModelName": "ShopCardDiscountCC" + }, + { + "ModelId": "5817682208733860186", + "Module": "module_47243", + "ModelClass": "Nz", + "ModelName": "ShowcaseViewCC" + }, + { + "ModelId": "1535852183188388854", + "Module": "module_47243", + "ModelClass": "Kz", + "ModelName": "BattlePassPackageCC" + }, + { + "ModelId": "889485403566576664", + "Module": "module_47243", + "ModelClass": "ib", + "ModelName": "KitBundleViewCC" + }, + { + "ModelId": "4186634155763928467", + "Module": "module_47243", + "ModelClass": "ab", + "ModelName": "CoinPackageCC" + }, + { + "ModelId": "6484910309342792771", + "Module": "module_47243", + "ModelClass": "gb", + "ModelName": "ContractShopCC" + }, + { + "ModelId": "2789386002514731022", + "Module": "module_47243", + "ModelClass": "yb", + "ModelName": "CrystalPackageCC" + }, + { + "ModelId": "7810820263988615290", + "Module": "module_47243", + "ModelClass": "Eb", + "ModelName": "ShopItemAdditionalDescriptionCC" + }, + { + "ModelId": "8458424802385151068", + "Module": "module_47243", + "ModelClass": "Nb", + "ModelName": "ShopDiscountCC" + }, + { + "ModelId": "6744857484209767976", + "Module": "module_47243", + "ModelClass": "Ub", + "ModelName": "EmailRequiredCC" + }, + { + "ModelId": "8853923292505519798", + "Module": "module_47243", + "ModelClass": "Kb", + "ModelName": "RestrictionByPayModeCC" + }, + { + "ModelId": "6091707767266836975", + "Module": "module_47243", + "ModelClass": "tq", + "ModelName": "ShopItemFeaturingCC" + }, + { + "ModelId": "1472449384337994019", + "Module": "module_47243", + "ModelClass": "zr", + "ModelName": null + }, + { + "ModelId": "806128205466208462", + "Module": "module_47243", + "ModelClass": "aq", + "ModelName": "GoldBoxPackageCC" + }, + { + "ModelId": "6395651505226788750", + "Module": "module_47243", + "ModelClass": "yq", + "ModelName": "GoodsCC" + }, + { + "ModelId": "7786222713213880898", + "Module": "module_47243", + "ModelClass": "yq", + "ModelName": "GoodsCC" + }, + { + "ModelId": "7935550480449821024", + "Module": "module_47243", + "ModelClass": "xq", + "ModelName": "IndemnityCC" + }, + { + "ModelId": "8629995567796005946", + "Module": "module_47243", + "ModelClass": "Iq", + "ModelName": "KeysPackageCC" + }, + { + "ModelId": "2103303438297476110", + "Module": "module_47243", + "ModelClass": "Oq", + "ModelName": "KitPackageCC" + }, + { + "ModelId": "3985896237583754666", + "Module": "module_47243", + "ModelClass": "Xq", + "ModelName": "KitViewResourceCC" + }, + { + "ModelId": "4440355418204561498", + "Module": "module_47243", + "ModelClass": "iy", + "ModelName": "KitViewResourceLocalizedCC" + }, + { + "ModelId": "8755539534673619516", + "Module": "module_47243", + "ModelClass": "_y", + "ModelName": "LootBoxPackageCC" + }, + { + "ModelId": "5004566952388327414", + "Module": "module_47243", + "ModelClass": "vy", + "ModelName": "LootboxAndPaintCC" + }, + { + "ModelId": "7949842549440362353", + "Module": "module_47243", + "ModelClass": "by", + "ModelName": "ShopItemOneTimePurchaseCC" + }, + { + "ModelId": "6841476710481576918", + "Module": "module_47243", + "ModelClass": "by", + "ModelName": "ShopItemOneTimePurchaseCC" + }, + { + "ModelId": "7881181052304665842", + "Module": "module_47243", + "ModelClass": "Iy", + "ModelName": "PaintPackageCC" + }, + { + "ModelId": "5138794050233567698", + "Module": "module_47243", + "ModelClass": "Oy", + "ModelName": "PremiumPackageCC" + }, + { + "ModelId": "693025797100292228", + "Module": "module_47243", + "ModelClass": "Gy", + "ModelName": "ShopItemCC" + }, + { + "ModelId": "8048067679617995470", + "Module": "module_47243", + "ModelClass": "Xy", + "ModelName": "ShopCategoryCC" + }, + { + "ModelId": "4268132139764766386", + "Module": "module_47243", + "ModelClass": "i$", + "ModelName": "ShopItemCategoryCC" + }, + { + "ModelId": "6192892501890483066", + "Module": "module_47243", + "ModelClass": "l$", + "ModelName": "SpecialKitPackageCC" + }, + { + "ModelId": "6899642532024252493", + "Module": "module_47243", + "ModelClass": "k$", + "ModelName": "SingleItemKitViewCC" + }, + { + "ModelId": "1036461397335537760", + "Module": "module_47243", + "ModelClass": "x$", + "ModelName": "StarsPackageCC" + }, + { + "ModelId": "2168011188167752629", + "Module": "module_47243", + "ModelClass": "sx", + "ModelName": "ContextTutorialModelCC" + }, + { + "ModelId": "4782427880403395260", + "Module": "module_47243", + "ModelClass": "fx", + "ModelName": "LobbyTutorialModelCC" + }, + { + "ModelId": "5256681735304582291", + "Module": "module_47243", + "ModelClass": "mx", + "ModelName": "TwitchAccountModelCC" + }, + { + "ModelId": "2252704231082045810", + "Module": "module_47243", + "ModelClass": "$x", + "ModelName": "TwoStepVerificationModelCC" + }, + { + "ModelId": "2080556892932195426", + "Module": "module_47243", + "ModelClass": "Ix", + "ModelName": "UserCountryCC" + }, + { + "ModelId": "1851605205665890036", + "Module": "module_47243", + "ModelClass": "Yx", + "ModelName": "RewardsInfoCC" + }, + { + "ModelId": "6071565290933648049", + "Module": "module_54199", + "ModelClass": "Xt", + "ModelName": "ChatCC" + }, + { + "ModelId": "891137447706578619", + "Module": "module_54199", + "ModelClass": "sn", + "ModelName": "ClanChatCC" + }, + { + "ModelId": "868364325972433765", + "Module": "module_54199", + "ModelClass": "wn", + "ModelName": "NewsShowingCC" + }, + { + "ModelId": "6359692933626160397", + "Module": "module_67222", + "ModelClass": "V", + "ModelName": "SocialNetworkParametersCC" + }, + { + "ModelId": "7762582768388221832", + "Module": "module_85183", + "ModelClass": "Mq", + "ModelName": "FlagBattleSFXCC" + }, + { + "ModelId": "7970528904804811572", + "Module": "module_85183", + "ModelClass": "Fq", + "ModelName": "ArmsRaceCC" + }, + { + "ModelId": "7401419333842694749", + "Module": "module_85183", + "ModelClass": "Qq", + "ModelName": "BattlefieldCC" + }, + { + "ModelId": "2101100305743734614", + "Module": "module_85183", + "ModelClass": "sy", + "ModelName": "BillboardCC" + }, + { + "ModelId": "7267982595724632282", + "Module": "module_85183", + "ModelClass": "ly", + "ModelName": "BillboardImageCC" + }, + { + "ModelId": "5958419804845264849", + "Module": "module_85183", + "ModelClass": "gy", + "ModelName": "BotNavigationCC" + }, + { + "ModelId": "2464705242400585109", + "Module": "module_85183", + "ModelClass": "Cy", + "ModelName": "FacilitySphericalZoneCC" + }, + { + "ModelId": "5242494537362061802", + "Module": "module_85183", + "ModelClass": "Py", + "ModelName": "CommonFacilityCC" + }, + { + "ModelId": "8109298281939714429", + "Module": "module_85183", + "ModelClass": "Fy", + "ModelName": "BattleLockingCC" + }, + { + "ModelId": "9172358609541951983", + "Module": "module_85183", + "ModelClass": "Jy", + "ModelName": "MeteorStormCC" + }, + { + "ModelId": "2057320715890332864", + "Module": "module_85183", + "ModelClass": "u$", + "ModelName": "BattleMineCC" + }, + { + "ModelId": "8980131978880882207", + "Module": "module_85183", + "ModelClass": "c$", + "ModelName": "BattleStartDelayCC" + }, + { + "ModelId": "8237913720896985151", + "Module": "module_85183", + "ModelClass": "z$", + "ModelName": "DominationCC" + }, + { + "ModelId": "5385894712778438726", + "Module": "module_85183", + "ModelClass": "H$", + "ModelName": "BattleChatCC" + }, + { + "ModelId": "6445399806655453890", + "Module": "module_85183", + "ModelClass": "Z$", + "ModelName": "InventoryCC" + }, + { + "ModelId": "3364392936313775902", + "Module": "module_85183", + "ModelClass": "ex", + "ModelName": "TargetHighlightingCC" + }, + { + "ModelId": "7874327015886119466", + "Module": "module_85183", + "ModelClass": "ax", + "ModelName": "JuggernautCC" + }, + { + "ModelId": "5123834867188931684", + "Module": "module_85183", + "ModelClass": "wx", + "ModelName": "KillStreakCC" + }, + { + "ModelId": "3031864034871022835", + "Module": "module_85183", + "ModelClass": "xx", + "ModelName": "PointBasedBattleCC" + }, + { + "ModelId": "6169263949965533624", + "Module": "module_85183", + "ModelClass": "Ax", + "ModelName": "AssaultCC" + }, + { + "ModelId": "2648029304025111838", + "Module": "module_85183", + "ModelClass": "Bx", + "ModelName": "CaptureTheFlagCC" + }, + { + "ModelId": "2618111250571302204", + "Module": "module_85183", + "ModelClass": "aj", + "ModelName": "RugbyCC" + }, + { + "ModelId": "2269636304551395302", + "Module": "module_85183", + "ModelClass": "gj", + "ModelName": "BallExplosionCC" + }, + { + "ModelId": "6141842138930446750", + "Module": "module_85183", + "ModelClass": "jj", + "ModelName": "StatusEffectBattleCC" + }, + { + "ModelId": "7295738902766942560", + "Module": "module_85183", + "ModelClass": "Pj", + "ModelName": "TeamJuggernautCC" + }, + { + "ModelId": "9114375113924783411", + "Module": "module_85183", + "ModelClass": "Bj", + "ModelName": "BattleTutorialCC" + }, + { + "ModelId": "2145315487377727727", + "Module": "module_85183", + "ModelClass": "Yj", + "ModelName": "BattlefieldBonusesCC" + }, + { + "ModelId": "5215232257096838692", + "Module": "module_85183", + "ModelClass": "sS", + "ModelName": "BonusRegionsCC" + }, + { + "ModelId": "3339617300033754420", + "Module": "module_85183", + "ModelClass": "lS", + "ModelName": "GoldBonusCC" + }, + { + "ModelId": "510571369984788727", + "Module": "module_85183", + "ModelClass": "bS", + "ModelName": "BattleGoldBonusCC" + }, + { + "ModelId": "8966480724474352542", + "Module": "module_85183", + "ModelClass": "SS", + "ModelName": "BonusCommonCC" + }, + { + "ModelId": "3305376498517733218", + "Module": "module_85183", + "ModelClass": "OS", + "ModelName": "NotificationBonusCC" + }, + { + "ModelId": "7484749077586587376", + "Module": "module_85183", + "ModelClass": "LS", + "ModelName": "BonusLightCC" + }, + { + "ModelId": "5968651969329902265", + "Module": "module_85183", + "ModelClass": "WS", + "ModelName": "ColorAdjustCC" + }, + { + "ModelId": "1661364280719338177", + "Module": "module_85183", + "ModelClass": "sC", + "ModelName": "DemomanSfxCC" + }, + { + "ModelId": "1475210252818583689", + "Module": "module_85183", + "ModelClass": "_C", + "ModelName": "AutoSupplyRestrictionCC" + }, + { + "ModelId": "8316165996190533130", + "Module": "module_85183", + "ModelClass": "vC", + "ModelName": "DroneIndicatorCC" + }, + { + "ModelId": "4553925959338838726", + "Module": "module_85183", + "ModelClass": "kC", + "ModelName": "CrisisEffectCC" + }, + { + "ModelId": "6424605984954645392", + "Module": "module_85183", + "ModelClass": "IC", + "ModelName": "TankEffectSFXCC" + }, + { + "ModelId": "8166810800706377715", + "Module": "module_85183", + "ModelClass": "OC", + "ModelName": "ActiveAfterDeathCC" + }, + { + "ModelId": "5779075235189237790", + "Module": "module_85183", + "ModelClass": "KC", + "ModelName": "EffectDescriptionCC" + }, + { + "ModelId": "8659306545527654916", + "Module": "module_85183", + "ModelClass": "tE", + "ModelName": "DurationCC" + }, + { + "ModelId": "3157947224668485277", + "Module": "module_85183", + "ModelClass": "sE", + "ModelName": "EffectLevelCC" + }, + { + "ModelId": "2078544146946392301", + "Module": "module_85183", + "ModelClass": "mE", + "ModelName": "GrenadeCC" + }, + { + "ModelId": "9169475278259220023", + "Module": "module_85183", + "ModelClass": "zE", + "ModelName": "GrenadeCommonSFXCC" + }, + { + "ModelId": "8082047509383246662", + "Module": "module_85183", + "ModelClass": "PE", + "ModelName": "BazookaExplosionCC" + }, + { + "ModelId": "6729312304988255776", + "Module": "module_85183", + "ModelClass": "BE", + "ModelName": "FoamBazookaCC" + }, + { + "ModelId": "2046257084008991040", + "Module": "module_85183", + "ModelClass": "YE", + "ModelName": "MagnetBazookaCC" + }, + { + "ModelId": "2360640997000854496", + "Module": "module_85183", + "ModelClass": "uT", + "ModelName": "RepairGrenadeCC" + }, + { + "ModelId": "9121776538033375678", + "Module": "module_85183", + "ModelClass": "hT", + "ModelName": "SmokeBazookaCC" + }, + { + "ModelId": "1219567052273540192", + "Module": "module_85183", + "ModelClass": "dT", + "ModelName": "TeleportBazookaCC" + }, + { + "ModelId": "3385611214280288146", + "Module": "module_85183", + "ModelClass": "qT", + "ModelName": "TeslaBazookaCC" + }, + { + "ModelId": "7336962025965257296", + "Module": "module_85183", + "ModelClass": "CT", + "ModelName": "HeatTrapBazookaCC" + }, + { + "ModelId": "4985274885530276227", + "Module": "module_85183", + "ModelClass": "LT", + "ModelName": "InventoryItemCC" + }, + { + "ModelId": "2173939047300893281", + "Module": "module_85183", + "ModelClass": "WT", + "ModelName": "InventorySfxCC" + }, + { + "ModelId": "4693095212037357021", + "Module": "module_85183", + "ModelClass": "ZT", + "ModelName": "BattleMapCC" + }, + { + "ModelId": "1688856467034284073", + "Module": "module_85183", + "ModelClass": "kI", + "ModelName": "MapBonusLightCC" + }, + { + "ModelId": "4885574251230758729", + "Module": "module_85183", + "ModelClass": "MI", + "ModelName": "ModerationToolInteropCC" + }, + { + "ModelId": "3746009188563785369", + "Module": "module_85183", + "ModelClass": "BI", + "ModelName": "ClassicParachuteCC" + }, + { + "ModelId": "7894174029759745197", + "Module": "module_85183", + "ModelClass": "VI", + "ModelName": "DroneParachuteCC" + }, + { + "ModelId": "4778752313022424015", + "Module": "module_85183", + "ModelClass": "QI", + "ModelName": "RadarCC" + }, + { + "ModelId": "8889030940127130747", + "Module": "module_85183", + "ModelClass": "qA", + "ModelName": "StatusEffectCC" + }, + { + "ModelId": "5215458949573069793", + "Module": "module_85183", + "ModelClass": "DA", + "ModelName": "SuppliesTutorialModelCC" + }, + { + "ModelId": "3719295044981767592", + "Module": "module_85183", + "ModelClass": "JA", + "ModelName": "HoverChassisCC" + }, + { + "ModelId": "3535248640055401164", + "Module": "module_85183", + "ModelClass": "eR", + "ModelName": "TrackedChassisCC" + }, + { + "ModelId": "9175894397021160571", + "Module": "module_85183", + "ModelClass": "cR", + "ModelName": "HullCommonCC" + }, + { + "ModelId": "8517963146836182364", + "Module": "module_85183", + "ModelClass": "dR", + "ModelName": "TankExplosionCC" + }, + { + "ModelId": "6638615717159906637", + "Module": "module_85183", + "ModelClass": "qR", + "ModelName": "TankRankUpEffectCC" + }, + { + "ModelId": "7912514999422640843", + "Module": "module_85183", + "ModelClass": "CR", + "ModelName": "SimpleArmorCC" + }, + { + "ModelId": "3966050316678844327", + "Module": "module_85183", + "ModelClass": "PR", + "ModelName": "EngineCC" + }, + { + "ModelId": "4875657231924274329", + "Module": "module_85183", + "ModelClass": "BR", + "ModelName": "BattleGearScoreCC" + }, + { + "ModelId": "7968893209278436962", + "Module": "module_85183", + "ModelClass": "VR", + "ModelName": "ColorTransformCC" + }, + { + "ModelId": "1090112775751802907", + "Module": "module_85183", + "ModelClass": "nP", + "ModelName": "FlameThrowingSFXCC" + }, + { + "ModelId": "844040023906032853", + "Module": "module_85183", + "ModelClass": "oP", + "ModelName": "FreezeSFXCC" + }, + { + "ModelId": "5745114335268581493", + "Module": "module_85183", + "ModelClass": "fP", + "ModelName": "IsisSFXCC" + }, + { + "ModelId": "3240562023750085679", + "Module": "module_85183", + "ModelClass": "TP", + "ModelName": "ClassicRailgunShootSFXCC" + }, + { + "ModelId": "2368553937090306741", + "Module": "module_85183", + "ModelClass": "MP", + "ModelName": "RailgunShootSFXCC" + }, + { + "ModelId": "5257069799854314780", + "Module": "module_85183", + "ModelClass": "FP", + "ModelName": "RicochetSFXCC" + }, + { + "ModelId": "9094843804380507187", + "Module": "module_85183", + "ModelClass": "YP", + "ModelName": "ShaftShootSFXCC" + }, + { + "ModelId": "1748249573394295263", + "Module": "module_85183", + "ModelClass": "nN", + "ModelName": "SmokyShootSFXCC" + }, + { + "ModelId": "6623392760536649465", + "Module": "module_85183", + "ModelClass": "oN", + "ModelName": "TeslaShootSFXCC" + }, + { + "ModelId": "8191021443726008799", + "Module": "module_85183", + "ModelClass": "fN", + "ModelName": "ThunderShootSFXCC" + }, + { + "ModelId": "7692437363459179503", + "Module": "module_85183", + "ModelClass": "mN", + "ModelName": "TwinsShootSFXCC" + }, + { + "ModelId": "6641568549549264883", + "Module": "module_85183", + "ModelClass": "$N", + "ModelName": "HullSmokeCC" + }, + { + "ModelId": "2638139599268780529", + "Module": "module_85183", + "ModelClass": "TN", + "ModelName": "AimAssistCC" + }, + { + "ModelId": "7883218652624289568", + "Module": "module_85183", + "ModelClass": "MN", + "ModelName": "VerticalAnglesCC" + }, + { + "ModelId": "1237976996871886061", + "Module": "module_85183", + "ModelClass": "HN", + "ModelName": "WeaponCommonCC" + }, + { + "ModelId": "4444006910106229297", + "Module": "module_85183", + "ModelClass": "JN", + "ModelName": "FlameThrowerCC" + }, + { + "ModelId": "9105939015977236209", + "Module": "module_85183", + "ModelClass": "eM", + "ModelName": "FreezeCC" + }, + { + "ModelId": "1782954502314814229", + "Module": "module_85183", + "ModelClass": "cM", + "ModelName": "GaussCC" + }, + { + "ModelId": "3075844226211230705", + "Module": "module_85183", + "ModelClass": "gM", + "ModelName": "GaussSFXCC" + }, + { + "ModelId": "7068168268219022867", + "Module": "module_85183", + "ModelClass": "yM", + "ModelName": "IsisCC" + }, + { + "ModelId": "7266201540452328992", + "Module": "module_85183", + "ModelClass": "AM", + "ModelName": "LaserPointerCC" + }, + { + "ModelId": "1663344340563853103", + "Module": "module_85183", + "ModelClass": "UM", + "ModelName": "RailgunCC" + }, + { + "ModelId": "2544465990449691855", + "Module": "module_85183", + "ModelClass": "YM", + "ModelName": "RicochetCC" + }, + { + "ModelId": "8345039896357067195", + "Module": "module_85183", + "ModelClass": "iO", + "ModelName": "ScorpioCC" + }, + { + "ModelId": "313670832122918648", + "Module": "module_85183", + "ModelClass": "cO", + "ModelName": "ScorpioSfxCC" + }, + { + "ModelId": "732152133982227177", + "Module": "module_85183", + "ModelClass": "dO", + "ModelName": "ShaftCC" + }, + { + "ModelId": "7700337090161867199", + "Module": "module_85183", + "ModelClass": "TO", + "ModelName": "ShotCC" + }, + { + "ModelId": "2172139419072369403", + "Module": "module_85183", + "ModelClass": "AO", + "ModelName": "SmokyCC" + }, + { + "ModelId": "2235965200289058033", + "Module": "module_85183", + "ModelClass": "LO", + "ModelName": "SplashCC" + }, + { + "ModelId": "2057487026153364495", + "Module": "module_85183", + "ModelClass": "KO", + "ModelName": "StreamWeaponCC" + }, + { + "ModelId": "6855550629220038001", + "Module": "module_85183", + "ModelClass": "tD", + "ModelName": "TerminatorCC" + }, + { + "ModelId": "6210980129845088505", + "Module": "module_85183", + "ModelClass": "oD", + "ModelName": "TerminatorSFXCC" + }, + { + "ModelId": "573691036321759779", + "Module": "module_85183", + "ModelClass": "fD", + "ModelName": "TeslaCC" + }, + { + "ModelId": "5194655544597440038", + "Module": "module_85183", + "ModelClass": "SD", + "ModelName": "GlobeLightningCC" + }, + { + "ModelId": "1092307613749405757", + "Module": "module_85183", + "ModelClass": "RD", + "ModelName": "ThunderCC" + }, + { + "ModelId": "1130027771466355435", + "Module": "module_85183", + "ModelClass": "BD", + "ModelName": "CassetteShootingCC" + }, + { + "ModelId": "8212033390179430143", + "Module": "module_85183", + "ModelClass": "VD", + "ModelName": "TsunamiCC" + }, + { + "ModelId": "5604117679922858821", + "Module": "module_85183", + "ModelClass": "tL", + "ModelName": "TsunamiShootSFXCC" + }, + { + "ModelId": "2803166101624878775", + "Module": "module_85183", + "ModelClass": "sL", + "ModelName": "RotatingTurretCC" + }, + { + "ModelId": "8384919755051909877", + "Module": "module_85183", + "ModelClass": "fL", + "ModelName": "TwinsCC" + }, + { + "ModelId": "6384655869260380731", + "Module": "module_85183", + "ModelClass": "kL", + "ModelName": "WeaponWeakeningCC" + }, + { + "ModelId": "6642061974307112160", + "Module": "module_85183", + "ModelClass": "xL", + "ModelName": "ArtilleryCC" + }, + { + "ModelId": "8754295211549969729", + "Module": "module_85183", + "ModelClass": "RL", + "ModelName": "ArtilleryElevatingBarrelCC" + }, + { + "ModelId": "4499337062875496540", + "Module": "module_85183", + "ModelClass": "HL", + "ModelName": "ArtillerySfxCC" + }, + { + "ModelId": "7235761383767133268", + "Module": "module_85183", + "ModelClass": "JL", + "ModelName": "BonkWeaponCC" + }, + { + "ModelId": "7022952987062772048", + "Module": "module_85183", + "ModelClass": "SB", + "ModelName": "MachineGunCC" + }, + { + "ModelId": "8784137528831277530", + "Module": "module_85183", + "ModelClass": "EB", + "ModelName": "MachineGunSFXCC" + }, + { + "ModelId": "4045733714401632272", + "Module": "module_85183", + "ModelClass": "NB", + "ModelName": "RocketLauncherCC" + }, + { + "ModelId": "6596471917520283782", + "Module": "module_85183", + "ModelClass": "GB", + "ModelName": "RocketLauncherSfxCC" + }, + { + "ModelId": "6528115483341986769", + "Module": "module_85183", + "ModelClass": "tU", + "ModelName": "ShotGunAimingCC" + }, + { + "ModelId": "770654516236272028", + "Module": "module_85183", + "ModelClass": "iU", + "ModelName": "ShotgunSFXCC" + }, + { + "ModelId": "5867914731324680416", + "Module": "module_85183", + "ModelClass": "_U", + "ModelName": "ShotgunShotCC" + }, + { + "ModelId": "171896995500198357", + "Module": "module_85183", + "ModelClass": "vU", + "ModelName": "TeamLightCC" + }, + { + "ModelId": "6455142242556985012", + "Module": "module_85183", + "ModelClass": "yU", + "ModelName": "UltimateCC" + }, + { + "ModelId": "2660691061343351669", + "Module": "module_85183", + "ModelClass": "TU", + "ModelName": "DeferredOverdriveCC" + }, + { + "ModelId": "1500120709087433677", + "Module": "module_85183", + "ModelClass": "MU", + "ModelName": "AresUltimateCC" + }, + { + "ModelId": "7899544742191273818", + "Module": "module_85183", + "ModelClass": "GU", + "ModelName": "AresUltimateProjectileCC" + }, + { + "ModelId": "6210079079280471693", + "Module": "module_85183", + "ModelClass": "XU", + "ModelName": "CrusaderEffectCC" + }, + { + "ModelId": "3907559303616283277", + "Module": "module_85183", + "ModelClass": "iF", + "ModelName": "CrusaderUltimateCC" + }, + { + "ModelId": "6590506277285284269", + "Module": "module_85183", + "ModelClass": "hF", + "ModelName": "DictatorUltimateCC" + }, + { + "ModelId": "6668012086939621459", + "Module": "module_85183", + "ModelClass": "pF", + "ModelName": "HopperUltimateCC" + }, + { + "ModelId": "7214131179703676563", + "Module": "module_85183", + "ModelClass": "zF", + "ModelName": "HornetUltimateCC" + }, + { + "ModelId": "920233600808088339", + "Module": "module_85183", + "ModelClass": "jF", + "ModelName": "BattleUltimateRadarCC" + }, + { + "ModelId": "4406836274649365203", + "Module": "module_85183", + "ModelClass": "AF", + "ModelName": "HunterUltimateCC" + }, + { + "ModelId": "7257138969919985658", + "Module": "module_85183", + "ModelClass": "DF", + "ModelName": "TankStunCC" + }, + { + "ModelId": "887431150717814637", + "Module": "module_85183", + "ModelClass": "HF", + "ModelName": "JuggernautUltimateCC" + }, + { + "ModelId": "1997576349992148053", + "Module": "module_85183", + "ModelClass": "JF", + "ModelName": "MammothUltimateCC" + }, + { + "ModelId": "4658911146867546991", + "Module": "module_85183", + "ModelClass": "rG", + "ModelName": "PaladinAuraVisualCC" + }, + { + "ModelId": "973781565169577734", + "Module": "module_85183", + "ModelClass": "hG", + "ModelName": "TankSuperchargeCC" + }, + { + "ModelId": "8738779591519195597", + "Module": "module_85183", + "ModelClass": "pG", + "ModelName": "TitanUltimateGeneratorCC" + }, + { + "ModelId": "7551602984488625261", + "Module": "module_85183", + "ModelClass": "zG", + "ModelName": "VikingUltimateCC" + }, + { + "ModelId": "3137250957878113145", + "Module": "module_85183", + "ModelClass": "jG", + "ModelName": "WaspUltimateBombCC" + }, + { + "ModelId": "4388979890807820236", + "Module": "module_85183", + "ModelClass": "AG", + "ModelName": "NuclearRechargeCC" + }, + { + "ModelId": "5055746953759097716", + "Module": "module_85183", + "ModelClass": "HG", + "ModelName": "BossStateCC" + }, + { + "ModelId": "3317051239895575278", + "Module": "module_85183", + "ModelClass": "JG", + "ModelName": "TankConfigurationCC" + }, + { + "ModelId": "1838248562944554574", + "Module": "module_85183", + "ModelClass": "rH", + "ModelName": "TankCritCC" + }, + { + "ModelId": "3248199557469599724", + "Module": "module_85183", + "ModelClass": "hH", + "ModelName": "DamageIndicatorCC" + }, + { + "ModelId": "1767155986856291742", + "Module": "module_85183", + "ModelClass": "gH", + "ModelName": "TankPointersCC" + }, + { + "ModelId": "5543162332469864498", + "Module": "module_85183", + "ModelClass": "SH", + "ModelName": "TankInfoCC" + }, + { + "ModelId": "260111248825415414", + "Module": "module_85183", + "ModelClass": "OH", + "ModelName": "BattleBotControlCC" + }, + { + "ModelId": "2560105521800470759", + "Module": "module_85183", + "ModelClass": "VH", + "ModelName": "RemoteTankStateUpdatingCC" + }, + { + "ModelId": "7127632667958387441", + "Module": "module_85183", + "ModelClass": "iW", + "ModelName": "TankResistancesCC" + }, + { + "ModelId": "2104999573658810427", + "Module": "module_85183", + "ModelClass": "_W", + "ModelName": "TankSpawnerCC" + }, + { + "ModelId": "7163171834328288344", + "Module": "module_85183", + "ModelClass": "pW", + "ModelName": "SpeedCharacteristicsCC" + }, + { + "ModelId": "2271787261806799336", + "Module": "module_85183", + "ModelClass": "zW", + "ModelName": "SuicideCC" + }, + { + "ModelId": "2150802556932617880", + "Module": "module_85183", + "ModelClass": "jW", + "ModelName": "TankCC" + }, + { + "ModelId": "4206032257972775630", + "Module": "module_85183", + "ModelClass": "JW", + "ModelName": "TurnOverCC" + }, + { + "ModelId": "6589716392600418185", + "Module": "module_85196", + "ModelClass": "O_", + "ModelName": "AvailableForAllCC" + }, + { + "ModelId": "9168562037264832365", + "Module": "module_85196", + "ModelClass": "K_", + "ModelName": "PassToShopCC" + }, + { + "ModelId": "3122964582367261689", + "Module": "module_85196", + "ModelClass": "oh", + "ModelName": "TemperatureCC" + }, + { + "ModelId": "1259328549938381181", + "Module": "module_85196", + "ModelClass": "fh", + "ModelName": "UpgradeGarageItemCC" + }, + { + "ModelId": "3730185794267514852", + "Module": "module_85196", + "ModelClass": "qh", + "ModelName": "GaragePreviewModelCC" + }, + { + "ModelId": "2769268442698022653", + "Module": "module_85196", + "ModelClass": "Ih", + "ModelName": "BuyableCC" + }, + { + "ModelId": "2114179554921095892", + "Module": "module_85196", + "ModelClass": "Oh", + "ModelName": "ItemCategoryCC" + }, + { + "ModelId": "120961863156462946", + "Module": "module_85196", + "ModelClass": "ia", + "ModelName": "CountableItemCC" + }, + { + "ModelId": "7109632754421804521", + "Module": "module_85196", + "ModelClass": "_a", + "ModelName": "DelayMountCategoryCC" + }, + { + "ModelId": "5952355564848177159", + "Module": "module_85196", + "ModelClass": "va", + "ModelName": "DescriptionMediaCC" + }, + { + "ModelId": "7391892068905080676", + "Module": "module_85196", + "ModelClass": "ka", + "ModelName": "ItemDevicesCC" + }, + { + "ModelId": "7640081207058999117", + "Module": "module_85196", + "ModelClass": "ja", + "ModelName": "DevicePropertiesCC" + }, + { + "ModelId": "2951667042968033849", + "Module": "module_85196", + "ModelClass": "Oa", + "ModelName": "DiscountCC" + }, + { + "ModelId": "4692610703461978415", + "Module": "module_85196", + "ModelClass": "Wa", + "ModelName": "ProAbonementRankDiscountCC" + }, + { + "ModelId": "1534251830977989099", + "Module": "module_85196", + "ModelClass": "Za", + "ModelName": "EmissionColorCC" + }, + { + "ModelId": "6111098822553419499", + "Module": "module_85196", + "ModelClass": "hc", + "ModelName": "BazookaSupplyCC" + }, + { + "ModelId": "1865478986390468300", + "Module": "module_85196", + "ModelClass": "pc", + "ModelName": "GroupedCC" + }, + { + "ModelId": "3438505192580052999", + "Module": "module_85196", + "ModelClass": "yc", + "ModelName": "ItemModelCC" + }, + { + "ModelId": "7472019549033825785", + "Module": "module_85196", + "ModelClass": "jc", + "ModelName": "Item3DCC" + }, + { + "ModelId": "213661725715747381", + "Module": "module_85196", + "ModelClass": "Ac", + "ModelName": "ItemEnabledForPartnerCC" + }, + { + "ModelId": "5219530271535770658", + "Module": "module_85196", + "ModelClass": "Dc", + "ModelName": "GarageKitCC" + }, + { + "ModelId": "4309274349580876968", + "Module": "module_85196", + "ModelClass": "Hc", + "ModelName": "ItemSaleByKitCC" + }, + { + "ModelId": "2494628067134376039", + "Module": "module_85196", + "ModelClass": "el", + "ModelName": "ModificationCC" + }, + { + "ModelId": "6430862429652735997", + "Module": "module_85196", + "ModelClass": "al", + "ModelName": "Object3DSCC" + }, + { + "ModelId": "1139677084511624062", + "Module": "module_85196", + "ModelClass": "wl", + "ModelName": "PremiumItemCC" + }, + { + "ModelId": "4245000165576407500", + "Module": "module_85196", + "ModelClass": "yl", + "ModelName": "ItemPropertiesCC" + }, + { + "ModelId": "658797348514407988", + "Module": "module_85196", + "ModelClass": "iv", + "ModelName": "ItemRarityCC" + }, + { + "ModelId": "8153652471440648359", + "Module": "module_85196", + "ModelClass": "dv", + "ModelName": "RelativePropertiesCC" + }, + { + "ModelId": "5724298620794499870", + "Module": "module_85196", + "ModelClass": "Sv", + "ModelName": "MountedResistancesCC" + }, + { + "ModelId": "6628468327090974523", + "Module": "module_85196", + "ModelClass": "Pv", + "ModelName": "ResistanceBackgroundCC" + }, + { + "ModelId": "712090483864327130", + "Module": "module_85196", + "ModelClass": "Kv", + "ModelName": "HullSkinModelCC" + }, + { + "ModelId": "481504601146841174", + "Module": "module_85196", + "ModelClass": "tp", + "ModelName": "TankPartSkinModelCC" + }, + { + "ModelId": "4234781414353452329", + "Module": "module_85196", + "ModelClass": "sp", + "ModelName": "TurretSkinModelCC" + }, + { + "ModelId": "3893855999545616334", + "Module": "module_85196", + "ModelClass": "hp", + "ModelName": "TemporaryItemCC" + }, + { + "ModelId": "4743567393313674375", + "Module": "module_85196", + "ModelClass": "pp", + "ModelName": "UpgradeParamsCC" + }, + { + "ModelId": "6117306895090150422", + "Module": "module_85196", + "ModelClass": "Cp", + "ModelName": "ItemViewCategoryCC" + }, + { + "ModelId": "5738770490413536673", + "Module": "module_85196", + "ModelClass": "Pp", + "ModelName": "VisibleCC" + }, + { + "ModelId": "4817031001612283794", + "Module": "module_85196", + "ModelClass": "Yp", + "ModelName": "ProtectionSlotsCC" + }, + { + "ModelId": "701801920209410257", + "Module": "module_85196", + "ModelClass": "iw", + "ModelName": "UserItemFavoriteCC" + }, + { + "ModelId": "2433120830275396692", + "Module": "module_85196", + "ModelClass": "pw", + "ModelName": "PresentsCC" + }, + { + "ModelId": "4038465370530850950", + "Module": "module_85196", + "ModelClass": "$w", + "ModelName": "HullEngineTypeCC" + }, + { + "ModelId": "7563487786199453443", + "Module": "module_85196", + "ModelClass": "Tw", + "ModelName": "OverdriveDescriptionCC" + }, + { + "ModelId": "5988756521593027564", + "Module": "module_85196", + "ModelClass": "Mw", + "ModelName": "RelatedResistanceModuleCC" + }, + { + "ModelId": "149643551432886459", + "Module": "module_85196", + "ModelClass": "Vw", + "ModelName": "TurretMechanismCC" + }, + { + "ModelId": "5207857306014573244", + "Module": "module_85196", + "ModelClass": "Qw", + "ModelName": "AvailableSkinsCC" + }, + { + "ModelId": "905970599512839002", + "Module": "module_85196", + "ModelClass": "pd", + "ModelName": "MountedSkinCC" + }, + { + "ModelId": "834829861153964627", + "Module": "module_85196", + "ModelClass": "pd", + "ModelName": "MountedSkinCC" + }, + { + "ModelId": "1164458258646872337", + "Module": "module_85196", + "ModelClass": "dd", + "ModelName": "AvailableShotSkinsCC" + }, + { + "ModelId": "6680653332718076818", + "Module": "module_85196", + "ModelClass": "qd", + "ModelName": "SkinPreviewCC" + }, + { + "ModelId": "2108103923322474513", + "Module": "module_85667", + "ModelClass": "Cu", + "ModelName": "CaptchaCC" + }, + { + "ModelId": "7175193612424807833", + "Module": "module_85667", + "ModelClass": "rs", + "ModelName": "ServerHaltCC" + }, + { + "ModelId": "4068618447512888231", + "Module": "module_85667", + "ModelClass": "hs", + "ModelName": "ColoringCC" + }, + { + "ModelId": "5255782026414758079", + "Module": "module_85667", + "ModelClass": "Cs", + "ModelName": "LobbyLayoutModelCC" + }, + { + "ModelId": "7272122855372520854", + "Module": "module_88693", + "ModelClass": "mt", + "ModelName": "FriendsCC" + }, + { + "ModelId": "7286757952195114814", + "Module": "module_88693", + "ModelClass": "Pt", + "ModelName": "UserContainerCC" + }, + { + "ModelId": "433350986715773690", + "Module": "module_88693", + "ModelClass": "Pt", + "ModelName": "UserContainerCC" + }, + { + "ModelId": "6666386288157781248", + "Module": "module_88693", + "ModelClass": "Pt", + "ModelName": "UserContainerCC" + }, + { + "ModelId": "6165842138816273510", + "Module": "module_88693", + "ModelClass": "Pt", + "ModelName": "UserContainerCC" + }, + { + "ModelId": "4806152428066355053", + "Module": "module_88693", + "ModelClass": "Wt", + "ModelName": "ContainersInfoCC" + }, + { + "ModelId": "2396069765491056127", + "Module": "module_88693", + "ModelClass": "_n", + "ModelName": "UserReportsModelCC" + }, + { + "ModelId": "5111180848188020047", + "Module": "module_88693", + "ModelClass": "cn", + "ModelName": "NotificationEnabledCC" + }, + { + "ModelId": "2913056477936031270", + "Module": "module_89803", + "ModelClass": "Tn", + "ModelName": "BattleInfoCC" + }, + { + "ModelId": "994751080759166914", + "Module": "module_89803", + "ModelClass": "Mn", + "ModelName": "BattleDMInfoCC" + }, + { + "ModelId": "6282101613166902704", + "Module": "module_89803", + "ModelClass": "Zn", + "ModelName": "BattleParamInfoCC" + }, + { + "ModelId": "6652129902375288094", + "Module": "module_89803", + "ModelClass": "ei", + "ModelName": "TeamBattleInfoCC" + }, + { + "ModelId": "5413550891500581680", + "Module": "module_89803", + "ModelClass": "gi", + "ModelName": "ClassicBattleSelectModelCC" + }, + { + "ModelId": "8618289906968528240", + "Module": "module_89803", + "ModelClass": "zi", + "ModelName": "BattleCreateCC" + }, + { + "ModelId": "7185560430911351668", + "Module": "module_89803", + "ModelClass": "Ei", + "ModelName": "FormatBattleOptionsCC" + }, + { + "ModelId": "5412538083071671358", + "Module": "module_89803", + "ModelClass": "Ni", + "ModelName": "MapInfoCC" + }, + { + "ModelId": "104562115846147942", + "Module": "module_89803", + "ModelClass": "Hi", + "ModelName": "MatchmakingGroupCC" + }, + { + "ModelId": "5932347630672640435", + "Module": "module_89803", + "ModelClass": "br", + "ModelName": "MatchmakingLayoutCC" + }, + { + "ModelId": "3935107155251354407", + "Module": "module_99527", + "ModelClass": "Z", + "ModelName": "DescriptionModelCC" + }, + { + "ModelId": "8032192927455575509", + "Module": "module_99527", + "ModelClass": "et", + "ModelName": "TimePeriodModelCC" + } + ] +} \ No newline at end of file diff --git a/3DTank/tools/gen_model_registry.js b/3DTank/tools/gen_model_registry.js new file mode 100644 index 0000000..f0b97af --- /dev/null +++ b/3DTank/tools/gen_model_registry.js @@ -0,0 +1,135 @@ +// gen_model_registry.js —— 静态解析「modelId → 模块 / 模型类 / 语义名」 +// +// 问题:names/model_binding.json 只有 363 条,且抓包 Pt 容器里的 modelId 大多不在里面 +// (那批只覆盖了「运行时 dump 到的 codec」)。但客户端在每个模块的构造函数里都会调用 +// `ModelReg.n7o(modelId, codec)` 注册模型,注册点本身就带模块与模型类,可以静态挖出来。 +// +// 形态(module_10283 例): +// (this.vgw_1 = new R(-1339607649, 1825012020)), +// Rt(this).n7o(this.vgw_1, At(this).r7g(new p(b(Mt), !1))) +// → modelId = (hi << 32) | (lo & 0xffffffff),lo 在前、hi 在后(按无符号 lo 处理) +// → 模块 = 文件,模型类 = `b()` 里的 Class +// → 语义名 = codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName +// +// 输出:names/model_registry.json +// { Note, Count, WithName, Rows: [{ ModelId, Module, ModelClass, ModelName }] } +// +// 用法:cd 3DTank/tools && node gen_model_registry.js +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +const P = path.resolve(__dirname, '..'); +const SrcDir = path.join(P, 'src'); +const Names = path.join(P, 'names'); + +const Codecs = JSON.parse(fs.readFileSync(path.join(Names, 'codec_fields.json'), 'utf8')).Codecs; + +// module -> (ModelClassLocal -> ModelName[]) +const NameByModuleClass = new Map(); +for (const C of Object.values(Codecs)) { + if (!C.ModelClassLocal) continue; + const Key = C.Module + '::' + C.ModelClassLocal; + if (!NameByModuleClass.has(Key)) NameByModuleClass.set(Key, new Set()); + if (C.ModelName) NameByModuleClass.get(Key).add(C.ModelName); +} + +function ReadParen(S, Start) { + let D = 0, I = Start; + for (; I < S.length; I++) { + if (S[I] === '(') D++; + else if (S[I] === ')') { D--; if (!D) { I++; break; } } + } + return S.slice(Start, I); +} + +function ModelIdOf(Hi, Lo) { + const H = BigInt(Hi); + const L = BigInt.asUintN(32, BigInt(Lo)); + return BigInt.asIntN(64, (H << 32n) | L).toString(); +} + +const Rows = []; +const Files = fs.readdirSync(SrcDir).filter((F) => /^module_\d+\.js$/.test(F)).sort(); +for (const F of Files) { + const Module = F.replace(/\.js$/, ''); + const S = fs.readFileSync(path.join(SrcDir, F), 'utf8'); + const Re = /n7o\(\s*this\.(\w+)\s*,/g; + let M; + while ((M = Re.exec(S))) { + const Slot = M[1]; + const Asg = new RegExp('this\\.' + Slot + '\\s*=\\s*new\\s+[\\w$]+').exec(S); + if (!Asg) continue; + const CallStart = S.indexOf('(', Asg.index + Asg[0].length); + const Call = ReadParen(S, CallStart); + const Args = Call.slice(1, -1).split(',').map((X) => X.trim()); + if (Args.length !== 2 || !/^-?\d+$/.test(Args[0]) || !/^-?\d+$/.test(Args[1])) continue; + const ModelId = ModelIdOf(Number(Args[1]), Number(Args[0])); + + // 注册表达式尾部:取到本行结束,抓 `()` 作为模型类 + const LineEnd = S.indexOf('\n', M.index); + const Tail = S.slice(M.index, LineEnd < 0 ? S.length : LineEnd); + const ClassMatch = /\(\s*([\w$]+)\s*\)\s*,\s*!?[01]/.exec(Tail); + const ModelClass = ClassMatch ? ClassMatch[1] : null; + const NamesSet = ModelClass ? NameByModuleClass.get(Module + '::' + ModelClass) : null; + let ModelName = null; + if (NamesSet && NamesSet.size) { + const Arr = [...NamesSet]; + ModelName = Arr.find((N) => N !== ModelClass) || Arr[0]; + } + + Rows.push({ ModelId, Module, ModelClass, ModelName }); + } +} + +const Seen = new Set(); +const Unique = []; +for (const R of Rows) { + if (Seen.has(R.ModelId)) continue; + Seen.add(R.ModelId); + Unique.push(R); +} + +fs.writeFileSync( + path.join(Names, 'model_registry.json'), + JSON.stringify( + { + Note: + '静态解析的 modelId → 模块 / 模型类 / 语义名。来源:各模块构造函数里的 `ModelReg.n7o(modelId, codec)` ' + + '注册点 + `this. = new X(lo, hi)` 的 64 位常量;语义名同模块的 ModelClassLocal 反查 codec_fields.json。', + Source: ['src/*.js', 'codec_fields.json'], + Count: Unique.length, + WithName: Unique.filter((R) => R.ModelName).length, + Rows: Unique, + }, + null, + 1, + ), + 'utf8', +); + +// ---------------------------------------------------------------- Kotlin 表(诊断 + 适配器用) +const KotlinPath = path.resolve(P, '..', 'TankiOffline', 'app', 'src', 'jsMain', 'kotlin', 'App', 'State', 'ModelRegistry.kt'); +const Lines = []; +Lines.push('// ModelRegistry.kt —— modelId → 协议模型名(生成物,不要手改)'); +Lines.push('//'); +Lines.push('// 由 3DTank/tools/gen_model_registry.js 静态解析各模块的 ModelReg 注册点得到:'); +Lines.push('// this. = new X(lo, hi) + n7o(this., ... new W(b(ModelClass), ...))'); +Lines.push('// 语义名来自 codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName。'); +Lines.push('package App.State'); +Lines.push(''); +Lines.push('/** modelId → 协议模型名(未解析出语义名的条目不在表里)。 */'); +Lines.push('val ModelNamesByModelId: Map = mapOf('); +for (const R of Unique) { + if (!R.ModelName) continue; + Lines.push(' ' + R.ModelId + 'L to ' + JSON.stringify(R.ModelName) + ','); +} +Lines.push(')'); +Lines.push(''); +fs.writeFileSync(KotlinPath, Lines.join('\n'), 'utf8'); +console.log('Kotlin: ' + KotlinPath); + +console.log( + `modelId ${Unique.length} 个(注册点 ${Rows.length} 个),其中 ${Unique.filter((R) => R.ModelName).length} 个解析出语义名。`, +); diff --git a/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionCheck.kt b/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionCheck.kt index 1ecda9d..5dd3e75 100644 --- a/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionCheck.kt +++ b/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionCheck.kt @@ -101,6 +101,10 @@ object SessionCheck { println("文件 $Frames|记录 $Records|回编码一致 $Ok|不一致 $Bad|记录头截断 $HeaderErrors|其它错误 $Errors|别名表=${Session.AliasCount}") println("路由:已派发 ${Router.Applied}|未覆盖 ${Router.Unmapped}|失败 ${Router.Failed}|用户=${Router.Store.State.User.Uid}|屏幕=${Router.Store.State.Screen.Current}") + val TopModels = Router.UnmappedModels.entries.sortedByDescending { it.value }.take(8) + if (TopModels.isNotEmpty()) { + println("未覆盖协议模型:" + TopModels.joinToString(",") { "${it.key}×${it.value}" }) + } val TopUnmapped = Router.UnmappedIds.entries.sortedByDescending { it.value }.take(6) if (TopUnmapped.isNotEmpty()) { println("未覆盖 id:" + TopUnmapped.joinToString(",") { "${it.key}×${it.value}" }) diff --git a/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionRouter.kt b/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionRouter.kt index f288836..4a94193 100644 --- a/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionRouter.kt +++ b/TankiOffline/app/src/jsMain/kotlin/App/Session/SessionRouter.kt @@ -6,6 +6,7 @@ package App.Session import App.State.DownlinkActions import App.State.DownlinkModelActions +import App.State.ModelNamesByModelId import App.State.ReduceRoot import App.State.RootState import Net.Protocol.DecodedRecord @@ -26,6 +27,9 @@ class SessionRouter(InitialState: RootState = RootState()) { /** 未覆盖的 id(methodId 或 Pt item modelId)计数,自检时打印头部。 */ val UnmappedIds: MutableMap = LinkedHashMap() + /** 未覆盖的协议模型名计数(model_registry 能解析出名字的部分)。 */ + val UnmappedModels: MutableMap = LinkedHashMap() + /** 已应用动作的类名(调试 / 自检用)。 */ val AppliedNames: MutableList = ArrayList() @@ -40,6 +44,9 @@ class SessionRouter(InitialState: RootState = RootState()) { if (MakeModel == null) { Unmapped++ UnmappedIds[Item.Id] = (UnmappedIds[Item.Id] ?: 0) + 1 + ModelNamesByModelId[Item.Id]?.let { Name -> + UnmappedModels[Name] = (UnmappedModels[Name] ?: 0) + 1 + } continue } try { diff --git a/TankiOffline/app/src/jsMain/kotlin/App/State/ModelRegistry.kt b/TankiOffline/app/src/jsMain/kotlin/App/State/ModelRegistry.kt new file mode 100644 index 0000000..db8d273 --- /dev/null +++ b/TankiOffline/app/src/jsMain/kotlin/App/State/ModelRegistry.kt @@ -0,0 +1,371 @@ +// ModelRegistry.kt —— modelId → 协议模型名(生成物,不要手改) +// +// 由 3DTank/tools/gen_model_registry.js 静态解析各模块的 ModelReg 注册点得到: +// this. = new X(lo, hi) + n7o(this., ... new W(b(ModelClass), ...)) +// 语义名来自 codec_fields.json 里同模块、ModelClassLocal 相同的 codec 的 ModelName。 +package App.State + +/** modelId → 协议模型名(未解析出语义名的条目不在表里)。 */ +val ModelNamesByModelId: Map = mapOf( + 3000206000964343740L to "FacebookPaymentCC", + 7245225301789542308L to "SonyProductToItemIdMapCC", + 7838366943662257567L to "AntiAddictionRealNameValidatorModelCC", + 6791702738669939115L to "LoaderBackgroundModelCC", + 4065909569861626318L to "ServerHaltEntranceCC", + 466296741210741928L to "ExternalEntranceCC", + 9117714962311439886L to "InviteEntranceCC", + 5457907984000701384L to "NotificationsByCountryModelCC", + 513176302374590130L to "CompositePartnerCC", + 2474458842977623992L to "RegistrationModelCC", + 7300500077035374704L to "EntranceResourcesCC", + 6403067749608679876L to "UserNotifierCC", + 1850509145998626828L to "UserActionsLoggerCC", + 1298753286651761171L to "PremiumNotifierCC", + 258682513334072065L to "RankNotifierData", + 4255726087158005051L to "UidNotifierData", + 3527205014716342329L to "RankLoaderCC", + 6627517808336136295L to "UidCheckCC", + 216902005816818019L to "SpectatorsModelCC", + 2085529474881905981L to "StatisticsModelCC", + 2472262160204144219L to "StatisticsDMCC", + 787936358514072261L to "StatisticsTeamCC", + 871785774630866042L to "ContainerCC", + 6768558945605412944L to "ContainerCC", + 8115862559097350286L to "ClanFriendsCC", + 7076997842038370798L to "ClanMembersCC", + 3413041240691998182L to "ClanIncomingCC", + 6220257539261493170L to "ContainerCC", + 8762499949521628954L to "ClanInfoCC", + 6048708024205731750L to "ClanOutgoingCC", + 6882547137659234022L to "ClanPermissionsCC", + 8495889215182031654L to "LicenseClanUserCC", + 7949064601138261608L to "ClanNotifierData", + 2547093126916834195L to "ClanEditPriceCC", + 6247612331185889342L to "ClanLoadingPanelCC", + 2606798949852309286L to "ClanPanelNotificationCC", + 6042266992054445914L to "ClanCreateCC", + 1115275516484037832L to "ClanUserCC", + 2023935033691193766L to "ContainerCC", + 5297988375509642470L to "ContainerCC", + 4813819753066546054L to "ContainerCC", + 649690707811173020L to "ContainerCC", + 881620222948704326L to "ContainerCC", + 1986821874929333245L to "UserAccountRemovalModelCC", + 7588919819099098108L to "BattleInviteCC", + 2855626038259597130L to "BattlePassPurchaseNotifierCC", + 7805766859473669177L to "ChallengeClientCC", + 8677996546985988365L to "StarsInfoCC", + 1987602940683756146L to "CoinInfoCC", + 3349786357139026014L to "ContractUserModelCC", + 6514486185481319524L to "CreatorTagCC", + 965113061940997187L to "CreatorTagsCC", + 7341286352739641155L to "DebtInfoCC", + 3395764563215792356L to "DonationAlertCC", + 8464700182634408374L to "UserDroppableGoldSettingsCC", + 3503382027414679973L to "TankHasGrenadeCC", + 5801057999588514016L to "ResistancesCC", + 51703991768325247L to "SaleByShopCC", + 7822174537018024954L to "GSWarningInfoModelCC", + 3152693668290247629L to "IconsProviderCC", + 6726403008449784914L to "KeysInfoCC", + 1417398836682569292L to "PaymentCC", + 1009501302658881534L to "PaymentLoaderCC", + 4748522118519647527L to "PayModeCC", + 6820688895043695030L to "AndroidPayCC", + 5156898764211343104L to "AppleAppStoreCC", + 6144768774251946863L to "BottomDescriptionCC", + 8083057704493864984L to "PayGardenPaymentCC", + 4905763060352702216L to "PayPalPayModelCC", + 7860106430129114440L to "RuStorePayCC", + 3158124838791669092L to "PaymentButtonCC", + 3620520388804703780L to "PeriodicRewardCC", + 7307951074626252633L to "PresentsSettingsCC", + 9028066746998427457L to "PaidRenameCC", + 3179861497615625536L to "UserEmailCC", + 1893408944113965505L to "UserPropertiesCC", + 5780017129265868734L to "ProfileVisibilityModelCC", + 9006361281849290638L to "UserPushNotificationSettingsModelCC", + 5895522515282663537L to "UserAchievementCC", + 7105110962241677955L to "MainQuestUserModelCC", + 5167916989664044333L to "ReferralEventUserModelCC", + 462434031489766566L to "QuestCategoriesModelCC", + 6966229709169193455L to "RewardedVideosCC", + 2767408225195389970L to "RubyInfoCC", + 1456475022890566348L to "RulesUpdateShowingCC", + 3189656422709297036L to "ItemsPackageCC", + 3714146481313901316L to "ShopCardCC", + 5172585086901412996L to "ShopCardDiscountCC", + 5817682208733860186L to "ShowcaseViewCC", + 1535852183188388854L to "BattlePassPackageCC", + 889485403566576664L to "KitBundleViewCC", + 4186634155763928467L to "CoinPackageCC", + 6484910309342792771L to "ContractShopCC", + 2789386002514731022L to "CrystalPackageCC", + 7810820263988615290L to "ShopItemAdditionalDescriptionCC", + 8458424802385151068L to "ShopDiscountCC", + 6744857484209767976L to "EmailRequiredCC", + 8853923292505519798L to "RestrictionByPayModeCC", + 6091707767266836975L to "ShopItemFeaturingCC", + 806128205466208462L to "GoldBoxPackageCC", + 6395651505226788750L to "GoodsCC", + 7786222713213880898L to "GoodsCC", + 7935550480449821024L to "IndemnityCC", + 8629995567796005946L to "KeysPackageCC", + 2103303438297476110L to "KitPackageCC", + 3985896237583754666L to "KitViewResourceCC", + 4440355418204561498L to "KitViewResourceLocalizedCC", + 8755539534673619516L to "LootBoxPackageCC", + 5004566952388327414L to "LootboxAndPaintCC", + 7949842549440362353L to "ShopItemOneTimePurchaseCC", + 6841476710481576918L to "ShopItemOneTimePurchaseCC", + 7881181052304665842L to "PaintPackageCC", + 5138794050233567698L to "PremiumPackageCC", + 693025797100292228L to "ShopItemCC", + 8048067679617995470L to "ShopCategoryCC", + 4268132139764766386L to "ShopItemCategoryCC", + 6192892501890483066L to "SpecialKitPackageCC", + 6899642532024252493L to "SingleItemKitViewCC", + 1036461397335537760L to "StarsPackageCC", + 2168011188167752629L to "ContextTutorialModelCC", + 4782427880403395260L to "LobbyTutorialModelCC", + 5256681735304582291L to "TwitchAccountModelCC", + 2252704231082045810L to "TwoStepVerificationModelCC", + 2080556892932195426L to "UserCountryCC", + 1851605205665890036L to "RewardsInfoCC", + 6071565290933648049L to "ChatCC", + 891137447706578619L to "ClanChatCC", + 868364325972433765L to "NewsShowingCC", + 6359692933626160397L to "SocialNetworkParametersCC", + 7762582768388221832L to "FlagBattleSFXCC", + 7970528904804811572L to "ArmsRaceCC", + 7401419333842694749L to "BattlefieldCC", + 2101100305743734614L to "BillboardCC", + 7267982595724632282L to "BillboardImageCC", + 5958419804845264849L to "BotNavigationCC", + 2464705242400585109L to "FacilitySphericalZoneCC", + 5242494537362061802L to "CommonFacilityCC", + 8109298281939714429L to "BattleLockingCC", + 9172358609541951983L to "MeteorStormCC", + 2057320715890332864L to "BattleMineCC", + 8980131978880882207L to "BattleStartDelayCC", + 8237913720896985151L to "DominationCC", + 5385894712778438726L to "BattleChatCC", + 6445399806655453890L to "InventoryCC", + 3364392936313775902L to "TargetHighlightingCC", + 7874327015886119466L to "JuggernautCC", + 5123834867188931684L to "KillStreakCC", + 3031864034871022835L to "PointBasedBattleCC", + 6169263949965533624L to "AssaultCC", + 2648029304025111838L to "CaptureTheFlagCC", + 2618111250571302204L to "RugbyCC", + 2269636304551395302L to "BallExplosionCC", + 6141842138930446750L to "StatusEffectBattleCC", + 7295738902766942560L to "TeamJuggernautCC", + 9114375113924783411L to "BattleTutorialCC", + 2145315487377727727L to "BattlefieldBonusesCC", + 5215232257096838692L to "BonusRegionsCC", + 3339617300033754420L to "GoldBonusCC", + 510571369984788727L to "BattleGoldBonusCC", + 8966480724474352542L to "BonusCommonCC", + 3305376498517733218L to "NotificationBonusCC", + 7484749077586587376L to "BonusLightCC", + 5968651969329902265L to "ColorAdjustCC", + 1661364280719338177L to "DemomanSfxCC", + 1475210252818583689L to "AutoSupplyRestrictionCC", + 8316165996190533130L to "DroneIndicatorCC", + 4553925959338838726L to "CrisisEffectCC", + 6424605984954645392L to "TankEffectSFXCC", + 8166810800706377715L to "ActiveAfterDeathCC", + 5779075235189237790L to "EffectDescriptionCC", + 8659306545527654916L to "DurationCC", + 3157947224668485277L to "EffectLevelCC", + 2078544146946392301L to "GrenadeCC", + 9169475278259220023L to "GrenadeCommonSFXCC", + 8082047509383246662L to "BazookaExplosionCC", + 6729312304988255776L to "FoamBazookaCC", + 2046257084008991040L to "MagnetBazookaCC", + 2360640997000854496L to "RepairGrenadeCC", + 9121776538033375678L to "SmokeBazookaCC", + 1219567052273540192L to "TeleportBazookaCC", + 3385611214280288146L to "TeslaBazookaCC", + 7336962025965257296L to "HeatTrapBazookaCC", + 4985274885530276227L to "InventoryItemCC", + 2173939047300893281L to "InventorySfxCC", + 4693095212037357021L to "BattleMapCC", + 1688856467034284073L to "MapBonusLightCC", + 4885574251230758729L to "ModerationToolInteropCC", + 3746009188563785369L to "ClassicParachuteCC", + 7894174029759745197L to "DroneParachuteCC", + 4778752313022424015L to "RadarCC", + 8889030940127130747L to "StatusEffectCC", + 5215458949573069793L to "SuppliesTutorialModelCC", + 3719295044981767592L to "HoverChassisCC", + 3535248640055401164L to "TrackedChassisCC", + 9175894397021160571L to "HullCommonCC", + 8517963146836182364L to "TankExplosionCC", + 6638615717159906637L to "TankRankUpEffectCC", + 7912514999422640843L to "SimpleArmorCC", + 3966050316678844327L to "EngineCC", + 4875657231924274329L to "BattleGearScoreCC", + 7968893209278436962L to "ColorTransformCC", + 1090112775751802907L to "FlameThrowingSFXCC", + 844040023906032853L to "FreezeSFXCC", + 5745114335268581493L to "IsisSFXCC", + 3240562023750085679L to "ClassicRailgunShootSFXCC", + 2368553937090306741L to "RailgunShootSFXCC", + 5257069799854314780L to "RicochetSFXCC", + 9094843804380507187L to "ShaftShootSFXCC", + 1748249573394295263L to "SmokyShootSFXCC", + 6623392760536649465L to "TeslaShootSFXCC", + 8191021443726008799L to "ThunderShootSFXCC", + 7692437363459179503L to "TwinsShootSFXCC", + 6641568549549264883L to "HullSmokeCC", + 2638139599268780529L to "AimAssistCC", + 7883218652624289568L to "VerticalAnglesCC", + 1237976996871886061L to "WeaponCommonCC", + 4444006910106229297L to "FlameThrowerCC", + 9105939015977236209L to "FreezeCC", + 1782954502314814229L to "GaussCC", + 3075844226211230705L to "GaussSFXCC", + 7068168268219022867L to "IsisCC", + 7266201540452328992L to "LaserPointerCC", + 1663344340563853103L to "RailgunCC", + 2544465990449691855L to "RicochetCC", + 8345039896357067195L to "ScorpioCC", + 313670832122918648L to "ScorpioSfxCC", + 732152133982227177L to "ShaftCC", + 7700337090161867199L to "ShotCC", + 2172139419072369403L to "SmokyCC", + 2235965200289058033L to "SplashCC", + 2057487026153364495L to "StreamWeaponCC", + 6855550629220038001L to "TerminatorCC", + 6210980129845088505L to "TerminatorSFXCC", + 573691036321759779L to "TeslaCC", + 5194655544597440038L to "GlobeLightningCC", + 1092307613749405757L to "ThunderCC", + 1130027771466355435L to "CassetteShootingCC", + 8212033390179430143L to "TsunamiCC", + 5604117679922858821L to "TsunamiShootSFXCC", + 2803166101624878775L to "RotatingTurretCC", + 8384919755051909877L to "TwinsCC", + 6384655869260380731L to "WeaponWeakeningCC", + 6642061974307112160L to "ArtilleryCC", + 8754295211549969729L to "ArtilleryElevatingBarrelCC", + 4499337062875496540L to "ArtillerySfxCC", + 7235761383767133268L to "BonkWeaponCC", + 7022952987062772048L to "MachineGunCC", + 8784137528831277530L to "MachineGunSFXCC", + 4045733714401632272L to "RocketLauncherCC", + 6596471917520283782L to "RocketLauncherSfxCC", + 6528115483341986769L to "ShotGunAimingCC", + 770654516236272028L to "ShotgunSFXCC", + 5867914731324680416L to "ShotgunShotCC", + 171896995500198357L to "TeamLightCC", + 6455142242556985012L to "UltimateCC", + 2660691061343351669L to "DeferredOverdriveCC", + 1500120709087433677L to "AresUltimateCC", + 7899544742191273818L to "AresUltimateProjectileCC", + 6210079079280471693L to "CrusaderEffectCC", + 3907559303616283277L to "CrusaderUltimateCC", + 6590506277285284269L to "DictatorUltimateCC", + 6668012086939621459L to "HopperUltimateCC", + 7214131179703676563L to "HornetUltimateCC", + 920233600808088339L to "BattleUltimateRadarCC", + 4406836274649365203L to "HunterUltimateCC", + 7257138969919985658L to "TankStunCC", + 887431150717814637L to "JuggernautUltimateCC", + 1997576349992148053L to "MammothUltimateCC", + 4658911146867546991L to "PaladinAuraVisualCC", + 973781565169577734L to "TankSuperchargeCC", + 8738779591519195597L to "TitanUltimateGeneratorCC", + 7551602984488625261L to "VikingUltimateCC", + 3137250957878113145L to "WaspUltimateBombCC", + 4388979890807820236L to "NuclearRechargeCC", + 5055746953759097716L to "BossStateCC", + 3317051239895575278L to "TankConfigurationCC", + 1838248562944554574L to "TankCritCC", + 3248199557469599724L to "DamageIndicatorCC", + 1767155986856291742L to "TankPointersCC", + 5543162332469864498L to "TankInfoCC", + 260111248825415414L to "BattleBotControlCC", + 2560105521800470759L to "RemoteTankStateUpdatingCC", + 7127632667958387441L to "TankResistancesCC", + 2104999573658810427L to "TankSpawnerCC", + 7163171834328288344L to "SpeedCharacteristicsCC", + 2271787261806799336L to "SuicideCC", + 2150802556932617880L to "TankCC", + 4206032257972775630L to "TurnOverCC", + 6589716392600418185L to "AvailableForAllCC", + 9168562037264832365L to "PassToShopCC", + 3122964582367261689L to "TemperatureCC", + 1259328549938381181L to "UpgradeGarageItemCC", + 3730185794267514852L to "GaragePreviewModelCC", + 2769268442698022653L to "BuyableCC", + 2114179554921095892L to "ItemCategoryCC", + 120961863156462946L to "CountableItemCC", + 7109632754421804521L to "DelayMountCategoryCC", + 5952355564848177159L to "DescriptionMediaCC", + 7391892068905080676L to "ItemDevicesCC", + 7640081207058999117L to "DevicePropertiesCC", + 2951667042968033849L to "DiscountCC", + 4692610703461978415L to "ProAbonementRankDiscountCC", + 1534251830977989099L to "EmissionColorCC", + 6111098822553419499L to "BazookaSupplyCC", + 1865478986390468300L to "GroupedCC", + 3438505192580052999L to "ItemModelCC", + 7472019549033825785L to "Item3DCC", + 213661725715747381L to "ItemEnabledForPartnerCC", + 5219530271535770658L to "GarageKitCC", + 4309274349580876968L to "ItemSaleByKitCC", + 2494628067134376039L to "ModificationCC", + 6430862429652735997L to "Object3DSCC", + 1139677084511624062L to "PremiumItemCC", + 4245000165576407500L to "ItemPropertiesCC", + 658797348514407988L to "ItemRarityCC", + 8153652471440648359L to "RelativePropertiesCC", + 5724298620794499870L to "MountedResistancesCC", + 6628468327090974523L to "ResistanceBackgroundCC", + 712090483864327130L to "HullSkinModelCC", + 481504601146841174L to "TankPartSkinModelCC", + 4234781414353452329L to "TurretSkinModelCC", + 3893855999545616334L to "TemporaryItemCC", + 4743567393313674375L to "UpgradeParamsCC", + 6117306895090150422L to "ItemViewCategoryCC", + 5738770490413536673L to "VisibleCC", + 4817031001612283794L to "ProtectionSlotsCC", + 701801920209410257L to "UserItemFavoriteCC", + 2433120830275396692L to "PresentsCC", + 4038465370530850950L to "HullEngineTypeCC", + 7563487786199453443L to "OverdriveDescriptionCC", + 5988756521593027564L to "RelatedResistanceModuleCC", + 149643551432886459L to "TurretMechanismCC", + 5207857306014573244L to "AvailableSkinsCC", + 905970599512839002L to "MountedSkinCC", + 834829861153964627L to "MountedSkinCC", + 1164458258646872337L to "AvailableShotSkinsCC", + 6680653332718076818L to "SkinPreviewCC", + 2108103923322474513L to "CaptchaCC", + 7175193612424807833L to "ServerHaltCC", + 4068618447512888231L to "ColoringCC", + 5255782026414758079L to "LobbyLayoutModelCC", + 7272122855372520854L to "FriendsCC", + 7286757952195114814L to "UserContainerCC", + 433350986715773690L to "UserContainerCC", + 6666386288157781248L to "UserContainerCC", + 6165842138816273510L to "UserContainerCC", + 4806152428066355053L to "ContainersInfoCC", + 2396069765491056127L to "UserReportsModelCC", + 5111180848188020047L to "NotificationEnabledCC", + 2913056477936031270L to "BattleInfoCC", + 994751080759166914L to "BattleDMInfoCC", + 6282101613166902704L to "BattleParamInfoCC", + 6652129902375288094L to "TeamBattleInfoCC", + 5413550891500581680L to "ClassicBattleSelectModelCC", + 8618289906968528240L to "BattleCreateCC", + 7185560430911351668L to "FormatBattleOptionsCC", + 5412538083071671358L to "MapInfoCC", + 104562115846147942L to "MatchmakingGroupCC", + 5932347630672640435L to "MatchmakingLayoutCC", + 3935107155251354407L to "DescriptionModelCC", + 8032192927455575509L to "TimePeriodModelCC", +)