@roomkit/worker 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +122 -0
  2. package/dist/src/admin/admin.controller.d.ts +275 -0
  3. package/dist/src/admin/admin.controller.d.ts.map +1 -0
  4. package/dist/src/admin/admin.controller.js +296 -0
  5. package/dist/src/admin/admin.controller.js.map +1 -0
  6. package/dist/src/admin/admin.module.d.ts +3 -0
  7. package/dist/src/admin/admin.module.d.ts.map +1 -0
  8. package/dist/src/admin/admin.module.js +35 -0
  9. package/dist/src/admin/admin.module.js.map +1 -0
  10. package/dist/src/admin/admin.service.d.ts +282 -0
  11. package/dist/src/admin/admin.service.d.ts.map +1 -0
  12. package/dist/src/admin/admin.service.js +508 -0
  13. package/dist/src/admin/admin.service.js.map +1 -0
  14. package/dist/src/auth/auth.module.d.ts +10 -0
  15. package/dist/src/auth/auth.module.d.ts.map +1 -0
  16. package/dist/src/auth/auth.module.js +37 -0
  17. package/dist/src/auth/auth.module.js.map +1 -0
  18. package/dist/src/auth/auth.service.d.ts +21 -0
  19. package/dist/src/auth/auth.service.d.ts.map +1 -0
  20. package/dist/src/auth/auth.service.js +69 -0
  21. package/dist/src/auth/auth.service.js.map +1 -0
  22. package/dist/src/circuit-breaker/circuit-breaker.module.d.ts +3 -0
  23. package/dist/src/circuit-breaker/circuit-breaker.module.d.ts.map +1 -0
  24. package/dist/src/circuit-breaker/circuit-breaker.module.js +24 -0
  25. package/dist/src/circuit-breaker/circuit-breaker.module.js.map +1 -0
  26. package/dist/src/circuit-breaker/circuit-breaker.service.d.ts +89 -0
  27. package/dist/src/circuit-breaker/circuit-breaker.service.d.ts.map +1 -0
  28. package/dist/src/circuit-breaker/circuit-breaker.service.js +207 -0
  29. package/dist/src/circuit-breaker/circuit-breaker.service.js.map +1 -0
  30. package/dist/src/config/config.module.d.ts +3 -0
  31. package/dist/src/config/config.module.d.ts.map +1 -0
  32. package/dist/src/config/config.module.js +22 -0
  33. package/dist/src/config/config.module.js.map +1 -0
  34. package/dist/src/config/config.service.d.ts +19 -0
  35. package/dist/src/config/config.service.d.ts.map +1 -0
  36. package/dist/src/config/config.service.js +58 -0
  37. package/dist/src/config/config.service.js.map +1 -0
  38. package/dist/src/config/worker.config.d.ts +82 -0
  39. package/dist/src/config/worker.config.d.ts.map +1 -0
  40. package/dist/src/config/worker.config.js +35 -0
  41. package/dist/src/config/worker.config.js.map +1 -0
  42. package/dist/src/index.d.ts +48 -0
  43. package/dist/src/index.d.ts.map +1 -0
  44. package/dist/src/index.js +108 -0
  45. package/dist/src/index.js.map +1 -0
  46. package/dist/src/lifecycle/graceful-shutdown.service.d.ts +71 -0
  47. package/dist/src/lifecycle/graceful-shutdown.service.d.ts.map +1 -0
  48. package/dist/src/lifecycle/graceful-shutdown.service.js +221 -0
  49. package/dist/src/lifecycle/graceful-shutdown.service.js.map +1 -0
  50. package/dist/src/lifecycle/index.d.ts +2 -0
  51. package/dist/src/lifecycle/index.d.ts.map +1 -0
  52. package/dist/src/lifecycle/index.js +18 -0
  53. package/dist/src/lifecycle/index.js.map +1 -0
  54. package/dist/src/main.d.ts +2 -0
  55. package/dist/src/main.d.ts.map +1 -0
  56. package/dist/src/main.js +54 -0
  57. package/dist/src/main.js.map +1 -0
  58. package/dist/src/metrics/metrics.controller.d.ts +15 -0
  59. package/dist/src/metrics/metrics.controller.d.ts.map +1 -0
  60. package/dist/src/metrics/metrics.controller.js +44 -0
  61. package/dist/src/metrics/metrics.controller.js.map +1 -0
  62. package/dist/src/metrics/metrics.module.d.ts +7 -0
  63. package/dist/src/metrics/metrics.module.d.ts.map +1 -0
  64. package/dist/src/metrics/metrics.module.js +28 -0
  65. package/dist/src/metrics/metrics.module.js.map +1 -0
  66. package/dist/src/metrics/metrics.service.d.ts +65 -0
  67. package/dist/src/metrics/metrics.service.d.ts.map +1 -0
  68. package/dist/src/metrics/metrics.service.js +306 -0
  69. package/dist/src/metrics/metrics.service.js.map +1 -0
  70. package/dist/src/migration/migration.module.d.ts +3 -0
  71. package/dist/src/migration/migration.module.d.ts.map +1 -0
  72. package/dist/src/migration/migration.module.js +30 -0
  73. package/dist/src/migration/migration.module.js.map +1 -0
  74. package/dist/src/migration/migration.service.d.ts +68 -0
  75. package/dist/src/migration/migration.service.d.ts.map +1 -0
  76. package/dist/src/migration/migration.service.js +295 -0
  77. package/dist/src/migration/migration.service.js.map +1 -0
  78. package/dist/src/migration/room-migration.service.d.ts +92 -0
  79. package/dist/src/migration/room-migration.service.d.ts.map +1 -0
  80. package/dist/src/migration/room-migration.service.js +297 -0
  81. package/dist/src/migration/room-migration.service.js.map +1 -0
  82. package/dist/src/redis/redis.module.d.ts +3 -0
  83. package/dist/src/redis/redis.module.d.ts.map +1 -0
  84. package/dist/src/redis/redis.module.js +22 -0
  85. package/dist/src/redis/redis.module.js.map +1 -0
  86. package/dist/src/redis/redis.service.d.ts +68 -0
  87. package/dist/src/redis/redis.service.d.ts.map +1 -0
  88. package/dist/src/redis/redis.service.js +260 -0
  89. package/dist/src/redis/redis.service.js.map +1 -0
  90. package/dist/src/room/client-proxy.d.ts +43 -0
  91. package/dist/src/room/client-proxy.d.ts.map +1 -0
  92. package/dist/src/room/client-proxy.js +91 -0
  93. package/dist/src/room/client-proxy.js.map +1 -0
  94. package/dist/src/room/game-room.d.ts +243 -0
  95. package/dist/src/room/game-room.d.ts.map +1 -0
  96. package/dist/src/room/game-room.js +434 -0
  97. package/dist/src/room/game-room.js.map +1 -0
  98. package/dist/src/room/message-handler.service.d.ts +70 -0
  99. package/dist/src/room/message-handler.service.d.ts.map +1 -0
  100. package/dist/src/room/message-handler.service.js +541 -0
  101. package/dist/src/room/message-handler.service.js.map +1 -0
  102. package/dist/src/room/room-manager.service.d.ts +132 -0
  103. package/dist/src/room/room-manager.service.d.ts.map +1 -0
  104. package/dist/src/room/room-manager.service.js +571 -0
  105. package/dist/src/room/room-manager.service.js.map +1 -0
  106. package/dist/src/room/room-persistence.service.d.ts +101 -0
  107. package/dist/src/room/room-persistence.service.d.ts.map +1 -0
  108. package/dist/src/room/room-persistence.service.js +307 -0
  109. package/dist/src/room/room-persistence.service.js.map +1 -0
  110. package/dist/src/room/room-registry.service.d.ts +16 -0
  111. package/dist/src/room/room-registry.service.d.ts.map +1 -0
  112. package/dist/src/room/room-registry.service.js +60 -0
  113. package/dist/src/room/room-registry.service.js.map +1 -0
  114. package/dist/src/room/room.module.d.ts +15 -0
  115. package/dist/src/room/room.module.d.ts.map +1 -0
  116. package/dist/src/room/room.module.js +55 -0
  117. package/dist/src/room/room.module.js.map +1 -0
  118. package/dist/src/room/rooms/echo-room.d.ts +18 -0
  119. package/dist/src/room/rooms/echo-room.d.ts.map +1 -0
  120. package/dist/src/room/rooms/echo-room.js +85 -0
  121. package/dist/src/room/rooms/echo-room.js.map +1 -0
  122. package/dist/src/room/rooms/index.d.ts +2 -0
  123. package/dist/src/room/rooms/index.d.ts.map +1 -0
  124. package/dist/src/room/rooms/index.js +6 -0
  125. package/dist/src/room/rooms/index.js.map +1 -0
  126. package/dist/src/worker.module.d.ts +10 -0
  127. package/dist/src/worker.module.d.ts.map +1 -0
  128. package/dist/src/worker.module.js +46 -0
  129. package/dist/src/worker.module.js.map +1 -0
  130. package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts +2 -0
  131. package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts.map +1 -0
  132. package/dist/test/circuit-breaker/circuit-breaker.service.spec.js +220 -0
  133. package/dist/test/circuit-breaker/circuit-breaker.service.spec.js.map +1 -0
  134. package/dist/test/integration/admin-api.spec.d.ts +2 -0
  135. package/dist/test/integration/admin-api.spec.d.ts.map +1 -0
  136. package/dist/test/integration/admin-api.spec.js +246 -0
  137. package/dist/test/integration/admin-api.spec.js.map +1 -0
  138. package/dist/test/migration/game-room-migration.spec.d.ts +2 -0
  139. package/dist/test/migration/game-room-migration.spec.d.ts.map +1 -0
  140. package/dist/test/migration/game-room-migration.spec.js +222 -0
  141. package/dist/test/migration/game-room-migration.spec.js.map +1 -0
  142. package/dist/test/room/client-proxy.spec.d.ts +2 -0
  143. package/dist/test/room/client-proxy.spec.d.ts.map +1 -0
  144. package/dist/test/room/client-proxy.spec.js +117 -0
  145. package/dist/test/room/client-proxy.spec.js.map +1 -0
  146. package/dist/test/room/game-room.spec.d.ts +2 -0
  147. package/dist/test/room/game-room.spec.d.ts.map +1 -0
  148. package/dist/test/room/game-room.spec.js +219 -0
  149. package/dist/test/room/game-room.spec.js.map +1 -0
  150. package/dist/test/room/room-manager.service.spec.d.ts +2 -0
  151. package/dist/test/room/room-manager.service.spec.d.ts.map +1 -0
  152. package/dist/test/room/room-manager.service.spec.js +280 -0
  153. package/dist/test/room/room-manager.service.spec.js.map +1 -0
  154. package/dist/test/setup.d.ts +2 -0
  155. package/dist/test/setup.d.ts.map +1 -0
  156. package/dist/test/setup.js +56 -0
  157. package/dist/test/setup.js.map +1 -0
  158. package/package.json +74 -0
@@ -0,0 +1,3 @@
1
+ export declare class AdminModule {
2
+ }
3
+ //# sourceMappingURL=admin.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.module.d.ts","sourceRoot":"","sources":["../../../src/admin/admin.module.ts"],"names":[],"mappings":"AASA,qBAYa,WAAW;CAAG"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AdminModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const admin_controller_1 = require("./admin.controller");
12
+ const admin_service_1 = require("./admin.service");
13
+ const config_module_1 = require("../config/config.module");
14
+ const redis_module_1 = require("../redis/redis.module");
15
+ const room_module_1 = require("../room/room.module");
16
+ const circuit_breaker_module_1 = require("../circuit-breaker/circuit-breaker.module");
17
+ const migration_module_1 = require("../migration/migration.module");
18
+ let AdminModule = class AdminModule {
19
+ };
20
+ exports.AdminModule = AdminModule;
21
+ exports.AdminModule = AdminModule = __decorate([
22
+ (0, common_1.Module)({
23
+ imports: [
24
+ config_module_1.ConfigModule,
25
+ redis_module_1.RedisModule,
26
+ room_module_1.RoomModule,
27
+ circuit_breaker_module_1.CircuitBreakerModule,
28
+ (0, common_1.forwardRef)(() => migration_module_1.MigrationModule),
29
+ ],
30
+ controllers: [admin_controller_1.AdminController],
31
+ providers: [admin_service_1.AdminService],
32
+ exports: [admin_service_1.AdminService],
33
+ })
34
+ ], AdminModule);
35
+ //# sourceMappingURL=admin.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.module.js","sourceRoot":"","sources":["../../../src/admin/admin.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,yDAAqD;AACrD,mDAA+C;AAC/C,2DAAuD;AACvD,wDAAoD;AACpD,qDAAiD;AACjD,sFAAiF;AACjF,oEAAgE;AAczD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAZvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,4BAAY;YACZ,0BAAW;YACX,wBAAU;YACV,6CAAoB;YACpB,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC;SAClC;QACD,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
@@ -0,0 +1,282 @@
1
+ import { ConfigService } from '../config/config.service';
2
+ import { RedisService } from '../redis/redis.service';
3
+ import { RoomManagerService } from '../room/room-manager.service';
4
+ import { CircuitBreakerService } from '../circuit-breaker/circuit-breaker.service';
5
+ import { RoomMigrationService } from '../migration/room-migration.service';
6
+ import { RoomSnapshot, RoomMigrationRequest } from '@roomkit/core';
7
+ /**
8
+ * Worker Admin 服务
9
+ * 提供管理功能的业务逻辑
10
+ */
11
+ export declare class AdminService {
12
+ private readonly configService;
13
+ private readonly redisService;
14
+ private readonly roomManagerService;
15
+ private readonly circuitBreakerService;
16
+ private readonly migrationService;
17
+ private readonly logger;
18
+ private readonly startTime;
19
+ private isDraining;
20
+ constructor(configService: ConfigService, redisService: RedisService, roomManagerService: RoomManagerService, circuitBreakerService: CircuitBreakerService, migrationService: RoomMigrationService);
21
+ /**
22
+ * 健康检查
23
+ */
24
+ getHealth(): {
25
+ status: string;
26
+ timestamp: number;
27
+ workerId: string;
28
+ circuitBreaker: import("../circuit-breaker/circuit-breaker.service").CircuitState;
29
+ };
30
+ /**
31
+ * 获取系统状态
32
+ */
33
+ getStatus(): {
34
+ workerId: string;
35
+ uptime: number;
36
+ uptimeFormatted: string;
37
+ draining: boolean;
38
+ rooms: {
39
+ count: number;
40
+ max: number;
41
+ utilization: number;
42
+ totalPlayers: number;
43
+ };
44
+ circuitBreaker: import("../circuit-breaker/circuit-breaker.service").CircuitStats;
45
+ config: {
46
+ maxRooms: number;
47
+ circuitFailureThreshold: number;
48
+ circuitSuccessThreshold: number;
49
+ circuitOpenTimeout: number;
50
+ maxPendingRequests: number;
51
+ };
52
+ memory: {
53
+ heapUsed: number;
54
+ heapTotal: number;
55
+ rss: number;
56
+ external: number;
57
+ unit: string;
58
+ };
59
+ timestamp: number;
60
+ };
61
+ /**
62
+ * 获取所有房间信息
63
+ */
64
+ getRooms(): {
65
+ count: number;
66
+ rooms: {
67
+ roomId: string;
68
+ gameType: string;
69
+ status: string;
70
+ playerCount: number;
71
+ maxPlayers: number;
72
+ createdAt: number;
73
+ age: number;
74
+ }[];
75
+ };
76
+ /**
77
+ * 获取单个房间详情
78
+ */
79
+ getRoom(roomId: string): {
80
+ roomId: string;
81
+ gameType: string;
82
+ status: import("@roomkit/core").RoomStatus;
83
+ playerCount: number;
84
+ maxPlayers: number;
85
+ createdAt: number;
86
+ age: number;
87
+ players: import("@roomkit/core").PlayerInfo[];
88
+ autoDispose: boolean;
89
+ autoDisposeTimeout: number;
90
+ };
91
+ /**
92
+ * 强制关闭房间
93
+ */
94
+ closeRoom(roomId: string, reason?: string): Promise<{
95
+ success: boolean;
96
+ roomId: string;
97
+ reason: string;
98
+ }>;
99
+ /**
100
+ * 踢出房间中的玩家
101
+ */
102
+ kickPlayerFromRoom(roomId: string, userId: string, reason?: string): Promise<{
103
+ success: boolean;
104
+ roomId: string;
105
+ userId: string;
106
+ reason: string;
107
+ }>;
108
+ /**
109
+ * 获取熔断器状态
110
+ */
111
+ getCircuitBreakerStatus(): {
112
+ isHealthy: boolean;
113
+ config: {
114
+ failureThreshold: number;
115
+ successThreshold: number;
116
+ openTimeout: number;
117
+ maxPendingRequests: number;
118
+ };
119
+ state: import("../circuit-breaker/circuit-breaker.service").CircuitState;
120
+ failures: number;
121
+ successes: number;
122
+ lastFailureTime?: number;
123
+ lastOpenTime?: number;
124
+ pendingRequests: number;
125
+ };
126
+ /**
127
+ * 手动重置熔断器
128
+ */
129
+ resetCircuitBreaker(): {
130
+ success: boolean;
131
+ state: import("../circuit-breaker/circuit-breaker.service").CircuitState;
132
+ };
133
+ /**
134
+ * 手动触发熔断
135
+ */
136
+ tripCircuitBreaker(reason?: string): {
137
+ success: boolean;
138
+ state: import("../circuit-breaker/circuit-breaker.service").CircuitState;
139
+ reason: string;
140
+ };
141
+ /**
142
+ * 获取 Redis 连接状态
143
+ */
144
+ getRedisStatus(): {
145
+ connected: boolean;
146
+ status: "connect" | "wait" | "reconnecting" | "connecting" | "ready" | "close" | "end";
147
+ host: string;
148
+ port: number;
149
+ };
150
+ /**
151
+ * 获取已注册的游戏类型
152
+ */
153
+ getGameTypes(): {
154
+ count: number;
155
+ gameTypes: string[];
156
+ };
157
+ /**
158
+ * 获取指标数据
159
+ */
160
+ getMetrics(): {
161
+ timestamp: number;
162
+ worker: {
163
+ id: string;
164
+ uptime: number;
165
+ draining: boolean;
166
+ };
167
+ rooms: {
168
+ total: number;
169
+ totalPlayers: number;
170
+ byGameType: Record<string, {
171
+ rooms: number;
172
+ players: number;
173
+ }>;
174
+ };
175
+ circuitBreaker: import("../circuit-breaker/circuit-breaker.service").CircuitStats;
176
+ memory: {
177
+ heapUsed: number;
178
+ heapTotal: number;
179
+ rss: number;
180
+ external: number;
181
+ unit: string;
182
+ };
183
+ };
184
+ /**
185
+ * 优雅下线
186
+ */
187
+ drain(): Promise<{
188
+ success: boolean;
189
+ status: string;
190
+ roomsRemaining: number;
191
+ }>;
192
+ /**
193
+ * 恢复正常状态
194
+ */
195
+ resume(): Promise<{
196
+ success: boolean;
197
+ status: string;
198
+ }>;
199
+ /**
200
+ * 格式化运行时间
201
+ */
202
+ private formatUptime;
203
+ /**
204
+ * 获取内存使用情况
205
+ */
206
+ private getMemoryUsage;
207
+ /**
208
+ * 创建房间快照
209
+ */
210
+ createRoomSnapshot(roomId: string): {
211
+ success: boolean;
212
+ snapshot: RoomSnapshot;
213
+ error?: undefined;
214
+ } | {
215
+ success: boolean;
216
+ error: string;
217
+ snapshot?: undefined;
218
+ };
219
+ /**
220
+ * 从快照恢复房间
221
+ */
222
+ restoreRoomFromSnapshot(snapshotData: unknown): Promise<{
223
+ success: boolean;
224
+ error: string;
225
+ roomId?: undefined;
226
+ playerCount?: undefined;
227
+ } | {
228
+ success: boolean;
229
+ roomId: string;
230
+ playerCount: number;
231
+ error?: undefined;
232
+ }>;
233
+ /**
234
+ * 清理迁移后的源房间
235
+ */
236
+ cleanupMigratedRoom(roomId: string): Promise<{
237
+ success: boolean;
238
+ message: string;
239
+ roomId?: undefined;
240
+ error?: undefined;
241
+ } | {
242
+ success: boolean;
243
+ roomId: string;
244
+ message?: undefined;
245
+ error?: undefined;
246
+ } | {
247
+ success: boolean;
248
+ error: string;
249
+ message?: undefined;
250
+ roomId?: undefined;
251
+ }>;
252
+ /**
253
+ * 发起房间迁移(协调者角色)
254
+ */
255
+ migrateRoom(request: RoomMigrationRequest): Promise<import("../migration/room-migration.service").MigrationResult | {
256
+ success: boolean;
257
+ error: string;
258
+ roomId: string;
259
+ }>;
260
+ /**
261
+ * 获取迁移状态
262
+ */
263
+ getMigrationStatus(roomId: string): {
264
+ roomId: string;
265
+ exists: boolean;
266
+ isMigrating: boolean;
267
+ sourceWorkerId: string | undefined;
268
+ };
269
+ /**
270
+ * 获取所有活跃迁移
271
+ */
272
+ getActiveMigrations(): {
273
+ count: number;
274
+ migrations: {
275
+ roomId: string;
276
+ sourceWorkerId?: string;
277
+ }[];
278
+ migratingRooms: number;
279
+ activeRooms: string[];
280
+ };
281
+ }
282
+ //# sourceMappingURL=admin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.service.d.ts","sourceRoot":"","sources":["../../../src/admin/admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEnE;;;GAGG;AACH,qBACa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,UAAU,CAAS;gBAGR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,oBAAoB;IAGzD;;OAEG;IACH,SAAS;;;;;;IAST;;OAEG;IACH,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCT;;OAEG;IACH,QAAQ;;;oBAGI,MAAM;sBACJ,MAAM;oBACR,MAAM;yBACD,MAAM;wBACP,MAAM;uBACP,MAAM;iBACZ,MAAM;;;IAqBf;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;IAoBtB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;IAgB/C;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;IAqBxE;;OAEG;IACH,uBAAuB;;;;;;;;;;;;;;;IAcvB;;OAEG;IACH,mBAAmB;;;;IAUnB;;OAEG;IACH,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM;;;;;IAWlC;;OAEG;IACH,cAAc;;;;;;IAUd;;OAEG;IACH,YAAY;;;;IAQZ;;OAEG;IACH,UAAU;;;;;;;;;;;uBAGqC,MAAM;yBAAW,MAAM;;;;;;;;;;;;IA6BtE;;OAEG;IACG,KAAK;;;;;IAkBX;;OAEG;IACG,MAAM;;;;IAiBZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;IAuBjC;;OAEG;IACG,uBAAuB,CAAC,YAAY,EAAE,OAAO;;;;;;;;;;;IA6DnD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;IAiCxC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB;;;;;IAsC/C;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;IAWjC;;OAEG;IACH,mBAAmB;;;oBAIP,MAAM;6BACG,MAAM;;;;;CAmB5B"}