diff --git a/backend/dist/src/main.d.ts b/backend/dist/src/main.d.ts index 4d0a764..19ff33f 100644 --- a/backend/dist/src/main.d.ts +++ b/backend/dist/src/main.d.ts @@ -6,6 +6,18 @@ import { ParticipantRole } from '@prisma/client'; import { Reflector } from '@nestjs/core'; import { CanActivate, ExecutionContext } from '@nestjs/common'; import { Cache } from 'cache-manager'; +export declare class CommentGateway implements OnGatewayConnection { + server: Server; + handleConnection(client: Socket): void; + handleJoinTour(client: Socket, tourId: string): void; + handleJoinPhoto(client: Socket, photoId: string): void; + notifyNewComment(tourId: string, data: any): void; + notifyNewPhotoComment(photoId: string, data: any): void; + handleJoinUser(client: Socket, userId: string): void; + notifyNewMessage(receiverId: string, data: any): void; + notifyConnectionAccepted(requesterId: string, data: any): void; + notifyJoinRequestAccepted(userId: string, data: any): void; +} export declare const ROLES_KEY = "roles"; export declare const Roles: (...roles: ParticipantRole[]) => import("@nestjs/common").CustomDecorator; export declare class TourRoleGuard implements CanActivate { @@ -21,11 +33,3 @@ export declare class EmailService { sendOTP(email: string, otp: string): Promise; sendTourInvitation(email: string, tourTitle: string, inviteLink: string): Promise; } -export declare class CommentGateway implements OnGatewayConnection { - server: Server; - handleConnection(client: Socket): void; - handleJoinTour(client: Socket, tourId: string): void; - handleJoinPhoto(client: Socket, photoId: string): void; - notifyNewComment(tourId: string, data: any): void; - notifyNewPhotoComment(photoId: string, data: any): void; -} diff --git a/backend/dist/src/main.js b/backend/dist/src/main.js index 0f49968..fc650a1 100644 --- a/backend/dist/src/main.js +++ b/backend/dist/src/main.js @@ -48,7 +48,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.CommentGateway = exports.EmailService = exports.TourRoleGuard = exports.Roles = exports.ROLES_KEY = void 0; +exports.EmailService = exports.TourRoleGuard = exports.Roles = exports.ROLES_KEY = exports.CommentGateway = void 0; const path = __importStar(require("path")); const fs = __importStar(require("fs")); const crypto = __importStar(require("crypto")); @@ -80,6 +80,64 @@ const compress_cache_interceptor_1 = require("./common/compress-cache.intercepto const gzip = (0, util_1.promisify)(zlib.gzip); const gunzip = (0, util_1.promisify)(zlib.gunzip); const UPLOAD_ROOT = path.join(process.cwd(), 'uploads'); +let CommentGateway = class CommentGateway { + handleConnection(client) { + console.log(`[WS] Client connected: ${client.id}`); + } + handleJoinTour(client, tourId) { + client.join(`tour_${tourId}`); + console.log(`[WS] Client ${client.id} joined room: tour_${tourId}`); + } + handleJoinPhoto(client, photoId) { + client.join(`photo_${photoId}`); + console.log(`[WS] Client ${client.id} joined room: photo_${photoId}`); + } + notifyNewComment(tourId, data) { + this.server.to(`tour_${tourId}`).emit('commentAdded', data); + } + notifyNewPhotoComment(photoId, data) { + this.server.to(`photo_${photoId}`).emit('photoCommentAdded', data); + } + handleJoinUser(client, userId) { + client.join(`user_${userId}`); + console.log(`[WS] Client ${client.id} joined user room: user_${userId}`); + } + notifyNewMessage(receiverId, data) { + this.server.to(`user_${receiverId}`).emit('messageReceived', data); + } + notifyConnectionAccepted(requesterId, data) { + this.server.to(`user_${requesterId}`).emit('connectionAccepted', data); + } + notifyJoinRequestAccepted(userId, data) { + this.server.to(`user_${userId}`).emit('joinRequestAccepted', data); + } +}; +exports.CommentGateway = CommentGateway; +__decorate([ + (0, websockets_1.WebSocketServer)(), + __metadata("design:type", socket_io_1.Server) +], CommentGateway.prototype, "server", void 0); +__decorate([ + (0, websockets_1.SubscribeMessage)('joinTour'), + __metadata("design:type", Function), + __metadata("design:paramtypes", [socket_io_1.Socket, String]), + __metadata("design:returntype", void 0) +], CommentGateway.prototype, "handleJoinTour", null); +__decorate([ + (0, websockets_1.SubscribeMessage)('joinPhoto'), + __metadata("design:type", Function), + __metadata("design:paramtypes", [socket_io_1.Socket, String]), + __metadata("design:returntype", void 0) +], CommentGateway.prototype, "handleJoinPhoto", null); +__decorate([ + (0, websockets_1.SubscribeMessage)('joinUser'), + __metadata("design:type", Function), + __metadata("design:paramtypes", [socket_io_1.Socket, String]), + __metadata("design:returntype", void 0) +], CommentGateway.prototype, "handleJoinUser", null); +exports.CommentGateway = CommentGateway = __decorate([ + (0, websockets_1.WebSocketGateway)({ cors: { origin: '*' } }) +], CommentGateway); const CACHE_TTL = { DEFAULT: 600000, RESOURCE_TO_TOUR: 3600000, @@ -454,6 +512,7 @@ let AuthController = class AuthController { name: user.name, avatar: user.avatar, isAdmin: user.isAdmin, + isGoogle: true, }, }; } @@ -653,10 +712,11 @@ PublicTourController = __decorate([ __metadata("design:paramtypes", [prisma_service_1.PrismaService]) ], PublicTourController); let TourController = class TourController { - constructor(prisma, emailService, cacheManager) { + constructor(prisma, emailService, cacheManager, commentGateway) { this.prisma = prisma; this.emailService = emailService; this.cacheManager = cacheManager; + this.commentGateway = commentGateway; } async createTour(body, req) { const { title, description, startDate, endDate, adultCount, childCount, childDiscount, tags, members } = body; @@ -1213,6 +1273,15 @@ let TourController = class TourController { data: { status: 'ACCEPTED' }, }), ]); + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + this.commentGateway.notifyJoinRequestAccepted(joinRequest.userId, { + tourId, + tourTitle: tour?.title || 'Hành trình', + requestId + }); return { success: true, message: 'Đã chấp nhận yêu cầu tham gia.' }; } async rejectJoinRequest(tourId, requestId, req) { @@ -1707,7 +1776,7 @@ TourController = __decorate([ (0, common_1.Controller)('tours'), __param(2, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)), __metadata("design:paramtypes", [prisma_service_1.PrismaService, - EmailService, Object]) + EmailService, Object, CommentGateway]) ], TourController); let LocationController = class LocationController { constructor(prisma, cacheManager) { @@ -2361,45 +2430,6 @@ UserController = __decorate([ (0, exports.Roles)(client_1.ParticipantRole.OWNER, client_1.ParticipantRole.MANAGER), __metadata("design:paramtypes", [prisma_service_1.PrismaService]) ], UserController); -let CommentGateway = class CommentGateway { - handleConnection(client) { - console.log(`[WS] Client connected: ${client.id}`); - } - handleJoinTour(client, tourId) { - client.join(`tour_${tourId}`); - console.log(`[WS] Client ${client.id} joined room: tour_${tourId}`); - } - handleJoinPhoto(client, photoId) { - client.join(`photo_${photoId}`); - console.log(`[WS] Client ${client.id} joined room: photo_${photoId}`); - } - notifyNewComment(tourId, data) { - this.server.to(`tour_${tourId}`).emit('commentAdded', data); - } - notifyNewPhotoComment(photoId, data) { - this.server.to(`photo_${photoId}`).emit('photoCommentAdded', data); - } -}; -exports.CommentGateway = CommentGateway; -__decorate([ - (0, websockets_1.WebSocketServer)(), - __metadata("design:type", socket_io_1.Server) -], CommentGateway.prototype, "server", void 0); -__decorate([ - (0, websockets_1.SubscribeMessage)('joinTour'), - __metadata("design:type", Function), - __metadata("design:paramtypes", [socket_io_1.Socket, String]), - __metadata("design:returntype", void 0) -], CommentGateway.prototype, "handleJoinTour", null); -__decorate([ - (0, websockets_1.SubscribeMessage)('joinPhoto'), - __metadata("design:type", Function), - __metadata("design:paramtypes", [socket_io_1.Socket, String]), - __metadata("design:returntype", void 0) -], CommentGateway.prototype, "handleJoinPhoto", null); -exports.CommentGateway = CommentGateway = __decorate([ - (0, websockets_1.WebSocketGateway)({ cors: { origin: '*' } }) -], CommentGateway); let CommentController = class CommentController { constructor(prisma, commentGateway) { this.prisma = prisma; @@ -2961,6 +2991,417 @@ PublicPhotoController = __decorate([ __metadata("design:paramtypes", [prisma_service_1.PrismaService, CommentGateway]) ], PublicPhotoController); +let ConnectionController = class ConnectionController { + constructor(prisma, commentGateway) { + this.prisma = prisma; + this.commentGateway = commentGateway; + } + async getConnections(req) { + const currentUserId = req.user.id; + const connections = await this.prisma.userConnection.findMany({ + where: { + OR: [ + { requesterId: currentUserId }, + { receiverId: currentUserId } + ], + status: 'ACCEPTED' + }, + include: { + requester: { select: { id: true, name: true, email: true, avatar: true } }, + receiver: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + const formattedConnections = connections.map(conn => { + const isRequester = conn.requesterId === currentUserId; + const targetUser = isRequester ? conn.receiver : conn.requester; + return { + id: conn.id, + targetUser, + type: conn.type, + status: conn.status, + createdAt: conn.createdAt + }; + }); + const receivedRequests = await this.prisma.userConnection.findMany({ + where: { + receiverId: currentUserId, + status: 'PENDING' + }, + include: { + requester: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + const sentRequests = await this.prisma.userConnection.findMany({ + where: { + requesterId: currentUserId, + status: 'PENDING' + }, + include: { + receiver: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + return { + connections: formattedConnections, + receivedRequests: receivedRequests.map(r => ({ id: r.id, requester: r.requester, type: r.type, createdAt: r.createdAt })), + sentRequests: sentRequests.map(r => ({ id: r.id, receiver: r.receiver, type: r.type, createdAt: r.createdAt })) + }; + } + async sendRequest(req, body) { + const requesterId = req.user.id; + const { receiverId } = body; + if (requesterId === receiverId) { + throw new common_1.BadRequestException('Bạn không thể gửi lời mời kết nối cho chính mình.'); + } + const receiver = await this.prisma.user.findUnique({ where: { id: receiverId } }); + if (!receiver) { + throw new common_1.NotFoundException('Không tìm thấy người nhận.'); + } + const existing = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId, receiverId }, + { requesterId: receiverId, receiverId } + ] + } + }); + if (existing) { + if (existing.status === 'ACCEPTED') { + throw new common_1.BadRequestException('Hai bạn đã kết nối với nhau.'); + } + if (existing.status === 'PENDING') { + throw new common_1.BadRequestException('Yêu cầu kết nối đang chờ xử lý.'); + } + await this.prisma.userConnection.delete({ where: { id: existing.id } }); + } + const newConn = await this.prisma.userConnection.create({ + data: { + requesterId, + receiverId, + status: 'PENDING', + type: 'FRIEND' + } + }); + return { success: true, connection: newConn }; + } + async updateRequest(id, body, req) { + const currentUserId = req.user.id; + const conn = await this.prisma.userConnection.findUnique({ where: { id } }); + if (!conn) { + throw new common_1.NotFoundException('Không tìm thấy bản ghi kết nối.'); + } + if (body.status) { + if (conn.receiverId !== currentUserId) { + throw new common_1.ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + const updated = await this.prisma.userConnection.update({ + where: { id }, + data: { status: body.status } + }); + if (body.status === 'ACCEPTED') { + const receiverUser = await this.prisma.user.findUnique({ + where: { id: currentUserId }, + select: { name: true } + }); + this.commentGateway.notifyConnectionAccepted(conn.requesterId, { + connectionId: conn.id, + acceptedByName: receiverUser?.name || 'Ai đó', + acceptedById: currentUserId + }); + } + return { success: true, connection: updated }; + } + if (body.type) { + if (conn.requesterId !== currentUserId && conn.receiverId !== currentUserId) { + throw new common_1.ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + if (conn.status !== 'ACCEPTED') { + throw new common_1.BadRequestException('Chỉ có thể thay đổi phân nhóm sau khi đã chấp nhận kết nối.'); + } + const updated = await this.prisma.userConnection.update({ + where: { id }, + data: { type: body.type } + }); + return { success: true, connection: updated }; + } + throw new common_1.BadRequestException('Yêu cầu không hợp lệ.'); + } + async deleteConnection(id, req) { + const currentUserId = req.user.id; + const conn = await this.prisma.userConnection.findUnique({ where: { id } }); + if (!conn) { + throw new common_1.NotFoundException('Không tìm thấy bản ghi kết nối.'); + } + if (conn.requesterId !== currentUserId && conn.receiverId !== currentUserId) { + throw new common_1.ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + await this.prisma.userConnection.delete({ where: { id } }); + return { success: true, message: 'Đã hủy kết nối thành công.' }; + } +}; +__decorate([ + (0, common_1.Get)(), + __param(0, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], ConnectionController.prototype, "getConnections", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Req)()), + __param(1, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", Promise) +], ConnectionController.prototype, "sendRequest", null); +__decorate([ + (0, common_1.Patch)(':id'), + __param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Body)()), + __param(2, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object, Object]), + __metadata("design:returntype", Promise) +], ConnectionController.prototype, "updateRequest", null); +__decorate([ + (0, common_1.Delete)(':id'), + __param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object]), + __metadata("design:returntype", Promise) +], ConnectionController.prototype, "deleteConnection", null); +ConnectionController = __decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Controller)('connections'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService, + CommentGateway]) +], ConnectionController); +let DirectMessageController = class DirectMessageController { + constructor(prisma, commentGateway) { + this.prisma = prisma; + this.commentGateway = commentGateway; + } + async getMessages(userId, req) { + const currentUserId = req.user.id; + const conn = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId: currentUserId, receiverId: userId }, + { requesterId: userId, receiverId: currentUserId } + ], + status: 'ACCEPTED' + } + }); + if (!conn) { + throw new common_1.ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); + } + const messages = await this.prisma.directMessage.findMany({ + where: { + OR: [ + { senderId: currentUserId, receiverId: userId }, + { senderId: userId, receiverId: currentUserId } + ] + }, + orderBy: { createdAt: 'asc' } + }); + return messages; + } + async sendMessage(req, body) { + const senderId = req.user.id; + const { receiverId, content, attachmentUrl, latitude, longitude } = body; + if ((!content || !content.trim()) && !attachmentUrl && latitude === undefined) { + throw new common_1.BadRequestException('Tin nhắn phải có nội dung, ảnh đính kèm hoặc vị trí.'); + } + const conn = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId: senderId, receiverId: receiverId }, + { requesterId: receiverId, receiverId: senderId } + ], + status: 'ACCEPTED' + } + }); + if (!conn) { + throw new common_1.ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); + } + const message = await this.prisma.directMessage.create({ + data: { + senderId, + receiverId, + content: content || '', + attachmentUrl, + latitude, + longitude + }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + } + }); + this.commentGateway.notifyNewMessage(receiverId, message); + return message; + } +}; +__decorate([ + (0, common_1.Get)(':userId'), + __param(0, (0, common_1.Param)('userId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object]), + __metadata("design:returntype", Promise) +], DirectMessageController.prototype, "getMessages", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Req)()), + __param(1, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", Promise) +], DirectMessageController.prototype, "sendMessage", null); +DirectMessageController = __decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Controller)('messages'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService, + CommentGateway]) +], DirectMessageController); +let UploadController = class UploadController { + async uploadAttachment(files) { + if (!files || files.length === 0) { + throw new common_1.BadRequestException('Vui lòng chọn ảnh.'); + } + const file = files[0]; + const attachmentsDir = path.join(UPLOAD_ROOT, 'attachments'); + if (!fs.existsSync(attachmentsDir)) { + fs.mkdirSync(attachmentsDir, { recursive: true }); + } + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9); + const extension = path.extname(file.originalname).toLowerCase() || '.jpg'; + const filename = `${uniqueSuffix}${extension}`; + const filePath = path.join(attachmentsDir, filename); + fs.writeFileSync(filePath, file.buffer); + return { + url: `/uploads/attachments/${filename}` + }; + } +}; +__decorate([ + (0, common_1.Post)(), + (0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)('image', 1)), + __param(0, (0, common_1.UploadedFiles)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Array]), + __metadata("design:returntype", Promise) +], UploadController.prototype, "uploadAttachment", null); +UploadController = __decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Controller)('upload') +], UploadController); +let TourMessageController = class TourMessageController { + constructor(prisma, commentGateway) { + this.prisma = prisma; + this.commentGateway = commentGateway; + } + async getTourMessages(tourId, req) { + const userId = req.user.id; + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId } + }); + if (!participant) { + throw new common_1.ForbiddenException('Bạn không phải là thành viên của hành trình này.'); + } + const messages = await this.prisma.tourMessage.findMany({ + where: { tourId }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + }, + orderBy: { createdAt: 'asc' } + }); + return messages; + } + async sendTourMessage(tourId, req, body) { + const senderId = req.user.id; + const { content, attachmentUrl, latitude, longitude, taggedUserIds } = body; + console.log(`[sendTourMessage] senderId=${senderId}, tourId=${tourId}, taggedUserIds=`, taggedUserIds); + if ((!content || !content.trim()) && !attachmentUrl && latitude === undefined) { + throw new common_1.BadRequestException('Tin nhắn phải có nội dung, ảnh đính kèm hoặc vị trí.'); + } + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId: senderId } + }); + if (!participant) { + throw new common_1.ForbiddenException('Bạn không phải là thành viên của hành trình này.'); + } + const tourMessage = await this.prisma.tourMessage.create({ + data: { + tourId, + senderId, + content: content || '', + attachmentUrl, + latitude, + longitude + }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + } + }); + this.commentGateway.server.to(`tour_${tourId}`).emit('tourMessageReceived', { + tourId, + message: tourMessage + }); + const hasTags = Array.isArray(taggedUserIds) && taggedUserIds.length > 0; + const otherParticipants = await this.prisma.tourParticipant.findMany({ + where: { + tourId, + userId: { + not: senderId, + in: hasTags ? taggedUserIds : undefined + }, + NOT: { userId: null } + } + }); + console.log(`[sendTourMessage] otherParticipants found count: ${otherParticipants.length}`, otherParticipants.map(o => o.userId)); + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + for (const p of otherParticipants) { + if (p.userId) { + const isTagged = hasTags && taggedUserIds.includes(p.userId); + console.log(`[sendTourMessage] Emitting tourMessageNotification to user_${p.userId}, isTagged: ${isTagged}`); + this.commentGateway.server.to(`user_${p.userId}`).emit('tourMessageNotification', { + tourId, + senderName: req.user.name || 'Thành viên', + tourTitle: tour?.title || 'Hành trình', + content: isTagged ? `@Bạn: ${content || ''}` : content || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), + isTagged + }); + } + } + return tourMessage; + } +}; +__decorate([ + (0, common_1.Get)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object]), + __metadata("design:returntype", Promise) +], TourMessageController.prototype, "getTourMessages", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Req)()), + __param(2, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object, Object]), + __metadata("design:returntype", Promise) +], TourMessageController.prototype, "sendTourMessage", null); +TourMessageController = __decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Controller)('tours/:tourId/messages'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService, + CommentGateway]) +], TourMessageController); let AppModule = class AppModule { }; AppModule = __decorate([ @@ -2985,7 +3426,7 @@ AppModule = __decorate([ signOptions: { expiresIn: '1d' }, }), ], - controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController], + controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController], providers: [prisma_service_1.PrismaService, jwt_strategy_1.JwtStrategy, TourRoleGuard, jwt_auth_guard_1.JwtAuthGuard, admin_guard_1.AdminGuard, CommentGateway, core_2.Reflector, EmailService, config_1.ConfigService], exports: [prisma_service_1.PrismaService] }) diff --git a/backend/dist/src/main.js.map b/backend/dist/src/main.js.map index 298fe81..5001391 100644 --- a/backend/dist/src/main.js.map +++ b/backend/dist/src/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,uCAAyB;AACzB,+CAAiC;AACjC,2CAA6D;AAE7D,4BAA0B;AAC1B,2CAA6B;AAC7B,+BAAiC;AACjC,kDAA0B;AAC1B,kDAA0B;AAC1B,gEAAuC;AACvC,uCAA2C;AAC3C,2CAAwS;AAExS,+DAA4D;AAE5D,mDAAmI;AACnI,yCAA2C;AAC3C,6DAAyD;AACzD,2CAAiD;AACjD,+CAAiC;AACjC,oDAAgD;AAChD,uDAAyC;AACzC,qCAAoD;AACpD,0DAAqD;AACrD,sDAAkD;AAClD,uCAAyC;AACzC,2CAA4E;AAC5E,yDAAmE;AAEnE,qEAAqD;AAErD,oFAA+E;AAG/E,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAGtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;AAGjD,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,gBAAgB,CAAC,MAAc;QAC7B,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAGD,cAAc,CAAC,MAAc,EAAE,MAAc;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,EAAE,sBAAsB,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAGD,eAAe,CAAC,MAAc,EAAE,OAAe;QAC7C,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,EAAE,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,gBAAgB,CAAC,MAAc,EAAE,IAAS;QAExC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,qBAAqB,CAAC,OAAe,EAAE,IAAS;QAE9C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAGD,cAAc,CAAC,MAAc,EAAE,MAAc;QAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,EAAE,2BAA2B,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,gBAAgB,CAAC,UAAkB,EAAE,IAAS;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,wBAAwB,CAAC,WAAmB,EAAE,IAAS;QACrD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,yBAAyB,CAAC,MAAc,EAAE,IAAS;QACjD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;CACF,CAAA;AA9CY,wCAAc;AACN;IAAlB,IAAA,4BAAe,GAAE;8BAAS,kBAAM;8CAAC;AAOlC;IADC,IAAA,6BAAgB,EAAC,UAAU,CAAC;;qCACN,kBAAM;;oDAG5B;AAGD;IADC,IAAA,6BAAgB,EAAC,WAAW,CAAC;;qCACN,kBAAM;;qDAG7B;AAaD;IADC,IAAA,6BAAgB,EAAC,UAAU,CAAC;;qCACN,kBAAM;;oDAG5B;yBAjCU,cAAc;IAD1B,IAAA,6BAAgB,EAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;GAC/B,cAAc,CA8C1B;AAGD,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM;IACf,gBAAgB,EAAE,OAAO;IACzB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF,KAAK,UAAU,SAAS;IAGtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAyB,SAAS,CAAC,CAAC;IACxE,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE9B,GAAG,CAAC,UAAU,EAAE,CAAC;IAGjB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAGD,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE;QAC/B,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;AAChE,CAAC;AAGY,QAAA,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAwB,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,iBAAS,EAAE,KAAK,CAAC,CAAC;AAAvE,QAAA,KAAK,SAAkE;AAK7E,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACU,SAAoB,EACpB,MAAqB,EACE,YAAmB;QAF1C,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAe;QACE,iBAAY,GAAZ,YAAY,CAAO;IACjD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAoB,iBAAS,EAAE;YACnF,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAGH,MAAM,YAAY,GAAG,CAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QAE9F,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAG1F,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,eAAe,UAAU,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,WAAW,CAAC,CAAC;YAExE,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;oBAClD,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACnC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;iBAAM,CAAC;gBAER,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtG,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,UAAU,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBAEN,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtG,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBAEN,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;4BAChD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;4BACzB,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;yBAC/C,CAAC,CAAC;wBACH,IAAI,GAAG,EAAE,CAAC;4BACR,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC1B,CAAC;6BAAM,CAAC;4BAEN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC5H,IAAI,KAAK,EAAE,CAAC;gCACV,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE;oCAAE,OAAO,IAAI,CAAC;gCACtD,IAAI,CAAC,KAAK,CAAC,MAAM;oCAAE,OAAO,IAAI,CAAC;gCAC/B,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;4BACxB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAEC,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;wBACnD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBACnF,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBAC/E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAGrB,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,MAAM,YAAY,GAAG,aAAa,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC;QACtD,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAkB,YAAY,CAAC,CAAC;QAEtE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;gBACjE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;aACtD,CAAC,CAAC;YACH,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YACjC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;YAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,2BAAkB,CAAC,4DAA4D,CAAC,CAAC;QAC7F,CAAC;QAGD,IAAI,MAAM,EAAE,CAAC;YACV,OAAe,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1GY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAFH,gBAAS;QACZ,8BAAa;GAHpB,aAAa,CA0GzB;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB;QACE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,wHAAwH,CAAC,CAAC;QACzI,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;gBAC5C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,gBAAgB;gBAC/C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC;gBAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;gBAC1C,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,IAAI;iBACX;aACF,CAAC,CAAC;YAGH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,GAAW;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,8BAA8B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG;YAC5D,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE;;;;;;cAME,GAAG;;;;;;OAMV;SACF,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,SAAiB,EAAE,UAAkB;QAC3E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,8BAA8B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG;YAC5D,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,gCAAgC,SAAS,EAAE;YACpD,IAAI,EAAE;;;;oEAIwD,SAAS;;;uBAGtD,UAAU;;;;;+EAK8C,UAAU;;;;;OAKlF;SACF,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AAjGY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;;GACA,YAAY,CAiGxB;AAGD,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEjB,QAAQ;QACN,OAAO,iCAAiC,CAAC;IAC3C,CAAC;CACF,CAAA;AAHC;IADC,IAAA,YAAG,GAAE;;;;6CAGL;AAJG,aAAa;IADlB,IAAA,mBAAU,GAAE;GACP,aAAa,CAKlB;AAED,IACM,cAAc,GADpB,MACM,cAAc;IAClB,YACU,MAAqB,EACrB,UAAsB,EAKtB,aAA4B,EAC5B,YAA0B,EACH,YAAmB;QAR1C,WAAM,GAAN,MAAM,CAAe;QACrB,eAAU,GAAV,UAAU,CAAY;QAKtB,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAc;QACH,iBAAY,GAAZ,YAAY,CAAO;IACjD,CAAC;IAGE,AAAN,KAAK,CAAC,sBAAsB,CAAS,IAAS;QAC5C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEhD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,4BAAmB,CAAC,kDAAkD,CAAC,CAAC;QACpF,CAAC;QAGD,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,KAAK;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,IAAI,4BAAmB,CAAC,+CAA+C,CAAC,CAAC;QACjF,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,0BAAiB,CAAC,uEAAuE,CAAC,CAAC;QACvG,CAAC;QAGD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAChD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;YACtB,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,IAAI;gBAC5B,WAAW,EAAE,KAAK;aACnB;SACF,CAAC,CAAC;QAGH,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;QAClE,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE;gBACJ,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;SACF,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,EAAE;gBACJ,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;aAC7D;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACpD,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;SACF,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QACxD,OAAO,EAAE,cAAc,EAAE,SAAS,KAAK,CAAC,EAAE,CAAC;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,IAAS;QAC3B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,8BAAqB,CAAC,qCAAqC,CAAC,CAAC;QACzE,CAAC;QAGD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,8BAAqB,CAAC,+DAA+D,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAEpD,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAA4B;QACpD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,4BAAmB,CAAC,sCAAsC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oDAAoD,UAAU,EAAE,CAAC,CAAC;YAC/F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,8BAAqB,CAAC,4CAA4C,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;YAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,4BAAmB,CAAC,yCAAyC,CAAC,CAAC;YAC3E,CAAC;YAED,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,EAAE;wBACJ,KAAK;wBACL,IAAI;wBACJ,MAAM;wBACN,WAAW,EAAE,KAAK;qBACnB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,8BAAqB,CAAC,+DAA+D,CAAC,CAAC;YACnG,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACtB,IAAI,EAAE;wBACJ,WAAW,EAAE,KAAK;wBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;wBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;qBAC9B;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACvD,OAAO;gBACL,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,IAAI,EAAE;oBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,YAAY,8BAAqB,IAAI,KAAK,YAAY,4BAAmB,EAAE,CAAC;gBACnF,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,4BAAmB,CAAC,0CAA0C,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CAAS,IAAS;QACnC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAEvD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,YAAY;YAAE,MAAM,IAAI,4BAAmB,CAAC,uBAAuB,CAAC,CAAC;QAEzE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAGnE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAEhH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,4BAAmB,CAAC,+EAA+E,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CAAS,IAAsD;QAC/E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAErC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,cAAc,KAAK,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,4BAAmB,CAAC,yCAAyC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,eAAe,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,4BAAmB,CAAC,8DAA8D,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YAEZ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;aACvB,CAAC,CAAC;YACH,IAAI,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBAEvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;oBACpD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;iBACrC,CAAC,CAAC;gBACH,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,IAAI,4BAAmB,CAAC,+CAA+C,CAAC,CAAC;gBACjF,CAAC;gBAGD,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;oBACtB,IAAI,EAAE;wBACJ,KAAK;wBACL,YAAY;wBACZ,IAAI;wBACJ,KAAK;wBACL,OAAO;wBACP,WAAW,EAAE,KAAK;qBACnB;oBACD,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;iBACzF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,SAAS,KAAK,CAAC,CAAC;YAEtC,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE;gBAC3E,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,CAAC;SAC9C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAvQO;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACQ,WAAA,IAAA,aAAI,GAAE,CAAA;;;;4DAoDnC;AAGK;IADL,IAAA,aAAI,EAAC,cAAc,CAAC;;;;qDAkBpB;AAGK;IADL,IAAA,YAAG,EAAC,QAAQ,CAAC;;;;+CAKb;AAGK;IADL,IAAA,aAAI,EAAC,OAAO,CAAC;IACD,WAAA,IAAA,aAAI,GAAE,CAAA;;;;2CAwBlB;AAGK;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACI,WAAA,IAAA,aAAI,GAAE,CAAA;;;;iDAgExB;AAGK;IADL,IAAA,aAAI,EAAC,gBAAgB,CAAC;IACF,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAmB1B;AAGK;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACF,WAAA,IAAA,aAAI,GAAE,CAAA;;;;kDAgEzB;AApRG,cAAc;IADnB,IAAA,mBAAU,EAAC,MAAM,CAAC;IAWd,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCARN,8BAAa;QACT,gBAAU;QAKP,sBAAa;QACd,YAAY;GAThC,cAAc,CAqRnB;AAED,IACM,oBAAoB,GAD1B,MACM,oBAAoB;IACxB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAIvC,AAAN,KAAK,CAAC,oBAAoB,CAA6B,EAAU;QAC/D,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE;4BACJ,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;yBAC9C;qBACF;iBACF;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP,QAAQ,EAAE;4BACR,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;yBACjC;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAC5B,OAAO,EAAE;wBACP,QAAQ,EAAE;4BACR,OAAO,EAAE;gCACP,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;gCACxD,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;6BAC7C;yBACF;wBACD,SAAS,EAAE;4BACT,OAAO,EAAE;gCACP,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gCAChD,EAAE,SAAS,EAAE,KAAK,EAAE;6BACrB;4BACD,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;yBACpD;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,iBAAiB,CAAC,CAAC;YAC9E,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA9CO;IAFL,IAAA,wBAAe,EAAC,qDAAwB,CAAC;IACzC,IAAA,YAAG,EAAC,YAAY,CAAC;IACU,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;gEA6CrD;AAlDG,oBAAoB;IADzB,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEU,8BAAa;GADrC,oBAAoB,CAmDzB;AAED,IACM,cAAc,GADpB,MACM,cAAc;IAClB,YACU,MAAqB,EACrB,YAA0B,EACH,YAAmB,EAC1C,cAA8B;QAH9B,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAc;QACH,iBAAY,GAAZ,YAAY,CAAO;QAC1C,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAIE,AAAN,KAAK,CAAC,UAAU,CAAS,IAAS,EAAS,GAAQ;QACjD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC9G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,IAAI,EAAE;gBACJ,KAAK;gBACL,WAAW;gBACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3C,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,UAAU,EAAE,UAAU,IAAI,CAAC;gBAC3B,UAAU,EAAE,UAAU,IAAI,CAAC;gBAC3B,aAAa,EAAE,aAAa,IAAI,CAAC;gBACjC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACxB,YAAY,EAAE;oBACZ,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;4BACnB,IAAI,EAAE,OAAO;yBACd;wBACD,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;4BACnC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gCACvB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;gCACxB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;gCAClC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ;6BACzB,CAAC,CAAC;4BACL,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF;gBACD,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,QAAQ,EAAE,CAAC;wBACX,IAAI,EAAE,gBAAgB;qBACvB;iBACF;aACF;YACD,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;iBACrE;aACF;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAKK,AAAN,KAAK,CAAC,WAAW,CAAiC,MAAc,EAAU,IAAS,EAAS,GAAQ;QAClG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,oCAAoC,MAAM,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3G,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,0BAAiB,CAAC,+CAA+C,CAAC,CAAC;QAEvF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEjC,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;aAC/D;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;gBACrC,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAClF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/B,IAAI,EAAE;wBACJ,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wBAClC,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,OAAO;wBACzC,UAAU,EAAE,GAAG,CAAC,EAAE;wBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,WAAW,EAAE,IAAI,CAAC,kBAAkB,IAAI,eAAe,GAAG,CAAC,IAAI,EAAE;wBACjE,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;wBAC9B,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,oBAAoB,CAAiC,MAAc,EAAU,IAAS,EAAS,GAAQ;QAC3G,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,6BAA6B,MAAM,MAAM,IAAI,SAAS,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;QAI9H,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,KAAK,EAAE;gBACL,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBACvB,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;aAC1B;SACF,CAAC,CAAC;QAGH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,0BAAiB,CAAC,4CAA4C,CAAC,CAAC;QAGzF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,IAAI,gBAAgB;gBAC9B,QAAQ;gBACR,SAAS;gBACT,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,QAAQ,CAAC,EAAE;gBAClB,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACzB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;aACrD;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,kBAAkB,CAAiC,MAAc,EAAU,IAAS,EAAS,GAAQ;QACzG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,2BAA2B,MAAM,MAAM,IAAI,SAAS,QAAQ,KAAK,SAAS,GAAG,CAAC,CAAC;QAG5H,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,KAAK,EAAE;gBACL,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBACvB,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;aACxB;SACF,CAAC,CAAC;QAGH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9C,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,0BAAiB,CAAC,6CAA6C,CAAC,CAAC;QAEzF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,IAAI,eAAe;gBAC7B,QAAQ;gBACR,SAAS;gBACT,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO,CAAC,EAAE;gBACjB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1D,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;aACxB;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,cAAc,CAAiC,MAAc,EAAU,IAAuB;QAClG,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YAAE,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,CAAC,CAAC;QAGlG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClD,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;QAGH,MAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM;gBACN,QAAQ,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;gBACrC,IAAI,EAAE,SAAS,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE;aAC7C,CAAC,CAAC,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAGD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAG5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YACpD,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;SACpD,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;gBAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAKK,AAAN,KAAK,CAAC,MAAM,CAAiC,MAAc,EAAU,IAAS;QAC5E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,IAAI,EAAE;gBACJ,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;aACnD;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CAA6B,EAAU,EAAU,IAAS;QAExE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1D,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC/E,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC/E,aAAa,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;aACzF;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC;aACpD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CAA6B,EAAU;QAErD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE;oBACJ,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBAC7B;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QAI9D,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAGD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEjD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;QAID,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACpF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAGD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACrB,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAGH,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAErD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAKK,AAAN,KAAK,CAAC,cAAc,CAAQ,GAAQ;QAElC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,EAAE;YACR,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;iBACxD;gBACD,YAAY,EAAE;oBACZ,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;oBACjD,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;iBACrB;gBACD,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACnB,IAAI,EAAE;oBACJ,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAC5B,OAAO,EAAE;wBACP,SAAS,EAAE;4BACT,OAAO,EAAE;gCACP,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gCAChD,EAAE,SAAS,EAAE,KAAK,EAAE;6BACrB;4BACD,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;yBACpD;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,cAAc,CAA6B,EAAU;QACzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,OAAO,EAAE;wBACP,IAAI,EAAE;4BACJ,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;yBAC9C;qBACF;iBACF;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP,QAAQ,EAAE;4BACR,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;yBACjC;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;oBAC5B,OAAO,EAAE;wBACP,QAAQ,EAAE;4BACR,OAAO,EAAE;gCACP,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;gCACxD,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;6BAC7C;yBACF;wBACD,SAAS,EAAE;4BACT,OAAO,EAAE;gCACP,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gCAChD,EAAE,SAAS,EAAE,KAAK,EAAE;6BACrB;4BACD,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;yBACpD;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAKK,AAAN,KAAK,CAAC,SAAS,CAAiC,MAAc,EAAU,IAA8D,EAAS,GAAQ;QACrJ,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAU,CAAC;QAC/F,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAA4E,CAAC,CAAC,CAAC,QAAQ,CAAC;QAElJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBAC7D,IAAI,EAAE;oBACJ,MAAM;oBACN,IAAI;oBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;gBACD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;aACrE,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAAC,2CAA2C,CAAC,CAAC;QAC7E,CAAC;QAGD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAElE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YACjE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;SAC1D,CAAC,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBACxC,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;gBACzD,IAAI,EAAE,EAAE,IAAI,EAAE;gBACd,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;aACrE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;gBACjE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;aAC1D,CAAC,CAAC;YACH,WAAW,GAAG,aAAa,EAAE,IAAI,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;YAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACvD,IAAI,EAAE;oBACJ,MAAM;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1B,MAAM,EAAE,SAAS;iBAClB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACvD,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;iBAC/D;aACF,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YACxC,IAAI,EAAE;gBACJ,MAAM;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI;aACL;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,kBAAkB,CACU,MAAc,EACd,MAAc,EACtC,IAAiE,EAClE,GAAQ;QAEf,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9D,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,EAAE,EAAE,MAAM,EAAE;oBACd,EAAE,MAAM,EAAE,MAAM,EAAE;iBACnB;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,0BAAiB,CAAC,uCAAuC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC;QAGlD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YAC1E,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;SAC1D,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,sBAAsB,EAAE,IAAI,KAAK,OAAO,IAAI,sBAAsB,EAAE,IAAI,KAAK,SAAS,CAAC;QAEzG,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,2BAAkB,CAAC,wDAAwD,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;gBAAE,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,CAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;gBAAE,MAAM,IAAI,4BAAmB,CAAC,gCAAgC,CAAC,CAAC;YACzF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAU,CAAC;YAC/F,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAW,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QAGD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;SACxD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YACxC,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE;YAC7B,IAAI;YACJ,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,eAAe,CAAiC,MAAc,EAAS,GAAQ;QACnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YACtD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;YACpC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9B,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvD,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;aAC/D;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAIK,AAAN,KAAK,CAAC,iBAAiB,CAAiC,MAAc,EAAU,IAAyB,EAAS,GAAQ;QACxH,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAEpD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YACzE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE;SAC/D,CAAC,CAAC;QACH,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,IAAI,4BAAmB,CAAC,2CAA2C,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;YAC7D,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/D,CAAC,CAAC;QACH,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACvD,IAAI,EAAE;gBACJ,MAAM;gBACN,MAAM,EAAE,gBAAgB;gBACxB,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1B,MAAM,EAAE,SAAS;aAClB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvD,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;aAC/D;SACF,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAKK,AAAN,KAAK,CAAC,iBAAiB,CAAiC,MAAc,EAAsB,SAAiB,EAAS,GAAQ;QAC5H,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;gBACjE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;aAC1D,CAAC,CAAC;YACH,IAAI,GAAG,aAAa,EAAE,IAAI,CAAC;QAC7B,CAAC;QACD,IAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,2BAAkB,CAAC,gDAAgD,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YAC3D,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,0BAAiB,CAAC,kCAAkC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YAC5D,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE;SACjE,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACnC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aAC7B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC;QAC3F,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE;oBACJ,MAAM;oBACN,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,IAAI,EAAE,QAAQ;iBACf;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACxB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aAC7B,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,WAAW,CAAC,MAAM,EAAE;YAChE,MAAM;YACN,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY;YACtC,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACtE,CAAC;IAKK,AAAN,KAAK,CAAC,iBAAiB,CAAiC,MAAc,EAAsB,SAAiB,EAAS,GAAQ;QAC5H,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;gBACjE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;aAC1D,CAAC,CAAC;YACH,IAAI,GAAG,aAAa,EAAE,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,2BAAkB,CAAC,8CAA8C,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YAC3D,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,0BAAiB,CAAC,kCAAkC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACxB,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAC7B,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;IACpE,CAAC;IAKK,AAAN,KAAK,CAAC,YAAY,CAAiC,MAAc,EAAkC,MAAc;QAC/G,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9D,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,EAAE,EAAE,MAAM,EAAE;oBACd,EAAE,MAAM,EAAE,MAAM,EAAE;iBACnB;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,0BAAiB,CAAC,oCAAoC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;SACxD,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE;SAC9B,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,CAAC;IAMK,AAAN,KAAK,CAAC,YAAY,CAAiC,MAAc,EAAmB,KAAY,EAAS,GAAQ;QAC/G,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,4BAAmB,CAAC,+BAA+B,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAErF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAGxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAGxF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;YACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC;YAClF,MAAM,gBAAgB,GAAG,GAAG,YAAY,GAAG,iBAAiB,EAAE,CAAC;YAC/D,MAAM,eAAe,GAAG,GAAG,YAAY,MAAM,CAAC;YAE9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAGpE,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAG3D,IAAI,GAAuB,CAAC;YAC5B,IAAI,GAAuB,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACjF,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;oBACnB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAGD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzF,GAAG,GAAG,OAAO,CAAC;oBACd,GAAG,GAAG,OAAO,CAAC;gBAChB,CAAC;YACH,CAAC;YAGD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,GAAG,GAAG,OAAO,CAAC;gBACd,GAAG,GAAG,QAAQ,CAAC;YACjB,CAAC;YAGD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC;YAC1L,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,aAAa,GAAG,MAAM,IAAA,sBAAW,EAAC;wBAChC,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,CAAC;qBACX,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClG,CAAC;YACH,CAAC;YAGD,MAAM,IAAA,eAAK,EAAC,aAAa,CAAC;iBACvB,MAAM,EAAE;iBACR,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;gBAClB,GAAG,EAAE,QAAQ;gBACb,kBAAkB,EAAE,IAAI;aACzB,CAAC;iBACD,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;iBACrB,MAAM,CAAC,eAAe,CAAC,CAAC;YAG3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM;oBACd,UAAU,EAAE,UAAU;oBACtB,QAAQ,EAAE,kBAAkB,eAAe,EAAE;oBAC7C,WAAW,EAAE,oBAAoB,UAAU,cAAc,gBAAgB,EAAE;oBAC3E,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE;wBACR,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,GAAG;qBACT;iBACF;aACF,CAAC,CAAC;QACP,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAKK,AAAN,KAAK,CAAC,gBAAgB,CACY,MAAc,EACtC,IAA+C,EAChD,GAAQ;QAEf,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,wBAAe,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,4BAAmB,CAAC,8BAA8B,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,0BAAiB,CAAC,4BAA4B,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;gBACvE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE;aAC7D,CAAC,CAAC;YACH,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,IAAI,4BAAmB,CAAC,2CAA2C,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YACzD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;YAClC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;SAClD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,uBAAuB,CAAC;QACnE,MAAM,UAAU,GAAG,GAAG,MAAM,oBAAoB,KAAK,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,4BAAmB,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IACvE,CAAC;IAIK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAuB,EAAS,GAAQ;QAChE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,4BAAmB,CAAC,kCAAkC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;YAC7D,KAAK,EAAE,EAAE,KAAK,EAAE;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,sCAAsC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,UAAU,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YACd,MAAM,IAAI,4BAAmB,CAAC,qBAAqB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3B,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YACzE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;SAChE,CAAC,CAAC;QAEH,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YAEd,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,SAAS,CAAC;gBAClE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC;gBAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;aAClE,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,oCAAoC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC1H,CAAC;QAGD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,SAAS,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC;SAC/C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBACjC,IAAI,EAAE;oBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,MAAM;oBACN,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBAChC,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;aAC7B,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,+BAA+B,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAC9I,CAAC;IAKK,AAAN,KAAK,CAAC,WAAW,CACiB,MAAc,EACtC,IAA2D,EAC5D,GAAQ;QAEf,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,mBAAmB,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,4BAAmB,CAAC,wDAAwD,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;YACpE,KAAK,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,0BAAiB,CAAC,mDAAmD,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;YACrE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,0BAAiB,CAAC,0DAA0D,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEvF,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE;gBACnC,IAAI,EAAE;oBACJ,UAAU,EAAE,SAAS;oBACrB,UAAU,EAAE,SAAS;oBACrB,IAAI,EAAE,iBAAiB,CAAC,IAAI,KAAK,wBAAe,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI;iBAC1G;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;gBACjC,KAAK,EAAE,EAAE,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE;aACpC,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,YAAY,IAAI,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,MAAM,SAAS,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,CAAC;SAC/C,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC;IAC3F,CAAC;CACF,CAAA;AAthCO;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,aAAI,GAAE;IACW,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gDA2CzC;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,CAAC;IAC7E,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,mBAAmB,CAAC;IACP,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAoD1F;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,qBAAqB,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;0DAyCnG;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,mBAAmB,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wDAuCjG;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,oBAAoB,CAAC;IACL,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;oDA+C3E;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,cAAc,CAAC;IACP,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;4CAqBnE;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,cAAK,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAsB/D;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,CAAC;IAC5B,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,eAAM,EAAC,KAAK,CAAC;IACI,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;gDA8D3C;AAKK;IAHL,IAAA,wBAAe,EAAC,qDAAwB,CAAC;IACzC,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,YAAG,EAAC,SAAS,CAAC;IACO,WAAA,IAAA,YAAG,GAAE,CAAA;;;;oDA2B1B;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,EAAE,wBAAe,CAAC,iBAAiB,EAAE,wBAAe,CAAC,WAAW,CAAC;IAC7I,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,YAAG,EAAC,KAAK,CAAC;IACW,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;oDAyC/C;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACP,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;IAAkE,WAAA,IAAA,YAAG,GAAE,CAAA;;;;+CAsE7I;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,EAAE,wBAAe,CAAC,iBAAiB,EAAE,wBAAe,CAAC,WAAW,CAAC;IAC7I,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,cAAK,EAAC,yBAAyB,CAAC;IAE9B,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAC9B,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAC9B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wDAyDP;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,YAAG,EAAC,uBAAuB,CAAC;IACN,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;qDAW3E;AAIK;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,aAAI,EAAC,uBAAuB,CAAC;IACL,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,aAAI,GAAE,CAAA;IAA6B,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDA+BhH;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,yCAAyC,CAAC;IACvB,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAAqB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDA6DpH;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,CAAC;IAC5B,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,yCAAyC,CAAC;IACvB,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAAqB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDA4BpH;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,eAAM,EAAC,yBAAyB,CAAC;IACd,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;;;;kDA0BjG;AAMK;IAJL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,EAAE,wBAAe,CAAC,iBAAiB,CAAC;IAChH,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,gBAAgB,CAAC;IACtB,IAAA,wBAAe,EAAC,IAAA,mCAAgB,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5B,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;kDAmGvG;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,qBAAqB,CAAC;IAEzB,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAC9B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;sDA6CP;AAIK;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,aAAI,EAAC,eAAe,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;IAA2B,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAkExD;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,uBAAuB,CAAC;IAE3B,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAC9B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDA+CP;AA/hCG,cAAc;IADnB,IAAA,mBAAU,EAAC,OAAO,CAAC;IAKf,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAFN,8BAAa;QACP,YAAY,UAEV,cAAc;GALpC,cAAc,CAgiCnB;AAED,IAEM,kBAAkB,GAFxB,MAEM,kBAAkB;IACtB,YAAoB,MAAqB,EAAiC,YAAmB;QAAzE,WAAM,GAAN,MAAM,CAAe;QAAiC,iBAAY,GAAZ,YAAY,CAAO;IAAG,CAAC;IAI3F,AAAN,KAAK,CAAC,cAAc,CAA6B,EAAU,EAAU,IAAS,EAAS,GAAQ;QAC7F,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;gBACzE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnE,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC,CAAC;QAEH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YACrC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1D,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;aAC1B,CAAC,CAAC;YAEH,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/B,KAAK,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE;oBACjC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,IAAI,OAAO,EAAE;iBACvD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC/B,IAAI,EAAE;wBACJ,MAAM;wBACN,QAAQ,EAAE,eAAe,IAAI,OAAO;wBACpC,UAAU,EAAE,EAAE;wBACd,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,WAAW,EAAE,eAAe,QAAQ,CAAC,IAAI,EAAE;qBAC5C;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,SAAS,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAIK,AAAN,KAAK,CAAC,cAAc,CAA6B,EAAU,EAAS,GAAQ;QAC1E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;QAEb,CAAC;QAGD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAEjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,SAAS,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAxEO;IAFL,IAAA,cAAK,EAAC,KAAK,CAAC;IACZ,IAAA,kBAAS,EAAC,aAAa,CAAC;IACH,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wDAiDrF;AAIK;IAFL,IAAA,eAAM,EAAC,KAAK,CAAC;IACb,IAAA,kBAAS,EAAC,aAAa,CAAC;IACH,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wDAkBlE;AA5EG,kBAAkB;IAFvB,IAAA,mBAAU,EAAC,WAAW,CAAC;IACvB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IAEsB,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAArC,8BAAa;GADrC,kBAAkB,CA6EvB;AAED,IAGM,aAAa,GAHnB,MAGM,aAAa;IACjB,YAAoB,MAAqB,EAAiC,YAAmB;QAAzE,WAAM,GAAN,MAAM,CAAe;QAAiC,iBAAY,GAAZ,YAAY,CAAO;IAAG,CAAC;IAI3F,AAAN,KAAK,CAAC,SAAS,CAA6B,EAAU,EAAU,IAAS,EAAS,GAAQ;QACxF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1D,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACpB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,SAAS,CAAC;aAC5D,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CAA6B,EAAU;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YAC3C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,GAAG,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,4BAAmB,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAEjD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,MAAM,SAAS,CAAC;iBACnE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;QAEb,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAjDO;IAFL,IAAA,cAAK,EAAC,KAAK,CAAC;IACZ,IAAA,kBAAS,EAAC,aAAa,CAAC;IACR,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;8CAkBhF;AAIK;IAFL,IAAA,eAAM,EAAC,KAAK,CAAC;IACb,IAAA,kBAAS,EAAC,aAAa,CAAC;IACR,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;;;;8CA0B1C;AArDG,aAAa;IAHlB,IAAA,mBAAU,EAAC,MAAM,CAAC;IAClB,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IAEO,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAArC,8BAAa;GADrC,aAAa,CAsDlB;AAKD,SAAS,iBAAiB,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;IAC/E,MAAM,CAAC,GAAG,oBAAoB,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QAC9B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,IAGM,iBAAiB,GAHvB,MAGM,iBAAiB;IACrB,YAAoB,MAAqB,EAAiC,YAAmB;QAAzE,WAAM,GAAN,MAAM,CAAe;QAAiC,iBAAY,GAAZ,YAAY,CAAO;IAAG,CAAC;IAI3F,AAAN,KAAK,CAAC,QAAQ,CAAgC,KAAa,EAAS,GAAQ;QAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,0BAAiB,CAAC,sBAAsB,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACpD,KAAK,EAAE,EAAE,KAAK,EAAE;SACjB,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAGvE,IAAI,WAAW,GAAQ,IAAI,CAAC;QAG5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9C,KAAK,EAAE;gBACL,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ,GAAG,CAAC;aAClC;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE;wBAC/B,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;wBAChD,EAAE,SAAS,EAAE,KAAK,EAAE;qBACrB,EAAE,EAAE;SACN,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC/B,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QAGlF,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;QAGjC,IAAI,OAAY,CAAC;QACjB,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACxH,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,CAAC;oBACZ,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CACpE,CAAC,KAAK,EAAG,CAAC;QACb,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,OAAO,GAAG,QAAQ,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAChH,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,CAAC;oBACZ,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAGD,IAAI,aAAa,GAAG,CAAC,CAAC;QAGtB,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,IAAI,iBAAiB,CAChC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,EAC3C,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;QACJ,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,aAAa,IAAI,iBAAiB,CAChC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC;QACJ,CAAC;QAGD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;YACrB,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,OAAO,CAAC,EAAE;SACvE,CAAC,CACH,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC3D,KAAK,EAAE,EAAE,KAAK,EAAE;YAChB,OAAO,EAAE;gBACP,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChD,EAAE,SAAS,EAAE,KAAK,EAAE;aACrB;SACF,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,MAAM,SAAS,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,SAAS,EAAE,gBAAgB;YAC3B,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC;CACF,CAAA;AAvHO;IAFL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,kBAAS,EAAC,aAAa,CAAC;IACT,WAAA,IAAA,cAAK,EAAC,OAAO,EAAE,sBAAa,CAAC,CAAA;IAAiB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAsHlE;AA3HG,iBAAiB;IAHtB,IAAA,mBAAU,EAAC,SAAS,CAAC;IACrB,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IAEO,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAArC,8BAAa;GADrC,iBAAiB,CA4HtB;AAED,IAGM,eAAe,GAHrB,MAGM,eAAe;IACnB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAKvC,AAAN,KAAK,CAAC,oBAAoB,CAAkB,KAAY,EAAS,GAAQ;QACvE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,4BAAmB,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAGzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,2BAAkB,CAAC,wDAAwD,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC;QAClF,MAAM,gBAAgB,GAAG,GAAG,YAAY,GAAG,iBAAiB,EAAE,CAAC;QAC/D,MAAM,eAAe,GAAG,GAAG,YAAY,MAAM,CAAC;QAE9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAGxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAGD,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAG3D,IAAI,GAAuB,CAAC;QAC5B,IAAI,GAAuB,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACjF,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;gBACnB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;QAGD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEhF,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzF,GAAG,GAAG,OAAO,CAAC;gBACd,GAAG,GAAG,OAAO,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,uDAAuD,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAGD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,GAAG,GAAG,OAAO,CAAC;YACd,GAAG,GAAG,QAAQ,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,uEAAuE,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;QACxG,CAAC;QAGD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC;QAC1L,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,IAAA,sBAAW,EAAC;oBAChC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,CAAC;iBACX,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAGD,MAAM,IAAA,eAAK,EAAC,aAAa,CAAC;aACvB,MAAM,EAAE;aACR,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aAC/D,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;aACrB,MAAM,CAAC,eAAe,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9B,IAAI,EAAE;gBACJ,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,kBAAkB,eAAe,EAAE;gBAC7C,WAAW,EAAE,oBAAoB,UAAU,cAAc,gBAAgB,EAAE;gBAC3E,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE;oBACR,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,GAAG;iBACT;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAA6B,EAAU,EAAS,GAAQ;QACvE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QAGD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1D,MAAM,IAAI,2BAAkB,CAAC,iCAAiC,CAAC,CAAC;QAClE,CAAC;QAGD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACpF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAGD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CACa,EAAU,EAC9B,IAAqF,EACtF,GAAQ;QAEf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QAGD,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1D,MAAM,IAAI,2BAAkB,CAAC,yDAAyD,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,eAAe,GAAI,KAAK,CAAC,QAAgB,IAAI,EAAE,CAAC;QACtD,MAAM,eAAe,GAAG;YACtB,GAAG,eAAe;YAClB,GAAG,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG;YACtE,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG;YACxE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK;YACpE,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW;SAC7F,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,QAAQ,EAAE,eAAe;aAC1B;SACF,CAAC,CAAC;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,eAAe,CAA6B,EAAU,EAAS,GAAQ;QAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,eAAe,GAAI,KAAK,CAAC,QAAgB,IAAI,EAAE,CAAC;QACtD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;YAC9D,CAAC,CAAC,eAAe,CAAC,YAAY;YAC9B,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,mBAAmB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QAE5C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAEf,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YAEN,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,eAAe,GAAG;YACtB,GAAG,eAAe;YAClB,YAAY,EAAE,mBAAmB;SAClC,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,QAAQ,EAAE,eAAe;aAC1B;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE;oBACR,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;iBACjC;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA1NO;IAHL,IAAA,aAAI,EAAC,kBAAkB,CAAC;IACxB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,wBAAe,EAAC,IAAA,mCAAgB,EAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACnB,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;2DAoG/D;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;kDAgC/D;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IAEV,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAC1B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;kDA8BP;AAIK;IAFL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACD,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;sDA0CnE;AA/NG,eAAe;IAHpB,IAAA,mBAAU,EAAC,QAAQ,CAAC;IACpB,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,EAAE,wBAAe,CAAC,iBAAiB,CAAC;IAChH,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;qCAET,8BAAa;GADrC,eAAe,CAgOpB;AAED,IAGM,cAAc,GAHpB,MAGM,cAAc;IAClB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAGvC,AAAN,KAAK,CAAC,WAAW,CAAQ,GAAQ,EAAc,CAAU;QACvD,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5C,KAAK,EAAE;gBACL,WAAW,EAAE,KAAK;gBAClB,GAAG,CAAC,CAAC;oBACH,CAAC,CAAC;wBACE,EAAE,EAAE;4BACF,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,aAAoB,EAAE,EAAE;4BACrD,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,aAAoB,EAAE,EAAE;yBACvD;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR;YACD,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC3H,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;IAC1D,CAAC;IAKK,AAAN,KAAK,CAAC,WAAW,CAAQ,GAAQ;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;YAClC,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;aAClC;YACD,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAA6B,EAAU,EAAU,IAAS,EAAS,GAAQ;QACzF,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;QAGhC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;QAID,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAClD,MAAM,IAAI,2BAAkB,CAAC,yEAAyE,CAAC,CAAC;QAC1G,CAAC;QAGD,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,2BAAkB,CAAC,4CAA4C,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAGD,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;SAC9E,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CAA6B,EAAU,EAAS,GAAQ;QACtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,2BAA2B,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,UAAU,IAAI,CAAC;gBAAE,MAAM,IAAI,4BAAmB,CAAC,uCAAuC,CAAC,CAAC;QAC9F,CAAC;QAGD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAGxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC9C,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;SAC1B,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACpF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;oBAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAGD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAGjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IAKK,AAAN,KAAK,CAAC,WAAW,CAA6B,EAAU,EAAS,GAAQ;QACvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,0BAA0B,CAAC,CAAC;QAGnE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;SAC/D,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AAjIO;IADL,IAAA,YAAG,GAAE;IACa,WAAA,IAAA,YAAG,GAAE,CAAA;IAAY,WAAA,IAAA,cAAK,EAAC,GAAG,CAAC,CAAA;;;;iDAiB7C;AAKK;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,YAAG,EAAC,WAAW,CAAC;IACE,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAQvB;AAIK;IAFL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,cAAK,EAAC,KAAK,CAAC;IACK,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAa,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gDAmCjF;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,CAAC;IAC5B,IAAA,eAAM,EAAC,KAAK,CAAC;IACb,IAAA,kBAAS,EAAC,wBAAU,CAAC;IACJ,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gDAkC9D;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;IACrD,IAAA,aAAI,EAAC,WAAW,CAAC;IACjB,IAAA,kBAAS,EAAC,wBAAU,CAAC;IACH,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAe/D;AApIG,cAAc;IAHnB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,EAAC,OAAO,CAAC;IACnB,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,CAAC;qCAExB,8BAAa;GADrC,cAAc,CAqInB;AAID,IACM,iBAAiB,GADvB,MACM,iBAAiB;IACrB,YACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAIE,AAAN,KAAK,CAAC,WAAW,CAAqC,UAAkB;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClC,KAAK,EAAE,EAAE,UAAU,EAAE;YACrB,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;aACjC;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAKK,AAAN,KAAK,CAAC,UAAU,CACsB,UAAkB,EAC9C,IAAyB,EAC1B,GAAQ;QAEf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE;gBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU;gBACV,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;aACpB;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;SAC9C,CAAC,CAAC;QAGH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;YACzB,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;SAC/C,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;gBACxD,GAAG,OAAO;gBACV,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AA1CO;IAFL,IAAA,YAAG,EAAC,sBAAsB,CAAC;IAET,WAAA,IAAA,cAAK,EAAC,YAAY,EAAE,sBAAa,CAAC,CAAA;;;;oDAQpD;AAKK;IAHL,IAAA,aAAK,EAAC,wBAAe,CAAC,KAAK,EAAE,wBAAe,CAAC,OAAO,EAAE,wBAAe,CAAC,MAAM,EAAE,wBAAe,CAAC,iBAAiB,EAAE,wBAAe,CAAC,WAAW,CAAC;IAC7I,IAAA,kBAAS,EAAC,6BAAY,EAAE,aAAa,CAAC;IACtC,IAAA,aAAI,EAAC,sBAAsB,CAAC;IAE1B,WAAA,IAAA,cAAK,EAAC,YAAY,EAAE,sBAAa,CAAC,CAAA;IAClC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;mDAyBP;AAjDG,iBAAiB;IADtB,IAAA,mBAAU,EAAC,WAAW,CAAC;qCAGJ,8BAAa;QACL,cAAc;GAHpC,iBAAiB,CAkDtB;AAED,IAEM,kBAAkB,GAFxB,MAEM,kBAAkB;IACtB,YACU,MAAqB,EACrB,YAA0B,EACH,YAAmB;QAF1C,WAAM,GAAN,MAAM,CAAe;QACrB,iBAAY,GAAZ,YAAY,CAAc;QACH,iBAAY,GAAZ,YAAY,CAAO;IACjD,CAAC;IAGE,AAAN,KAAK,CAAC,aAAa,CAAS,IAAuB,EAAS,GAAQ;QAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAGvB,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;QAC1F,MAAM,aAAa,GAAG,gBAAgB,KAAK,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,aAAa,QAAQ,EAAE,CAAC;QAG3C,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,sBAAa,CACrB,uEAAuE,EACvE,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,0BAAiB,CAAC,yCAAyC,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC;QAEnC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAG5C,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;gBACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC;aAC/C,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,KAAK,cAAc,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,IAAI,4BAAmB,CAAC,+DAA+D,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAS,IAAoC;QAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,aAAa,KAAK,EAAE,CAAC;QAC1C,MAAM,mBAAmB,GAAG,CAAC,CAAC;QAG9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,0BAA0B,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,2BAAkB,CAAC,kEAAkE,CAAC,CAAC;QACnG,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,4BAAmB,CAAC,gEAAgE,CAAC,CAAC;QAClG,CAAC;QAGD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAEtB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;aACpC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;QACnE,CAAC;aAAM,CAAC;YAEN,IAAI,KAAK,GAAW,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAS,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7E,KAAK,EAAE,CAAC;YAER,IAAI,KAAK,IAAI,mBAAmB,EAAE,CAAC;gBAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC5B,KAAK,EAAE,EAAE,KAAK,EAAE;oBAChB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBAC1B,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEzC,MAAM,IAAI,2BAAkB,CAAC,uBAAuB,mBAAmB,wCAAwC,CAAC,CAAC;YACnH,CAAC;iBAAM,CAAC;gBAEN,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM,IAAI,4BAAmB,CAAC;oBAC5B,OAAO,EAAE,mCAAmC,mBAAmB,GAAG,KAAK,WAAW;oBAClF,iBAAiB,EAAE,mBAAmB,GAAG,KAAK;iBAC/C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AApGO;IADL,IAAA,aAAI,EAAC,MAAM,CAAC;IACQ,WAAA,IAAA,aAAI,GAAE,CAAA;IAA2B,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDA6C1D;AAGK;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAmDtB;AA3GG,kBAAkB;IAFvB,IAAA,mBAAU,EAAC,WAAW,CAAC;IACvB,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IAK/B,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;qCAFN,8BAAa;QACP,YAAY;GAHhC,kBAAkB,CA4GvB;AAED,IAEM,eAAe,GAFrB,MAEM,eAAe;IACnB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAGvC,AAAN,KAAK,CAAC,cAAc;QAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC9C,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CACjD,CAAC;QAGF,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YAChC,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAEjC,MAAM,WAAW,GAAU,EAAE,CAAC;QAG9B,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7F,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEtD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEjF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,IAAI,CAAC;oBACH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBACpC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBAEd,WAAW,CAAC,IAAI,CAAC;oBACf,QAAQ,EAAE,QAAQ;oBAClB,GAAG,EAAE,YAAY;oBACjB,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,wDAAwD;oBAChE,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAGD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QACnF,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YAChB,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YAChB,CAAC;YAED,WAAW,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,GAAG,EAAE,OAAO,CAAC,QAAQ;gBACrB,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,kDAAkD;gBAC1D,IAAI,EAAE,aAAa;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC;wBACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC7B,YAAY,EAAE,CAAC;wBACf,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;oBAC1B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7E,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;wBACpF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;4BACnC,IAAI,CAAC;gCAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;4BAAC,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;wBACtD,CAAC;oBACH,CAAC;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;wBACxF,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;4BACpC,IAAI,CAAC;gCAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;4BAAC,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;wBACvD,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC3D,YAAY,EAAE,CAAC;wBACf,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;oBAC1B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,iCAAiC,YAAY,oBAAoB,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACvH,YAAY;YACZ,UAAU;SACX,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CAAS,IAA2E;QACzG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEpC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,4BAAmB,CAAC,gCAAgC,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,2BAAkB,CAAC,mDAAmD,CAAC,CAAC;YACpF,CAAC;YAED,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,4BAAmB,CAAC,yBAAyB,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,0BAAiB,CAAC,2CAA2C,CAAC,CAAC;YAErF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACpF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC;wBAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBAAC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxF,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC;wBAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;oBAAC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;QACtF,CAAC;QAED,MAAM,IAAI,4BAAmB,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AAvLO;IADL,IAAA,YAAG,GAAE;;;;qDA8FL;AAGK;IADL,IAAA,eAAM,EAAC,OAAO,CAAC;;;;uDA6Cf;AAGK;IADL,IAAA,eAAM,EAAC,eAAe,CAAC;IACC,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAuC9B;AA1LG,eAAe;IAFpB,IAAA,mBAAU,EAAC,oBAAoB,CAAC;IAChC,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;qCAEN,8BAAa;GADrC,eAAe,CA2LpB;AAED,IACM,qBAAqB,GAD3B,MACM,qBAAqB;IACzB,YACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAGE,AAAN,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC5B,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;qBACX;iBACF;aACF;YACD,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB,CAAkC,OAAe;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;YAClC,KAAK,EAAE,EAAE,OAAO,EAAE;YAClB,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;iBACjC;aACF;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAIK,AAAN,KAAK,CAAC,eAAe,CACc,OAAe,EACxC,IAAyB,EAC1B,GAAQ;QAEf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,4BAAmB,CAAC,yCAAyC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/C,IAAI,EAAE;gBACJ,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACvB,OAAO;gBACP,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;aACpB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;iBACjC;aACF;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5D,OAAO,OAAO,CAAC;IACjB,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACmB,OAAe,EACzC,GAAQ,EACR,GAAQ;QAEf,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/C,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,qBAAqB,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAGrE,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,GAAG,mBAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClI,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAClF,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,IAAI,EAAE,CAAC;QAGxC,IAAI,KAAK,GAAG,4BAA4B,CAAC;QACzC,IAAI,WAAW,GAAG,+DAA+D,CAAC;QAClF,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAe,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,CAAC;QACH,CAAC;QAGD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ;YACjC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtF,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,GAAG,OAAO,yBAAyB,OAAO,QAAQ,CAAC;QACpE,MAAM,WAAW,GAAG,GAAG,OAAO,aAAa,OAAO,EAAE,CAAC;QAGrD,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnF,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,MAAM,IAAA,eAAK,EAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACzD,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;wBACxC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;wBAC7B,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,WAAW,GAAG;;;;WAIb,KAAK;sCACsB,WAAW;;;;;;qCAMZ,QAAQ;uCACN,KAAK;6CACC,WAAW;uCACjB,YAAY;kDACD,YAAY;;6CAEjB,UAAU;8CACT,WAAW;;;;0CAIf,QAAQ;4CACN,KAAK;kDACC,WAAW;4CACjB,YAAY;;;;8BAI1B,WAAW;;;;;;+CAMM,WAAW;;;QAGlD,CAAC;QAEL,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AApLO;IADL,IAAA,YAAG,GAAE;;;;4DAoBL;AAGK;IADL,IAAA,YAAG,EAAC,mBAAmB,CAAC;IACD,WAAA,IAAA,cAAK,EAAC,SAAS,EAAE,sBAAa,CAAC,CAAA;;;;6DAUtD;AAIK;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,aAAI,EAAC,mBAAmB,CAAC;IAEvB,WAAA,IAAA,cAAK,EAAC,SAAS,EAAE,sBAAa,CAAC,CAAA;IAC/B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;4DA+BP;AAGK;IADL,IAAA,YAAG,EAAC,gBAAgB,CAAC;IAEnB,WAAA,IAAA,cAAK,EAAC,SAAS,EAAE,sBAAa,CAAC,CAAA;IAC/B,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDAuGP;AA1LG,qBAAqB;IAD1B,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAGR,8BAAa;QACL,cAAc;GAHpC,qBAAqB,CA2L1B;AAED,IAEM,oBAAoB,GAF1B,MAEM,oBAAoB;IACxB,YACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAGE,AAAN,KAAK,CAAC,cAAc,CAAQ,GAAQ;QAClC,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAElC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC5D,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,WAAW,EAAE,aAAa,EAAE;oBAC9B,EAAE,UAAU,EAAE,aAAa,EAAE;iBAC9B;gBACD,MAAM,EAAE,UAAU;aACnB;YACD,OAAO,EAAE;gBACP,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC1E,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC1E;SACF,CAAC,CAAC;QAGH,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,aAAa,CAAC;YACvD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAChE,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,UAAU;gBACV,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;QAGH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;YACjE,KAAK,EAAE;gBACL,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,SAAS;aAClB;YACD,OAAO,EAAE;gBACP,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC3E;SACF,CAAC,CAAC;QAGH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC7D,KAAK,EAAE;gBACL,WAAW,EAAE,aAAa;gBAC1B,MAAM,EAAE,SAAS;aAClB;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC1E;SACF,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,oBAAoB;YACjC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACzH,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;SAChH,CAAC;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAQ,GAAQ,EAAU,IAA4B;QACrE,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAAmB,CAAC,mDAAmD,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,4BAA4B,CAAC,CAAC;QAC5D,CAAC;QAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YAC1D,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,WAAW,EAAE,UAAU,EAAE;oBAC3B,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;iBACxC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,IAAI,4BAAmB,CAAC,8BAA8B,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,4BAAmB,CAAC,iCAAiC,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YACtD,IAAI,EAAE;gBACJ,WAAW;gBACX,UAAU;gBACV,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,QAAQ;aACf;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CACW,EAAU,EAC9B,IAAsE,EACvE,GAAQ;QAEf,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,0BAAiB,CAAC,iCAAiC,CAAC,CAAC;QACjE,CAAC;QAGD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;gBACtC,MAAM,IAAI,2BAAkB,CAAC,6CAA6C,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBACtD,KAAK,EAAE,EAAE,EAAE,EAAE;gBACb,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aAC9B,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;oBACrD,KAAK,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;oBAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;iBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE;oBAC7D,YAAY,EAAE,IAAI,CAAC,EAAE;oBACrB,cAAc,EAAE,YAAY,EAAE,IAAI,IAAI,OAAO;oBAC7C,YAAY,EAAE,aAAa;iBAC5B,CAAC,CAAC;YACL,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAGD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;gBAC5E,MAAM,IAAI,2BAAkB,CAAC,6CAA6C,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,IAAI,4BAAmB,CAAC,6DAA6D,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;gBACtD,KAAK,EAAE,EAAE,EAAE,EAAE;gBACb,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC1B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,4BAAmB,CAAC,uBAAuB,CAAC,CAAC;IACzD,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB,CAA6B,EAAU,EAAS,GAAQ;QAC5E,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,0BAAiB,CAAC,iCAAiC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;YAC5E,MAAM,IAAI,2BAAkB,CAAC,6CAA6C,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAClE,CAAC;CACF,CAAA;AAlLO;IADL,IAAA,YAAG,GAAE;IACgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;0DAyD1B;AAGK;IADL,IAAA,aAAI,GAAE;IACY,WAAA,IAAA,YAAG,GAAE,CAAA;IAAY,WAAA,IAAA,aAAI,GAAE,CAAA;;;;uDA4CzC;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IAEV,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAC1B,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;;;yDAmDP;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACU,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,sBAAa,CAAC,CAAA;IAAc,WAAA,IAAA,YAAG,GAAE,CAAA;;;;4DAapE;AAxLG,oBAAoB;IAFzB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,EAAC,aAAa,CAAC;qCAGN,8BAAa;QACL,cAAc;GAHpC,oBAAoB,CAyLzB;AAED,IAEM,uBAAuB,GAF7B,MAEM,uBAAuB;IAC3B,YACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAGE,AAAN,KAAK,CAAC,WAAW,CAAiC,MAAc,EAAS,GAAQ;QAC/E,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAGlC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YACtD,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE;oBAClD,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE;iBACnD;gBACD,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,2BAAkB,CAAC,+CAA+C,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;YACxD,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE;oBAC/C,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE;iBAChD;aACF;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CACR,GAAQ,EACP,IAA6G;QAErH,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEzE,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,4BAAmB,CAAC,sDAAsD,CAAC,CAAC;QACxF,CAAC;QAGD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YACtD,KAAK,EAAE;gBACL,EAAE,EAAE;oBACF,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE;oBACjD,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE;iBAClD;gBACD,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,2BAAkB,CAAC,+CAA+C,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;YACrD,IAAI,EAAE;gBACJ,QAAQ;gBACR,UAAU;gBACV,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,aAAa;gBACb,QAAQ;gBACR,SAAS;aACV;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC3D;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE1D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AA7EO;IADL,IAAA,YAAG,EAAC,SAAS,CAAC;IACI,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;0DA6BvE;AAGK;IADL,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;0DA0CR;AAnFG,uBAAuB;IAF5B,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,EAAC,UAAU,CAAC;qCAGH,8BAAa;QACL,cAAc;GAHpC,uBAAuB,CAoF5B;AAID,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAGd,AAAN,KAAK,CAAC,gBAAgB,CAAkB,KAAY;QAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,4BAAmB,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC;QAC1E,MAAM,QAAQ,GAAG,GAAG,YAAY,GAAG,SAAS,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAErD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,OAAO;YACL,GAAG,EAAE,wBAAwB,QAAQ,EAAE;SACxC,CAAC;IACJ,CAAC;CACF,CAAA;AApBO;IAFL,IAAA,aAAI,GAAE;IACN,IAAA,wBAAe,EAAC,IAAA,mCAAgB,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtB,WAAA,IAAA,sBAAa,GAAE,CAAA;;;;wDAmBtC;AAtBG,gBAAgB;IAFrB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,EAAC,QAAQ,CAAC;GACf,gBAAgB,CAuBrB;AAED,IAEM,qBAAqB,GAF3B,MAEM,qBAAqB;IACzB,YACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAGE,AAAN,KAAK,CAAC,eAAe,CAAiC,MAAc,EAAS,GAAQ;QACnF,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAG3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9D,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,2BAAkB,CAAC,kDAAkD,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YACtD,KAAK,EAAE,EAAE,MAAM,EAAE;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC3D;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CACa,MAAc,EACvC,GAAQ,EACP,IAAmH;QAE3H,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAE5E,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,YAAY,MAAM,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEvG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,4BAAmB,CAAC,sDAAsD,CAAC,CAAC;QACxF,CAAC;QAGD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;YAC9D,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,2BAAkB,CAAC,kDAAkD,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACvD,IAAI,EAAE;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,aAAa;gBACb,QAAQ;gBACR,SAAS;aACV;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAC3D;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC1E,MAAM;YACN,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAIzE,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;YACnE,KAAK,EAAE;gBACL,MAAM;gBACN,MAAM,EAAE;oBACN,GAAG,EAAE,QAAQ;oBACb,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACxC;gBACD,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACtB;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,oDAAoD,iBAAiB,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAElI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7C,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,MAAM,eAAe,QAAQ,EAAE,CAAC,CAAC;gBAC7G,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;oBAChF,MAAM;oBACN,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY;oBACzC,SAAS,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY;oBACtC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;oBACrG,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAA;AAzGO;IADL,IAAA,YAAG,GAAE;IACiB,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAAkB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;4DAqB3E;AAGK;IADL,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,cAAK,EAAC,QAAQ,EAAE,sBAAa,CAAC,CAAA;IAC9B,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;4DA6ER;AA/GG,qBAAqB;IAF1B,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,EAAC,wBAAwB,CAAC;qCAGjB,8BAAa;QACL,cAAc;GAHpC,qBAAqB,CAgH1B;AA6BD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IA3Bd,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBAEd,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;gBAExD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;aACrD,CAAC;YACF,2BAAW,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACvB,KAAK,EAAE,MAAM,IAAA,oCAAU,EAAC;wBACtB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,wBAAwB;wBACtD,GAAG,EAAE,SAAS,CAAC,OAAO;qBACvB,CAAC;iBACH,CAAC;aACH,CAAC;YACF,eAAS,CAAC,QAAQ,CAAC;gBACjB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;gBAChD,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;aACjC,CAAQ;SACV;QACD,WAAW,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;QAChV,SAAS,EAAE,CAAC,8BAAa,EAAE,0BAAW,EAAE,aAAa,EAAE,6BAAY,EAAE,wBAAU,EAAE,cAAc,EAAE,gBAAS,EAAE,YAAY,EAAE,sBAAa,CAAC;QACxI,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACI,SAAS,CAAG;AAGlB,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACtB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,oJAAoJ,CAAC,CAAC;IACtK,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/prisma/migrations/20260621010152_init_connections/migration.sql b/backend/prisma/migrations/20260621010152_init_connections/migration.sql new file mode 100644 index 0000000..0bd005b --- /dev/null +++ b/backend/prisma/migrations/20260621010152_init_connections/migration.sql @@ -0,0 +1,57 @@ +-- CreateEnum +CREATE TYPE "ConnectionStatus" AS ENUM ('PENDING', 'ACCEPTED', 'REJECTED'); + +-- CreateEnum +CREATE TYPE "ConnectionType" AS ENUM ('FRIEND', 'FAMILY'); + +-- CreateTable +CREATE TABLE "UserConnection" ( + "id" TEXT NOT NULL, + "requesterId" TEXT NOT NULL, + "receiverId" TEXT NOT NULL, + "status" "ConnectionStatus" NOT NULL DEFAULT 'PENDING', + "type" "ConnectionType" NOT NULL DEFAULT 'FRIEND', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "UserConnection_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DirectMessage" ( + "id" TEXT NOT NULL, + "senderId" TEXT NOT NULL, + "receiverId" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DirectMessage_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "UserConnection_requesterId_idx" ON "UserConnection"("requesterId"); + +-- CreateIndex +CREATE INDEX "UserConnection_receiverId_idx" ON "UserConnection"("receiverId"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserConnection_requesterId_receiverId_key" ON "UserConnection"("requesterId", "receiverId"); + +-- CreateIndex +CREATE INDEX "DirectMessage_senderId_idx" ON "DirectMessage"("senderId"); + +-- CreateIndex +CREATE INDEX "DirectMessage_receiverId_idx" ON "DirectMessage"("receiverId"); + +-- AddForeignKey +ALTER TABLE "UserConnection" ADD CONSTRAINT "UserConnection_requesterId_fkey" FOREIGN KEY ("requesterId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UserConnection" ADD CONSTRAINT "UserConnection_receiverId_fkey" FOREIGN KEY ("receiverId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DirectMessage" ADD CONSTRAINT "DirectMessage_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DirectMessage" ADD CONSTRAINT "DirectMessage_receiverId_fkey" FOREIGN KEY ("receiverId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/backend/prisma/migrations/20260621020327_add_tour_chat/migration.sql b/backend/prisma/migrations/20260621020327_add_tour_chat/migration.sql new file mode 100644 index 0000000..248befa --- /dev/null +++ b/backend/prisma/migrations/20260621020327_add_tour_chat/migration.sql @@ -0,0 +1,31 @@ +-- AlterTable +ALTER TABLE "DirectMessage" ADD COLUMN "attachmentUrl" TEXT, +ADD COLUMN "latitude" DOUBLE PRECISION, +ADD COLUMN "longitude" DOUBLE PRECISION; + +-- CreateTable +CREATE TABLE "TourMessage" ( + "id" TEXT NOT NULL, + "tourId" TEXT NOT NULL, + "senderId" TEXT NOT NULL, + "content" TEXT NOT NULL, + "attachmentUrl" TEXT, + "latitude" DOUBLE PRECISION, + "longitude" DOUBLE PRECISION, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "TourMessage_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "TourMessage_tourId_idx" ON "TourMessage"("tourId"); + +-- CreateIndex +CREATE INDEX "TourMessage_senderId_idx" ON "TourMessage"("senderId"); + +-- AddForeignKey +ALTER TABLE "TourMessage" ADD CONSTRAINT "TourMessage_tourId_fkey" FOREIGN KEY ("tourId") REFERENCES "Tour"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TourMessage" ADD CONSTRAINT "TourMessage_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index c7dc73a..af36f29 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -75,7 +75,11 @@ model User { uploadedPhotos Photo[] paidExpenses Expense[] @relation("ExpensePaidBy") comments Comment[] - + sentConnections UserConnection[] @relation("ConnectionRequester") + receivedConnections UserConnection[] @relation("ConnectionReceiver") + sentMessages DirectMessage[] @relation("MessageSender") + receivedMessages DirectMessage[] @relation("MessageReceiver") + tourMessages TourMessage[] } model Tour { @@ -100,6 +104,7 @@ model Tour { legs Leg[] photos Photo[] invitations TourInvitation[] + tourMessages TourMessage[] } model JoinRequest { @@ -227,3 +232,67 @@ model TourInvitation { @@unique([tourId, email]) } + +enum ConnectionStatus { + PENDING + ACCEPTED + REJECTED +} + +enum ConnectionType { + FRIEND + FAMILY +} + +model UserConnection { + id String @id @default(uuid()) + requesterId String + receiverId String + status ConnectionStatus @default(PENDING) + type ConnectionType @default(FRIEND) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + requester User @relation("ConnectionRequester", fields: [requesterId], references: [id], onDelete: Cascade) + receiver User @relation("ConnectionReceiver", fields: [receiverId], references: [id], onDelete: Cascade) + + @@unique([requesterId, receiverId]) + @@index([requesterId]) + @@index([receiverId]) +} + +model DirectMessage { + id String @id @default(uuid()) + senderId String + receiverId String + content String @db.Text + attachmentUrl String? + latitude Float? + longitude Float? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + sender User @relation("MessageSender", fields: [senderId], references: [id], onDelete: Cascade) + receiver User @relation("MessageReceiver", fields: [receiverId], references: [id], onDelete: Cascade) + + @@index([senderId]) + @@index([receiverId]) +} + +model TourMessage { + id String @id @default(uuid()) + tourId String + senderId String + content String @db.Text + attachmentUrl String? + latitude Float? + longitude Float? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) + sender User @relation(fields: [senderId], references: [id], onDelete: Cascade) + + @@index([tourId]) + @@index([senderId]) +} diff --git a/backend/src/main.ts b/backend/src/main.ts index 27d2fd2..6ea8c5e 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -39,6 +39,55 @@ const gunzip = promisify(zlib.gunzip); // Khai báo vị trí thư mục upload cụ thể const UPLOAD_ROOT = path.join(process.cwd(), 'uploads'); +@WebSocketGateway({ cors: { origin: '*' } }) +export class CommentGateway implements OnGatewayConnection { + @WebSocketServer() server: Server; + + handleConnection(client: Socket) { + console.log(`[WS] Client connected: ${client.id}`); + } + + @SubscribeMessage('joinTour') + handleJoinTour(client: Socket, tourId: string) { + client.join(`tour_${tourId}`); + console.log(`[WS] Client ${client.id} joined room: tour_${tourId}`); + } + + @SubscribeMessage('joinPhoto') + handleJoinPhoto(client: Socket, photoId: string) { + client.join(`photo_${photoId}`); + console.log(`[WS] Client ${client.id} joined room: photo_${photoId}`); + } + + notifyNewComment(tourId: string, data: any) { + // Gửi thông báo tới tất cả client trong phòng của Tour này + this.server.to(`tour_${tourId}`).emit('commentAdded', data); + } + + notifyNewPhotoComment(photoId: string, data: any) { + // Gửi thông báo tới tất cả client trong phòng của Ảnh này + this.server.to(`photo_${photoId}`).emit('photoCommentAdded', data); + } + + @SubscribeMessage('joinUser') + handleJoinUser(client: Socket, userId: string) { + client.join(`user_${userId}`); + console.log(`[WS] Client ${client.id} joined user room: user_${userId}`); + } + + notifyNewMessage(receiverId: string, data: any) { + this.server.to(`user_${receiverId}`).emit('messageReceived', data); + } + + notifyConnectionAccepted(requesterId: string, data: any) { + this.server.to(`user_${requesterId}`).emit('connectionAccepted', data); + } + + notifyJoinRequestAccepted(userId: string, data: any) { + this.server.to(`user_${userId}`).emit('joinRequestAccepted', data); + } +} + // Cấu hình TTL (mili giây) cho từng loại dữ liệu const CACHE_TTL = { DEFAULT: 600000, // 10 phút mặc định @@ -469,6 +518,7 @@ class AuthController { name: user.name, avatar: user.avatar, isAdmin: user.isAdmin, + isGoogle: true, }, }; } catch (error) { @@ -629,7 +679,8 @@ class TourController { constructor( private prisma: PrismaService, private emailService: EmailService, - @Inject(CACHE_MANAGER) private cacheManager: Cache + @Inject(CACHE_MANAGER) private cacheManager: Cache, + private commentGateway: CommentGateway ) {} @UseGuards(JwtAuthGuard) @@ -1320,6 +1371,17 @@ class TourController { }), ]); + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + + this.commentGateway.notifyJoinRequestAccepted(joinRequest.userId, { + tourId, + tourTitle: tour?.title || 'Hành trình', + requestId + }); + return { success: true, message: 'Đã chấp nhận yêu cầu tham gia.' }; } @@ -2319,36 +2381,7 @@ class UserController { } } -@WebSocketGateway({ cors: { origin: '*' } }) -export class CommentGateway implements OnGatewayConnection { - @WebSocketServer() server: Server; - handleConnection(client: Socket) { - console.log(`[WS] Client connected: ${client.id}`); - } - - @SubscribeMessage('joinTour') - handleJoinTour(client: Socket, tourId: string) { - client.join(`tour_${tourId}`); - console.log(`[WS] Client ${client.id} joined room: tour_${tourId}`); - } - - @SubscribeMessage('joinPhoto') - handleJoinPhoto(client: Socket, photoId: string) { - client.join(`photo_${photoId}`); - console.log(`[WS] Client ${client.id} joined room: photo_${photoId}`); - } - - notifyNewComment(tourId: string, data: any) { - // Gửi thông báo tới tất cả client trong phòng của Tour này - this.server.to(`tour_${tourId}`).emit('commentAdded', data); - } - - notifyNewPhotoComment(photoId: string, data: any) { - // Gửi thông báo tới tất cả client trong phòng của Ảnh này - this.server.to(`photo_${photoId}`).emit('photoCommentAdded', data); - } -} @Controller('locations') class CommentController { @@ -2896,6 +2929,426 @@ class PublicPhotoController { } } +@UseGuards(JwtAuthGuard) +@Controller('connections') +class ConnectionController { + constructor( + private prisma: PrismaService, + private commentGateway: CommentGateway + ) {} + + @Get() + async getConnections(@Req() req: any) { + const currentUserId = req.user.id; + // Get connections where status is ACCEPTED + const connections = await this.prisma.userConnection.findMany({ + where: { + OR: [ + { requesterId: currentUserId }, + { receiverId: currentUserId } + ], + status: 'ACCEPTED' + }, + include: { + requester: { select: { id: true, name: true, email: true, avatar: true } }, + receiver: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + + // Format connections to return the target user and relation details + const formattedConnections = connections.map(conn => { + const isRequester = conn.requesterId === currentUserId; + const targetUser = isRequester ? conn.receiver : conn.requester; + return { + id: conn.id, + targetUser, + type: conn.type, // FRIEND / FAMILY + status: conn.status, + createdAt: conn.createdAt + }; + }); + + // Get pending requests received by current user + const receivedRequests = await this.prisma.userConnection.findMany({ + where: { + receiverId: currentUserId, + status: 'PENDING' + }, + include: { + requester: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + + // Get pending requests sent by current user + const sentRequests = await this.prisma.userConnection.findMany({ + where: { + requesterId: currentUserId, + status: 'PENDING' + }, + include: { + receiver: { select: { id: true, name: true, email: true, avatar: true } } + } + }); + + return { + connections: formattedConnections, + receivedRequests: receivedRequests.map(r => ({ id: r.id, requester: r.requester, type: r.type, createdAt: r.createdAt })), + sentRequests: sentRequests.map(r => ({ id: r.id, receiver: r.receiver, type: r.type, createdAt: r.createdAt })) + }; + } + + @Post() + async sendRequest(@Req() req: any, @Body() body: { receiverId: string }) { + const requesterId = req.user.id; + const { receiverId } = body; + + if (requesterId === receiverId) { + throw new BadRequestException('Bạn không thể gửi lời mời kết nối cho chính mình.'); + } + + const receiver = await this.prisma.user.findUnique({ where: { id: receiverId } }); + if (!receiver) { + throw new NotFoundException('Không tìm thấy người nhận.'); + } + + // Check if relation already exists + const existing = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId, receiverId }, + { requesterId: receiverId, receiverId } + ] + } + }); + + if (existing) { + if (existing.status === 'ACCEPTED') { + throw new BadRequestException('Hai bạn đã kết nối với nhau.'); + } + if (existing.status === 'PENDING') { + throw new BadRequestException('Yêu cầu kết nối đang chờ xử lý.'); + } + // If rejected, allow sending request again by deleting/updating the old one + await this.prisma.userConnection.delete({ where: { id: existing.id } }); + } + + const newConn = await this.prisma.userConnection.create({ + data: { + requesterId, + receiverId, + status: 'PENDING', + type: 'FRIEND' // default + } + }); + + return { success: true, connection: newConn }; + } + + @Patch(':id') + async updateRequest( + @Param('id', ParseUUIDPipe) id: string, + @Body() body: { status?: 'ACCEPTED' | 'REJECTED'; type?: 'FRIEND' | 'FAMILY' }, + @Req() req: any + ) { + const currentUserId = req.user.id; + const conn = await this.prisma.userConnection.findUnique({ where: { id } }); + if (!conn) { + throw new NotFoundException('Không tìm thấy bản ghi kết nối.'); + } + + // Accept/Reject request + if (body.status) { + if (conn.receiverId !== currentUserId) { + throw new ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + + const updated = await this.prisma.userConnection.update({ + where: { id }, + data: { status: body.status } + }); + + if (body.status === 'ACCEPTED') { + const receiverUser = await this.prisma.user.findUnique({ + where: { id: currentUserId }, + select: { name: true } + }); + this.commentGateway.notifyConnectionAccepted(conn.requesterId, { + connectionId: conn.id, + acceptedByName: receiverUser?.name || 'Ai đó', + acceptedById: currentUserId + }); + } + + return { success: true, connection: updated }; + } + + // Change relationship type (FRIEND <-> FAMILY) + if (body.type) { + if (conn.requesterId !== currentUserId && conn.receiverId !== currentUserId) { + throw new ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + if (conn.status !== 'ACCEPTED') { + throw new BadRequestException('Chỉ có thể thay đổi phân nhóm sau khi đã chấp nhận kết nối.'); + } + + const updated = await this.prisma.userConnection.update({ + where: { id }, + data: { type: body.type } + }); + return { success: true, connection: updated }; + } + + throw new BadRequestException('Yêu cầu không hợp lệ.'); + } + + @Delete(':id') + async deleteConnection(@Param('id', ParseUUIDPipe) id: string, @Req() req: any) { + const currentUserId = req.user.id; + const conn = await this.prisma.userConnection.findUnique({ where: { id } }); + if (!conn) { + throw new NotFoundException('Không tìm thấy bản ghi kết nối.'); + } + + if (conn.requesterId !== currentUserId && conn.receiverId !== currentUserId) { + throw new ForbiddenException('Bạn không có quyền thực hiện hành động này.'); + } + + await this.prisma.userConnection.delete({ where: { id } }); + return { success: true, message: 'Đã hủy kết nối thành công.' }; + } +} + +@UseGuards(JwtAuthGuard) +@Controller('messages') +class DirectMessageController { + constructor( + private prisma: PrismaService, + private commentGateway: CommentGateway + ) {} + + @Get(':userId') + async getMessages(@Param('userId', ParseUUIDPipe) userId: string, @Req() req: any) { + const currentUserId = req.user.id; + + // Check connection first to ensure they are connected + const conn = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId: currentUserId, receiverId: userId }, + { requesterId: userId, receiverId: currentUserId } + ], + status: 'ACCEPTED' + } + }); + + if (!conn) { + throw new ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); + } + + const messages = await this.prisma.directMessage.findMany({ + where: { + OR: [ + { senderId: currentUserId, receiverId: userId }, + { senderId: userId, receiverId: currentUserId } + ] + }, + orderBy: { createdAt: 'asc' } + }); + + return messages; + } + + @Post() + async sendMessage( + @Req() req: any, + @Body() body: { receiverId: string; content?: string; attachmentUrl?: string; latitude?: number; longitude?: number } + ) { + const senderId = req.user.id; + const { receiverId, content, attachmentUrl, latitude, longitude } = body; + + if ((!content || !content.trim()) && !attachmentUrl && latitude === undefined) { + throw new BadRequestException('Tin nhắn phải có nội dung, ảnh đính kèm hoặc vị trí.'); + } + + // Check connection first + const conn = await this.prisma.userConnection.findFirst({ + where: { + OR: [ + { requesterId: senderId, receiverId: receiverId }, + { requesterId: receiverId, receiverId: senderId } + ], + status: 'ACCEPTED' + } + }); + + if (!conn) { + throw new ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); + } + + const message = await this.prisma.directMessage.create({ + data: { + senderId, + receiverId, + content: content || '', + attachmentUrl, + latitude, + longitude + }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + } + }); + + // Realtime broadcast via Socket + this.commentGateway.notifyNewMessage(receiverId, message); + + return message; + } +} + +@UseGuards(JwtAuthGuard) +@Controller('upload') +class UploadController { + @Post() + @UseInterceptors(FilesInterceptor('image', 1)) + async uploadAttachment(@UploadedFiles() files: any[]) { + if (!files || files.length === 0) { + throw new BadRequestException('Vui lòng chọn ảnh.'); + } + const file = files[0]; + const attachmentsDir = path.join(UPLOAD_ROOT, 'attachments'); + if (!fs.existsSync(attachmentsDir)) { + fs.mkdirSync(attachmentsDir, { recursive: true }); + } + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9); + const extension = path.extname(file.originalname).toLowerCase() || '.jpg'; + const filename = `${uniqueSuffix}${extension}`; + const filePath = path.join(attachmentsDir, filename); + + fs.writeFileSync(filePath, file.buffer); + + return { + url: `/uploads/attachments/${filename}` + }; + } +} + +@UseGuards(JwtAuthGuard) +@Controller('tours/:tourId/messages') +class TourMessageController { + constructor( + private prisma: PrismaService, + private commentGateway: CommentGateway + ) {} + + @Get() + async getTourMessages(@Param('tourId', ParseUUIDPipe) tourId: string, @Req() req: any) { + const userId = req.user.id; + + // Check if user is a participant of this tour + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId } + }); + + if (!participant) { + throw new ForbiddenException('Bạn không phải là thành viên của hành trình này.'); + } + + const messages = await this.prisma.tourMessage.findMany({ + where: { tourId }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + }, + orderBy: { createdAt: 'asc' } + }); + + return messages; + } + + @Post() + async sendTourMessage( + @Param('tourId', ParseUUIDPipe) tourId: string, + @Req() req: any, + @Body() body: { content?: string; attachmentUrl?: string; latitude?: number; longitude?: number; taggedUserIds?: string[] } + ) { + const senderId = req.user.id; + const { content, attachmentUrl, latitude, longitude, taggedUserIds } = body; + + console.log(`[sendTourMessage] senderId=${senderId}, tourId=${tourId}, taggedUserIds=`, taggedUserIds); + + if ((!content || !content.trim()) && !attachmentUrl && latitude === undefined) { + throw new BadRequestException('Tin nhắn phải có nội dung, ảnh đính kèm hoặc vị trí.'); + } + + // Check if user is a participant of this tour + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId: senderId } + }); + + if (!participant) { + throw new ForbiddenException('Bạn không phải là thành viên của hành trình này.'); + } + + const tourMessage = await this.prisma.tourMessage.create({ + data: { + tourId, + senderId, + content: content || '', + attachmentUrl, + latitude, + longitude + }, + include: { + sender: { select: { id: true, name: true, avatar: true } } + } + }); + + // Broadcast to the WebSocket room of this tour + this.commentGateway.server.to(`tour_${tourId}`).emit('tourMessageReceived', { + tourId, + message: tourMessage + }); + + const hasTags = Array.isArray(taggedUserIds) && taggedUserIds.length > 0; + + // Notify other participants (via their user rooms) + // If taggedUserIds is provided, we ONLY notify those tagged users. + const otherParticipants = await this.prisma.tourParticipant.findMany({ + where: { + tourId, + userId: { + not: senderId, + in: hasTags ? taggedUserIds : undefined + }, + NOT: { userId: null } + } + }); + + console.log(`[sendTourMessage] otherParticipants found count: ${otherParticipants.length}`, otherParticipants.map(o => o.userId)); + + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + + for (const p of otherParticipants) { + if (p.userId) { + const isTagged = hasTags && taggedUserIds.includes(p.userId); + console.log(`[sendTourMessage] Emitting tourMessageNotification to user_${p.userId}, isTagged: ${isTagged}`); + this.commentGateway.server.to(`user_${p.userId}`).emit('tourMessageNotification', { + tourId, + senderName: req.user.name || 'Thành viên', + tourTitle: tour?.title || 'Hành trình', + content: isTagged ? `@Bạn: ${content || ''}` : content || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), + isTagged + }); + } + } + + return tourMessage; + } +} + @Module({ imports: [ ConfigModule.forRoot({ @@ -2919,7 +3372,7 @@ class PublicPhotoController { signOptions: { expiresIn: '1d' }, }) as any, ], - controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController], + controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController], providers: [PrismaService, JwtStrategy, TourRoleGuard, JwtAuthGuard, AdminGuard, CommentGateway, Reflector, EmailService, ConfigService], exports: [PrismaService] }) diff --git a/backend/uploads/attachments/1782007566180-545592432.jpg b/backend/uploads/attachments/1782007566180-545592432.jpg new file mode 100644 index 0000000..d308ce5 Binary files /dev/null and b/backend/uploads/attachments/1782007566180-545592432.jpg differ diff --git a/backend/uploads/attachments/1782007670724-126378710.jpg b/backend/uploads/attachments/1782007670724-126378710.jpg new file mode 100644 index 0000000..535f7cb Binary files /dev/null and b/backend/uploads/attachments/1782007670724-126378710.jpg differ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a13faaf..23c0e9a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -6,6 +6,7 @@ import SignupPage from './pages/SignupPage'; import { MyPhotosPage } from './pages/MyPhotosPage'; import { MyNotePage } from './pages/MyNotePage'; import { JoinTourPage } from './pages/JoinTourPage'; +import { MemberDashboard } from './pages/MemberDashboard'; import { useTourStore } from './store/useTourStore'; import { ConfirmProvider } from './hooks/useConfirm'; import { NotificationProvider } from './hooks/useNotification'; @@ -15,11 +16,12 @@ function App() { const viewTourId = params.get('viewTour'); const [user, setUser] = useState(null); - const [currentPage, setCurrentPage] = useState<'landing' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes' | 'joinTour'>( + const [currentPage, setCurrentPage] = useState<'landing' | 'dashboard' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes' | 'joinTour'>( viewTourId ? 'tourDetail' : (window.location.pathname === '/join-tour' || params.has('token') ? 'joinTour' : 'landing') ); const [currentTourId, setCurrentTourId] = useState(viewTourId); const [isPublicTourView, setIsPublicTourView] = useState(!!viewTourId); + const [previousPage, setPreviousPage] = useState<'explore' | 'dashboard' | 'landing'>('explore'); // Lấy action từ store const fetchTour = useTourStore(state => state.fetchTour); @@ -50,7 +52,7 @@ function App() { setCurrentPage('tourDetail'); } else { if (loggedInUser) { - setCurrentPage('explore'); + setCurrentPage('dashboard'); } else { setCurrentPage('landing'); } @@ -65,7 +67,7 @@ function App() { if (pendingInviteToken) { setCurrentPage('joinTour'); } else { - setCurrentPage('explore'); + setCurrentPage('dashboard'); } }; @@ -76,18 +78,19 @@ function App() { setCurrentPage('landing'); }; - const handleViewTour = (tourId: string) => { + const handleViewTour = (tourId: string, fromPage?: 'explore' | 'dashboard') => { setCurrentTourId(tourId); setIsPublicTourView(false); // Không phải chế độ công khai nếu đến từ bản đồ khám phá + setPreviousPage(fromPage || (currentPage === 'dashboard' ? 'dashboard' : 'explore')); setCurrentPage('tourDetail'); }; const handleBackFromTourDetail = () => { setCurrentTourId(null); setIsPublicTourView(false); - // Quay về trang khám phá nếu đã đăng nhập, ngược lại quay về Landing + // Quay về trang cũ nếu đã đăng nhập, ngược lại quay về Landing if (user) { - setCurrentPage('explore'); + setCurrentPage(previousPage); } else { setCurrentPage('landing'); } @@ -105,6 +108,22 @@ function App() { const handleSignupSuccess = () => { // Sau khi đăng ký, ta có thể tự động đăng nhập hoặc quay lại landing/joinTour const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + const token = localStorage.getItem('token'); + const storedUser = localStorage.getItem('user'); + + if (token && storedUser) { + try { + const loggedInUser = JSON.parse(storedUser); + setUser(loggedInUser); + if (pendingInviteToken) { + setCurrentPage('joinTour'); + } else { + setCurrentPage('dashboard'); + } + return; + } catch (e) {} + } + if (pendingInviteToken) { setCurrentPage('joinTour'); } else { @@ -112,10 +131,30 @@ function App() { } }; + const handleBackFromExplore = () => { + if (user) { + setCurrentPage('dashboard'); + } else { + setCurrentPage('landing'); + } + }; + return ( {(() => { + if (currentPage === 'dashboard') { + return ( + setCurrentPage('explore')} + onViewTour={handleViewTour} + onOpenMyPhotos={() => setCurrentPage('myPhotos')} + /> + ); + } + if (currentPage === 'tourDetail') { return ( = ({ tourId }) => { + const notify = useNotification(); + const [messages, setMessages] = useState([]); + const [newMessage, setNewMessage] = useState(''); + const [loading, setLoading] = useState(true); + const [selectedImage, setSelectedImage] = useState(null); + const [imagePreview, setImagePreview] = useState(null); + const [attachedLocation, setAttachedLocation] = useState<{ latitude: number; longitude: number } | null>(null); + const [isUploading, setIsUploading] = useState(false); + const [isLocating, setIsLocating] = useState(false); + + const [participants, setParticipants] = useState([]); + const [showMentionList, setShowMentionList] = useState(false); + const [mentionSearch, setMentionSearch] = useState(''); + const [mentionIndex, setMentionIndex] = useState(0); + const [taggedUserIds, setTaggedUserIds] = useState([]); + + const messagesEndRef = useRef(null); + const socketRef = useRef(null); + const fileInputRef = useRef(null); + const inputRef = useRef(null); + const mentionRef = useRef(null); + + const getHeaders = () => ({ + 'Authorization': `Bearer ${localStorage.getItem('token')}`, + 'Content-Type': 'application/json' + }); + + const currentUserId = (() => { + try { + const token = localStorage.getItem('token'); + if (!token) return null; + const base64Url = token.split('.')[1]; + const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); + const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }).join('')); + const parsed = JSON.parse(jsonPayload); + return parsed.sub || parsed.id; + } catch (e) { + return null; + } + })(); + + // Fetch tour details to get participants (excluding current user) + useEffect(() => { + const fetchTourDetails = async () => { + try { + const res = await fetch(`/api/v1/tours/${tourId}`, { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + if (data && data.participants) { + const memberList = data.participants + .map((p: any) => p.user) + .filter((u: any) => u && u.id !== currentUserId); + setParticipants(memberList); + } + } + } catch (err) { + console.error('Lỗi khi tải thông tin thành viên tour:', err); + } + }; + if (tourId && currentUserId) { + fetchTourDetails(); + } + }, [tourId, currentUserId]); + + // Click outside to close mention dropdown + useEffect(() => { + const handleOutsideClick = (e: MouseEvent) => { + if (mentionRef.current && !mentionRef.current.contains(e.target as Node)) { + setShowMentionList(false); + } + }; + document.addEventListener('mousedown', handleOutsideClick); + return () => document.removeEventListener('mousedown', handleOutsideClick); + }, []); + + const filteredParticipants = participants.filter(p => + p.name.toLowerCase().includes(mentionSearch.toLowerCase()) + ); + + const handleInputChange = (e: React.ChangeEvent) => { + const value = e.target.value; + setNewMessage(value); + + const selectionStart = e.target.selectionStart || 0; + const textBeforeCursor = value.slice(0, selectionStart); + + const lastAtIndex = textBeforeCursor.lastIndexOf('@'); + if (lastAtIndex !== -1) { + const textAfterAt = textBeforeCursor.slice(lastAtIndex + 1); + if (!textAfterAt.includes(' ')) { + setShowMentionList(true); + setMentionSearch(textAfterAt); + setMentionIndex(0); + return; + } + } + setShowMentionList(false); + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (!showMentionList) return; + const filtered = filteredParticipants; + if (filtered.length === 0) return; + + if (e.key === 'ArrowDown') { + e.preventDefault(); + setMentionIndex(prev => (prev + 1) % filtered.length); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + setMentionIndex(prev => (prev - 1 + filtered.length) % filtered.length); + } else if (e.key === 'Enter') { + e.preventDefault(); + insertMention(filtered[mentionIndex]); + } else if (e.key === 'Escape') { + e.preventDefault(); + setShowMentionList(false); + } + }; + + const insertMention = (member: { id: string; name: string }) => { + const input = inputRef.current; + if (!input) return; + + const selectionStart = input.selectionStart || 0; + const textBeforeCursor = newMessage.slice(0, selectionStart); + const textAfterCursor = newMessage.slice(selectionStart); + + const lastAtIndex = textBeforeCursor.lastIndexOf('@'); + if (lastAtIndex !== -1) { + const newTextBeforeCursor = textBeforeCursor.slice(0, lastAtIndex) + `@${member.name} `; + const updatedValue = newTextBeforeCursor + textAfterCursor; + + setNewMessage(updatedValue); + setShowMentionList(false); + + if (!taggedUserIds.includes(member.id)) { + setTaggedUserIds(prev => [...prev, member.id]); + } + + setTimeout(() => { + input.focus(); + const cursorPosition = newTextBeforeCursor.length; + input.setSelectionRange(cursorPosition, cursorPosition); + }, 0); + } + }; + + // Fetch past messages + useEffect(() => { + const fetchMessages = async () => { + try { + const res = await fetch(`/api/v1/tours/${tourId}/messages`, { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + setMessages(data || []); + } + } catch (err) { + console.error('Lỗi khi tải tin nhắn:', err); + } finally { + setLoading(false); + } + }; + + fetchMessages(); + }, [tourId]); + + // Connect to socket and listen for tour messages + useEffect(() => { + const socket = io(); + socketRef.current = socket; + + socket.on('connect', () => { + socket.emit('joinTour', tourId); + }); + + socket.on('tourMessageReceived', (data: any) => { + if (data.tourId === tourId) { + setMessages(prev => [...prev, data.message]); + } + }); + + return () => { + socket.disconnect(); + }; + }, [tourId]); + + // Autoscroll chat to bottom + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, [messages]); + + // Compress image to 2K (max 2048px longest side) + const compressImageTo2K = (file: File): Promise => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = (event) => { + const img = new Image(); + img.src = event.target?.result as string; + img.onload = () => { + const MAX_DIM = 2048; + let width = img.width; + let height = img.height; + + if (width > MAX_DIM || height > MAX_DIM) { + if (width > height) { + height = Math.round((height * MAX_DIM) / width); + width = MAX_DIM; + } else { + width = Math.round((width * MAX_DIM) / height); + height = MAX_DIM; + } + } + + const canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext('2d'); + if (!ctx) { + resolve(file); + return; + } + ctx.drawImage(img, 0, 0, width, height); + canvas.toBlob( + (blob) => { + if (blob) { + resolve(blob); + } else { + resolve(file); + } + }, + 'image/jpeg', + 0.85 + ); + }; + img.onerror = (err) => reject(err); + }; + reader.onerror = (err) => reject(err); + }); + }; + + // Handle Image Selection + const handleImageChange = (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (file) { + setSelectedImage(file); + setImagePreview(URL.createObjectURL(file)); + } + }; + + // Handle Location Sharing + const handleGetLocation = () => { + if (!navigator.geolocation) { + notify({ + title: 'Không hỗ trợ', + message: 'Trình duyệt của bạn không hỗ trợ định vị GPS.', + type: 'error' + }); + return; + } + + setIsLocating(true); + navigator.geolocation.getCurrentPosition( + (position) => { + setAttachedLocation({ + latitude: position.coords.latitude, + longitude: position.coords.longitude + }); + notify({ + title: 'Gắn vị trí thành công', + message: 'Vị trí hiện tại đã được đính kèm vào tin nhắn.', + type: 'success' + }); + setIsLocating(false); + }, + (error) => { + console.error('Lỗi định vị:', error); + notify({ + title: 'Lỗi GPS', + message: 'Không thể lấy vị trí hiện tại của bạn. Hãy kiểm tra quyền truy cập.', + type: 'error' + }); + setIsLocating(false); + }, + { enableHighAccuracy: true, timeout: 10000 } + ); + }; + + // Upload image to backend + const uploadImage = async (file: File): Promise => { + try { + setIsUploading(true); + // Compress first + const compressedBlob = await compressImageTo2K(file); + const formData = new FormData(); + formData.append('image', compressedBlob, 'compressed.jpg'); + + const res = await fetch('/api/v1/upload', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${localStorage.getItem('token')}` + }, + body: formData + }); + + if (res.ok) { + const data = await res.json(); + return data.url; + } + return null; + } catch (err) { + console.error('Lỗi upload ảnh:', err); + return null; + } finally { + setIsUploading(false); + } + }; + + // Send Tour Message + const handleSendMessage = async (e?: React.FormEvent) => { + if (e) e.preventDefault(); + if (!newMessage.trim() && !selectedImage && !attachedLocation) return; + + let attachmentUrl = undefined; + if (selectedImage) { + attachmentUrl = await uploadImage(selectedImage); + if (!attachmentUrl) { + notify({ + title: 'Lỗi', + message: 'Không thể tải ảnh đính kèm lên server.', + type: 'error' + }); + return; + } + } + + const actualTaggedUserIds = taggedUserIds.filter(userId => { + const member = participants.find(p => p.id === userId); + if (!member || !member.name) return false; + + const cleanMessage = newMessage.toLowerCase(); + const nameLower = member.name.toLowerCase(); + + // Try exact match first + if (cleanMessage.includes(`@${nameLower}`)) return true; + + // Try match without parentheses (e.g. "Lộc Phạm (Chủ Tour)" -> "Lộc Phạm") + const nameWithoutParentheses = member.name.split('(')[0].trim().toLowerCase(); + if (nameWithoutParentheses && cleanMessage.includes(`@${nameWithoutParentheses}`)) return true; + + return false; + }); + + const payload = { + content: newMessage, + attachmentUrl, + latitude: attachedLocation?.latitude, + longitude: attachedLocation?.longitude, + taggedUserIds: actualTaggedUserIds + }; + + // Reset input fields immediately + setNewMessage(''); + setSelectedImage(null); + setImagePreview(null); + setAttachedLocation(null); + setTaggedUserIds([]); + + try { + const res = await fetch(`/api/v1/tours/${tourId}/messages`, { + method: 'POST', + headers: getHeaders(), + body: JSON.stringify(payload) + }); + + if (!res.ok) { + notify({ + title: 'Lỗi', + message: 'Gửi tin nhắn thất bại.', + type: 'error' + }); + } + } catch (err) { + console.error('Lỗi gửi tin nhắn:', err); + } + }; + + // Download image file helper + const handleDownloadImage = async (url: string, id: string) => { + try { + const response = await fetch(url); + const blob = await response.blob(); + const blobUrl = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = blobUrl; + link.download = `tour-chat-photo-${id}.jpg`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(blobUrl); + } catch (error) { + console.error('Lỗi tải ảnh:', error); + window.open(url, '_blank'); + } + }; + + // currentUserId is defined at the top + + return ( +
+ {/* Chat Header */} +
+ +
+

Trò chuyện nhóm hành trình

+

Nơi trao đổi thông tin, hình ảnh và định vị giữa các thành viên

+
+
+ + {/* Messages list */} +
+ {loading ? ( +
+ Đang tải tin nhắn... +
+ ) : messages.length === 0 ? ( +
+ + Chưa có tin nhắn nào trong phòng chat nhóm này. +
+ ) : ( + messages.map((msg) => { + const isMe = msg.senderId === currentUserId; + const initials = msg.sender?.name + ? msg.sender.name.split(' ').map((n: string) => n[0]).slice(0, 2).join('').toUpperCase() + : 'U'; + + return ( +
+ {!isMe && ( +
+ {msg.sender?.avatar ? ( + {msg.sender.name} + ) : initials} +
+ )} +
+ {!isMe && ( + + {msg.sender?.name || 'Thành viên'} + + )} +
+ {/* Attachment Image */} + {msg.attachmentUrl && ( +
+ Đính kèm + +
+ )} + + {/* GPS Location badge */} + {msg.latitude !== undefined && msg.latitude !== null && ( + + +
+ Vị trí hiện tại + {msg.latitude.toFixed(6)}, {msg.longitude.toFixed(6)} +
+
+ )} + + {/* Content text */} + {msg.content &&

{msg.content}

} +
+ + {new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} + +
+
+ ); + }) + )} +
+
+ + {/* Previews (Image & GPS Location) */} + {(imagePreview || attachedLocation) && ( +
+ {imagePreview && ( +
+ Preview + +
+ )} + {attachedLocation && ( +
+ + Đã đính kèm GPS + +
+ )} +
+ )} + + {/* Chat Input wrapper */} +
+ {/* Mention list dropdown */} + {showMentionList && filteredParticipants.length > 0 && ( +
+ {filteredParticipants.map((member, index) => ( + + ))} +
+ )} + + {/* Chat Input form */} +
+ + + {/* Attach photo button */} + + + {/* Share current GPS button */} + + + + + +
+
+
+ ); +}; diff --git a/frontend/src/pages/ExploreMap.tsx b/frontend/src/pages/ExploreMap.tsx index 087fc4a..8465ecc 100644 --- a/frontend/src/pages/ExploreMap.tsx +++ b/frontend/src/pages/ExploreMap.tsx @@ -5,9 +5,10 @@ const MarkerClusterGroup = (_MarkerClusterGroup as any).default || _MarkerCluste import L from 'leaflet'; import 'leaflet/dist/leaflet.css'; import { useTourStore } from '@/store/useTourStore'; -import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2, UserPlus, Clock } from 'lucide-react'; +import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2, UserPlus, Clock, ChevronLeft } from 'lucide-react'; import { UserManagementModal } from '@/components/UserManagementModal'; import { useNotification } from '@/hooks/useNotification'; +import { useConfirm } from '@/hooks/useConfirm'; import { CreateTourModal } from '../components/CreateTourModal'; import { PublicPhotoModal } from '../components/PublicPhotoModal'; @@ -65,6 +66,80 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, const setMapCenter = useTourStore(state => state.setMapCenter); const notify = useNotification(); + const confirm = useConfirm(); + + // Refs for mobile long-press detection + const touchTimerRef = React.useRef(null); + const touchMovedRef = React.useRef(false); + + // Phân loại trạng thái Tour dựa vào thời gian + const getTourStatus = (tour: any) => { + const now = new Date(); + const startDate = tour.startDate ? new Date(tour.startDate) : null; + const endDate = tour.endDate ? new Date(tour.endDate) : null; + if (endDate && endDate < now) { + return { color: 'white', borderClass: 'border-white', label: 'Hành trình đã kết thúc' }; + } + if (startDate && endDate && startDate <= now && endDate >= now) { + return { color: 'red', borderClass: 'border-rose-500', label: 'Hành trình đang diễn ra' }; + } + return { color: 'green', borderClass: 'border-emerald-500', label: 'Hành trình mới tạo' }; + }; + + const triggerJoinConfirmation = async (tour: any) => { + const currentUserId = user?.id; + const myParticipant = tour.participants?.find((p: any) => p.userId === currentUserId); + if (myParticipant) { + notify({ + title: 'Thông báo', + message: 'Bạn đã là thành viên của hành trình này.', + type: 'info' + }); + return; + } + const hasPendingRequest = tour.joinRequests && tour.joinRequests.length > 0; + if (hasPendingRequest) { + notify({ + title: 'Thông báo', + message: 'Bạn đã gửi yêu cầu tham gia hành trình này và đang chờ duyệt.', + type: 'info' + }); + return; + } + + const isConfirmed = await confirm({ + title: 'Yêu cầu tham gia Tour', + message: `Bạn có chắc chắn muốn gửi yêu cầu tham gia vào tour "${tour.title}" không?` + }); + + if (isConfirmed) { + try { + const res = await fetch(`/api/v1/tours/${tour.id}/join-requests`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + } + }); + const data = await res.json(); + if (!res.ok) { + throw new Error(data.message || 'Gửi yêu cầu tham gia thất bại.'); + } + notify({ + title: 'Thành công', + message: 'Đã gửi yêu cầu tham gia tour. Vui lòng chờ chủ tour duyệt.', + type: 'success' + }); + fetchPublicTours(); + } catch (err: any) { + notify({ + title: 'Lỗi', + message: err.message || 'Không thể gửi yêu cầu tham gia.', + type: 'error' + }); + } + } + }; // Khởi tạo vị trí từ localStorage nếu có, nếu không dùng mặc định (TP.HCM) const [initialViewState] = useState(() => { @@ -328,7 +403,7 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, className="w-11 h-11 flex items-center justify-center bg-white rounded-full shadow-xl hover:bg-gray-50 transition-all border border-gray-100 shrink-0" title="Quay lại" > - + {/* Nút lọc Tag và Dropdown */} @@ -487,43 +562,92 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, {filteredTours.map((tour) => { - const startLoc = tour.legs?.[0]?.locations?.[0]; + let startLoc = null; + if (tour.legs && tour.legs.length > 0) { + for (const leg of tour.legs) { + if (leg.locations && leg.locations.length > 0) { + startLoc = leg.locations[0]; + break; + } + } + } const tourImage = tour.photos?.[0]?.imageUrl || `https://picsum.photos/seed/${tour.id}/200/200`; const markerPos = startLoc ? [startLoc.latitude, startLoc.longitude] as [number, number] : userPos; + const status = getTourStatus(tour); return ( onViewTour(tour.id), - contextmenu: (e) => { - const currentUserId = user?.id; - const myParticipant = tour.participants?.find((p: any) => p.userId === currentUserId); - const isParticipant = !!myParticipant; - const myRole = myParticipant?.role; - const canShare = isParticipant && ['OWNER', 'MANAGER', 'MEMBER'].includes(myRole); - const hasPendingRequest = tour.joinRequests && tour.joinRequests.length > 0; + click: () => { + if (status.color === 'green') { + notify({ + title: 'Thông báo', + message: 'Đây là hành trình mới tạo. Vui lòng nhấn chuột phải (hoặc nhấn giữ trên màn hình điện thoại) để gửi yêu cầu tham gia.', + type: 'info' + }); + } else { + onViewTour(tour.id); + } + }, + contextmenu: (e: any) => { + if (status.color === 'green') { + triggerJoinConfirmation(tour); + } else { + const currentUserId = user?.id; + const myParticipant = tour.participants?.find((p: any) => p.userId === currentUserId); + const isParticipant = !!myParticipant; + const myRole = myParticipant?.role; + const canShare = isParticipant && ['OWNER', 'MANAGER', 'MEMBER'].includes(myRole); + const hasPendingRequest = tour.joinRequests && tour.joinRequests.length > 0; - // Hiển thị menu tại vị trí chuột - setShareMenu({ - x: e.containerPoint.x, - y: e.containerPoint.y, - id: tour.id, - title: tour.title, - canShare, - isParticipant, - hasPendingRequest - }); + // Hiển thị menu tại vị trí chuột + setShareMenu({ + x: e.containerPoint.x, + y: e.containerPoint.y, + id: tour.id, + title: tour.title, + canShare, + isParticipant, + hasPendingRequest + }); + } + }, + touchstart: () => { + if (status.color === 'green') { + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + } + touchMovedRef.current = false; + touchTimerRef.current = setTimeout(() => { + if (!touchMovedRef.current) { + triggerJoinConfirmation(tour); + } + }, 700); + } + }, + touchend: () => { + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + touchTimerRef.current = null; + } + }, + touchmove: () => { + touchMovedRef.current = true; + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + touchTimerRef.current = null; + } } - }} + } as any} icon={L.divIcon({ className: 'custom-bubble', html: ` -
-
+
+
@@ -531,13 +655,13 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos,
`, - iconSize: [48, 48], - iconAnchor: [24, 24] + iconSize: [56, 56], + iconAnchor: [28, 28] })} > - -
-
{tour.title}
+ +
+
{tour.title}
{tour.tags && tour.tags.length > 0 && (
{tour.tags.map((tag: string) => ( @@ -546,10 +670,17 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos,
)} {tour.description && ( -
+
{tour.description}
)} +
+ + {status.label} +
diff --git a/frontend/src/pages/MemberDashboard.tsx b/frontend/src/pages/MemberDashboard.tsx new file mode 100644 index 0000000..e462845 --- /dev/null +++ b/frontend/src/pages/MemberDashboard.tsx @@ -0,0 +1,1813 @@ +import React, { useEffect, useState, useRef } from 'react'; +import { io, Socket } from 'socket.io-client'; +import { + Compass, + Users, + Image as ImageIcon, + MessageSquare, + LogOut, + Search, + Check, + X, + Trash2, + Send, + UserPlus, + Clock, + ChevronRight, + ChevronLeft, + Shield, + Calendar, + MapPin, + Download, + Loader2, + Bell, + BellOff +} from 'lucide-react'; +import { useTourStore } from '@/store/useTourStore'; +import { useNotification } from '@/hooks/useNotification'; +import { useConfirm } from '@/hooks/useConfirm'; +import { MyPhotosPage } from './MyPhotosPage'; + +interface MemberDashboardProps { + user: any; + onLogout: () => void; + onExploreTours: () => void; + onViewTour: (tourId: string, fromPage?: 'explore' | 'dashboard') => void; + onOpenMyPhotos: () => void; +} + +export const MemberDashboard: React.FC = ({ + user, + onLogout, + onExploreTours, + onViewTour +}) => { + const notify = useNotification(); + const confirm = useConfirm(); + + const publicTours = useTourStore(state => state.publicTours); + const fetchPublicTours = useTourStore(state => state.fetchPublicTours); + + const [activeTab, setActiveTab] = useState<'tours' | 'connections' | 'photos' | 'chats'>('tours'); + const [connectionSubTab, setConnectionSubTab] = useState<'list' | 'search' | 'pending'>('list'); + + // Connection states + const [connections, setConnections] = useState([]); + const [receivedRequests, setReceivedRequests] = useState([]); + const [sentRequests, setSentRequests] = useState([]); + + // User search states + const [searchQuery, setSearchQuery] = useState(''); + const [searchResults, setSearchResults] = useState([]); + const [searchingUsers, setSearchingUsers] = useState(false); + + // Photos states + const [photos, setPhotos] = useState([]); + + // Chat states + const [activeChatUser, setActiveChatUser] = useState(null); + const [chatMessages, setChatMessages] = useState([]); + const [newMessage, setNewMessage] = useState(''); + const messagesEndRef = useRef(null); + const socketRef = useRef(null); + + const [unreadChatSenders, setUnreadChatSenders] = useState([]); + const [unreadTourSenders, setUnreadTourSenders] = useState([]); + const [unreadTourChats, setUnreadTourChats] = useState([]); + + const [selectedImage, setSelectedImage] = useState(null); + const [imagePreview, setImagePreview] = useState(null); + const [attachedLocation, setAttachedLocation] = useState<{ latitude: number; longitude: number } | null>(null); + const [isUploading, setIsUploading] = useState(false); + const [isLocating, setIsLocating] = useState(false); + + const fileInputRef = useRef(null); + + const [isMobile, setIsMobile] = useState(window.innerWidth < 768); + + const [muteNotifications, setMuteNotifications] = useState(() => { + return localStorage.getItem('muteNotifications') === 'true'; + }); + const muteNotificationsRef = useRef(muteNotifications); + const [mobileShowDetail, setMobileShowDetail] = useState(false); + + useEffect(() => { + const handleResize = () => { + setIsMobile(window.innerWidth < 768); + }; + window.addEventListener('resize', handleResize); + return () => window.removeEventListener('resize', handleResize); + }, []); + + // Request browser Notification permission + useEffect(() => { + if ('Notification' in window && Notification.permission === 'default') { + Notification.requestPermission(); + } + }, []); + + const showSystemNotification = (title: string, body: string) => { + if (muteNotificationsRef.current) return; + if ('Notification' in window && Notification.permission === 'granted') { + try { + new Notification(title, { + body, + icon: '/favicon.ico' + }); + } catch (e) { + console.error('System Notification error:', e); + } + } + }; + + const isMemberOfMyTours = (senderId: string) => { + if (!publicTours) return false; + const userTours = publicTours.filter(tour => + tour.participants?.some((p: any) => p.userId === user?.id) + ); + return userTours.some(tour => + tour.participants?.some((p: any) => p.userId === senderId && p.userId !== user?.id) + ); + }; + + // Compress image to 2K (max 2048px longest side) + const compressImageTo2K = (file: File): Promise => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = (event) => { + const img = new Image(); + img.src = event.target?.result as string; + img.onload = () => { + const MAX_DIM = 2048; + let width = img.width; + let height = img.height; + + if (width > MAX_DIM || height > MAX_DIM) { + if (width > height) { + height = Math.round((height * MAX_DIM) / width); + width = MAX_DIM; + } else { + width = Math.round((width * MAX_DIM) / height); + height = MAX_DIM; + } + } + + const canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext('2d'); + if (!ctx) { + resolve(file); + return; + } + ctx.drawImage(img, 0, 0, width, height); + canvas.toBlob( + (blob) => { + if (blob) { + resolve(blob); + } else { + resolve(file); + } + }, + 'image/jpeg', + 0.85 + ); + }; + img.onerror = (err) => reject(err); + }; + reader.onerror = (err) => reject(err); + }); + }; + + // Upload image to backend + const uploadImage = async (file: File): Promise => { + try { + setIsUploading(true); + const compressedBlob = await compressImageTo2K(file); + const formData = new FormData(); + formData.append('image', compressedBlob, 'compressed.jpg'); + + const res = await fetch('/api/v1/upload', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${localStorage.getItem('token')}` + }, + body: formData + }); + + if (res.ok) { + const data = await res.json(); + return data.url; + } + return null; + } catch (err) { + console.error('Lỗi upload ảnh:', err); + return null; + } finally { + setIsUploading(false); + } + }; + + // Handle Location Sharing + const handleGetLocation = () => { + if (!navigator.geolocation) { + notify({ + title: 'Không hỗ trợ', + message: 'Trình duyệt của bạn không hỗ trợ định vị GPS.', + type: 'error' + }); + return; + } + + setIsLocating(true); + navigator.geolocation.getCurrentPosition( + (position) => { + setAttachedLocation({ + latitude: position.coords.latitude, + longitude: position.coords.longitude + }); + notify({ + title: 'Gắn vị trí thành công', + message: 'Vị trí hiện tại đã được đính kèm vào tin nhắn.', + type: 'success' + }); + setIsLocating(false); + }, + (error) => { + console.error('Lỗi định vị:', error); + notify({ + title: 'Lỗi GPS', + message: 'Không thể lấy vị trí hiện tại của bạn. Hãy kiểm tra quyền truy cập.', + type: 'error' + }); + setIsLocating(false); + }, + { enableHighAccuracy: true, timeout: 10000 } + ); + }; + + // Download image file helper + const handleDownloadImage = async (url: string, id: string) => { + try { + const response = await fetch(url); + const blob = await response.blob(); + const blobUrl = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = blobUrl; + link.download = `chat-photo-${id}.jpg`; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(blobUrl); + } catch (error) { + console.error('Lỗi tải ảnh:', error); + window.open(url, '_blank'); + } + }; + + const handleSelectTab = (tab: 'tours' | 'connections' | 'photos' | 'chats') => { + setActiveTab(tab); + if (tab === 'tours') { + setUnreadTourSenders([]); + setUnreadTourChats([]); + } + if (window.innerWidth < 768) { + setMobileShowDetail(true); + } + }; + + // Fetch connections, tours, and photos on mount + useEffect(() => { + fetchPublicTours(); + fetchConnections(); + fetchPhotos(); + }, []); + + const fetchConnectionsRef = useRef<() => Promise>(null as any); + const fetchPublicToursRef = useRef<() => Promise>(null as any); + const isMemberOfMyToursRef = useRef<(senderId: string) => boolean>(null as any); + + useEffect(() => { + fetchConnectionsRef.current = fetchConnections; + fetchPublicToursRef.current = fetchPublicTours; + isMemberOfMyToursRef.current = isMemberOfMyTours; + muteNotificationsRef.current = muteNotifications; + }); + + // Socket connection for realtime messaging + useEffect(() => { + if (!user?.id) return; + + // Connect to WebSocket using same origin/proxy + const socket = io(); + socketRef.current = socket; + + socket.on('connect', () => { + console.log('[WS] MemberDashboard connected:', socket.id); + socket.emit('joinUser', user.id); + }); + + socket.on('messageReceived', (message: any) => { + // If we are actively chatting with the sender of this message + if (activeChatUser && (message.senderId === activeChatUser.id || message.receiverId === activeChatUser.id)) { + setChatMessages(prev => [...prev, message]); + } else { + if (!muteNotificationsRef.current) { + // Show notification toast for new message + notify({ + title: 'Tin nhắn mới', + message: `${message.sender?.name || 'Ai đó'} gửi: "${message.content.substring(0, 30)}${message.content.length > 30 ? '...' : ''}"`, + type: 'success' + }); + // Show push notification + showSystemNotification( + `Tin nhắn mới từ ${message.sender?.name || 'Thành viên'}`, + message.content + ); + } + // Add to unread states + setUnreadChatSenders(prev => prev.includes(message.senderId) ? prev : [...prev, message.senderId]); + if (isMemberOfMyToursRef.current(message.senderId)) { + setUnreadTourSenders(prev => prev.includes(message.senderId) ? prev : [...prev, message.senderId]); + } + } + }); + + socket.on('connectionAccepted', (data: any) => { + if (!muteNotificationsRef.current) { + notify({ + title: 'Kết nối mới', + message: `${data.acceptedByName} đã chấp nhận yêu cầu kết nối của bạn.`, + type: 'success' + }); + } + fetchConnectionsRef.current(); + }); + + socket.on('tourMessageNotification', (data: any) => { + if (!muteNotificationsRef.current) { + notify({ + title: `Tin nhắn mới trong tour "${data.tourTitle}"`, + message: `${data.senderName}: "${data.content.substring(0, 30)}${data.content.length > 30 ? '...' : ''}"`, + type: 'success' + }); + + showSystemNotification( + `Tin nhắn mới trong tour "${data.tourTitle}"`, + `${data.senderName}: ${data.content}` + ); + } + + setUnreadTourChats(prev => prev.includes(data.tourId) ? prev : [...prev, data.tourId]); + }); + + socket.on('joinRequestAccepted', (data: any) => { + if (!muteNotificationsRef.current) { + notify({ + title: 'Yêu cầu tham gia được duyệt', + message: `Yêu cầu tham gia hành trình "${data.tourTitle}" của bạn đã được chấp nhận!`, + type: 'success' + }); + } + fetchPublicToursRef.current(); + }); + + return () => { + socket.disconnect(); + }; + }, [user?.id, activeChatUser]); + + // Autoscroll chat to bottom + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, [chatMessages]); + + const getHeaders = () => ({ + 'Authorization': `Bearer ${localStorage.getItem('token')}`, + 'Content-Type': 'application/json' + }); + + const fetchConnections = async () => { + try { + const res = await fetch('/api/v1/connections', { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + setConnections(data.connections || []); + setReceivedRequests(data.receivedRequests || []); + setSentRequests(data.sentRequests || []); + } + } catch (err) { + console.error('Lỗi khi tải danh sách kết nối:', err); + } + }; + + const fetchPhotos = async () => { + try { + const res = await fetch('/api/v1/users/me/photos', { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + setPhotos(data || []); + } + } catch (err) { + console.error('Lỗi tải ảnh cá nhân:', err); + } + }; + + // Search system users + useEffect(() => { + const delayDebounce = setTimeout(() => { + if (searchQuery.trim().length >= 2) { + performUserSearch(); + } else { + setSearchResults([]); + } + }, 400); + + return () => clearTimeout(delayDebounce); + }, [searchQuery]); + + const performUserSearch = async () => { + setSearchingUsers(true); + try { + const res = await fetch(`/api/v1/users?q=${encodeURIComponent(searchQuery)}`, { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + setSearchResults(data || []); + } + } catch (err) { + console.error('Lỗi tìm kiếm thành viên:', err); + } finally { + setSearchingUsers(false); + } + }; + + // Send a connection request + const handleSendConnectionRequest = async (receiverId: string) => { + try { + const res = await fetch('/api/v1/connections', { + method: 'POST', + headers: getHeaders(), + body: JSON.stringify({ receiverId }) + }); + const data = await res.json(); + if (!res.ok) throw new Error(data.message || 'Gửi lời mời thất bại.'); + + notify({ + title: 'Thành công', + message: 'Đã gửi lời mời kết nối thành công.', + type: 'success' + }); + fetchConnections(); + // Refresh search results to show pending status + performUserSearch(); + } catch (err: any) { + notify({ + title: 'Lỗi', + message: err.message, + type: 'error' + }); + } + }; + + // Accept or Reject connection request + const handleUpdateConnectionStatus = async (connId: string, status: 'ACCEPTED' | 'REJECTED') => { + try { + const res = await fetch(`/api/v1/connections/${connId}`, { + method: 'PATCH', + headers: getHeaders(), + body: JSON.stringify({ status }) + }); + if (res.ok) { + notify({ + title: 'Thành công', + message: status === 'ACCEPTED' ? 'Đã chấp nhận kết nối.' : 'Đã từ chối kết nối.', + type: 'success' + }); + fetchConnections(); + } + } catch (err) { + console.error('Lỗi cập nhật kết nối:', err); + } + }; + + // Change classification: FRIEND <-> FAMILY + const handleChangeConnectionType = async (connId: string, type: 'FRIEND' | 'FAMILY') => { + try { + const res = await fetch(`/api/v1/connections/${connId}`, { + method: 'PATCH', + headers: getHeaders(), + body: JSON.stringify({ type }) + }); + if (res.ok) { + notify({ + title: 'Đã cập nhật', + message: `Mối quan hệ đã được chuyển sang nhóm: ${type === 'FAMILY' ? 'Gia đình' : 'Bạn bè'}.`, + type: 'success' + }); + fetchConnections(); + } + } catch (err) { + console.error('Lỗi chuyển nhóm kết nối:', err); + } + }; + + // Remove connection + const handleRemoveConnection = async (connId: string, targetName: string) => { + const isConfirmed = await confirm({ + title: 'Hủy kết nối', + message: `Bạn có chắc chắn muốn hủy kết nối với ${targetName}?` + }); + + if (isConfirmed) { + try { + const res = await fetch(`/api/v1/connections/${connId}`, { + method: 'DELETE', + headers: getHeaders() + }); + if (res.ok) { + notify({ + title: 'Thành công', + message: 'Đã hủy kết nối thành công.', + type: 'success' + }); + fetchConnections(); + if (activeChatUser && connections.find(c => c.id === connId)?.targetUser?.id === activeChatUser.id) { + setActiveChatUser(null); + } + } + } catch (err) { + console.error('Lỗi hủy kết nối:', err); + } + } + }; + + // Fetch chat messages + const handleSelectChatUser = async (targetUser: any) => { + setActiveChatUser(targetUser); + setUnreadChatSenders(prev => prev.filter(id => id !== targetUser.id)); + setUnreadTourSenders(prev => prev.filter(id => id !== targetUser.id)); + setChatMessages([]); + try { + const res = await fetch(`/api/v1/messages/${targetUser.id}`, { headers: getHeaders() }); + if (res.ok) { + const data = await res.json(); + setChatMessages(data || []); + } + } catch (err) { + console.error('Lỗi tải tin nhắn:', err); + } + }; + + // Send chat message + const handleSendMessage = async (e?: React.FormEvent) => { + if (e) e.preventDefault(); + if (!newMessage.trim() && !selectedImage && !attachedLocation) return; + if (!activeChatUser) return; + + let attachmentUrl = undefined; + if (selectedImage) { + attachmentUrl = await uploadImage(selectedImage); + if (!attachmentUrl) { + notify({ + title: 'Lỗi', + message: 'Không thể tải ảnh đính kèm lên server.', + type: 'error' + }); + return; + } + } + + const payload = { + receiverId: activeChatUser.id, + content: newMessage, + attachmentUrl, + latitude: attachedLocation?.latitude, + longitude: attachedLocation?.longitude + }; + + setNewMessage(''); + setSelectedImage(null); + setImagePreview(null); + setAttachedLocation(null); + + try { + const res = await fetch('/api/v1/messages', { + method: 'POST', + headers: getHeaders(), + body: JSON.stringify(payload) + }); + if (res.ok) { + const data = await res.json(); + setChatMessages(prev => [...prev, data]); + } else { + notify({ + title: 'Lỗi', + message: 'Không thể gửi tin nhắn.', + type: 'error' + }); + } + } catch (err) { + console.error('Lỗi gửi tin nhắn:', err); + } + }; + + + + // Filter tours where the current logged-in user is a participant + const myTours = React.useMemo(() => { + if (!publicTours) return []; + return publicTours.filter(tour => + tour.participants?.some((p: any) => p.userId === user?.id) + ); + }, [publicTours, user?.id]); + + // Check relationship status for query results + const getConnectionStatusText = (targetId: string) => { + const isConnected = connections.find(c => c.targetUser?.id === targetId); + if (isConnected) { + return isConnected.type === 'FAMILY' ? 'Gia đình' : 'Bạn bè'; + } + const isPendingReceived = receivedRequests.find(r => r.requester?.id === targetId); + if (isPendingReceived) return 'Chờ bạn duyệt'; + + const isPendingSent = sentRequests.find(s => s.receiver?.id === targetId); + if (isPendingSent) return 'Đã gửi yêu cầu'; + + return null; + }; + + // Helper function to render a user's initials avatar +const renderInitialsAvatar = (name: string, sizeClass = 'w-10 h-10 text-sm') => { + const initials = name + ? name.split(' ').map(n => n[0]).slice(0, 2).join('').toUpperCase() + : 'U'; + return ( +
+ {initials} +
+ ); + }; + + // Define mobile back button handler + const handleMobileBack = () => { + if (activeTab === 'chats' && activeChatUser) { + setActiveChatUser(null); + } else { + setMobileShowDetail(false); + } + }; + + const showMobileHeader = isMobile && mobileShowDetail && activeTab !== 'photos' && !(activeTab === 'chats' && activeChatUser); + + if (isMobile && !mobileShowDetail) { + return ( +
+ {/* User Card */} +
+
+ {user?.avatar ? ( + {user.name} + ) : ( + renderInitialsAvatar(user?.name || 'User', 'w-20 h-20 text-2xl') + )} + +
+

+ {user?.name || 'Thành viên'} +

+

{user?.email}

+ {user?.isAdmin && ( + + Quản trị viên + + )} +
+ + {/* Explore Map Quick Button */} +
+ +
+ + {/* Menu Items List */} +
+ + + +
+ + {/* Bottom Menu Items */} +
+ + + +
+ + {/* Horizontal Divider ---- */} +
+ + {/* Logout Section */} +
+ +
+
+ ); + } + + return ( +
+ + {/* Background Glow */} +
+
+ +
+ + {/* Mobile Detail Header: Only on Mobile detail mode */} + {showMobileHeader && ( +
+ +
+

+ {activeTab === 'tours' && 'Hành trình của tôi'} + {activeTab === 'connections' && 'Danh sách bạn bè'} + {activeTab === 'chats' && 'Trò chuyện trực tiếp'} +

+
+
+ )} + + {/* Left Sidebar Menu (Desktop only) */} + {!isMobile && ( + + )} + + {/* Main Content Area */} +
+ {/* Background Glow */} + {!isMobile && ( + <> +
+
+ + )} + + {/* Tab content renders here */} +
+ + {/* TAB 1: MY TOURS */} + {activeTab === 'tours' && ( +
+
+
+

+ + Hành trình của tôi +

+

Danh sách các chuyến đi bạn tham gia (với vai trò chủ sở hữu, quản lý hoặc thành viên).

+
+
+ + {myTours.length === 0 ? ( +
+
+ +
+

Chưa có hành trình nào

+

Bạn chưa tham gia bất kỳ hành trình nào. Hãy bắt đầu bằng cách tìm các hành trình công khai hoặc tạo chuyến đi mới.

+ +
+ ) : ( +
+ {myTours.map((tour) => { + const status = (() => { + const now = new Date(); + const start = tour.startDate ? new Date(tour.startDate) : null; + const end = tour.endDate ? new Date(tour.endDate) : null; + if (end && end < now) return { color: 'gray', label: 'Đã hoàn thành', bg: 'bg-slate-800/80 border-slate-700 text-slate-400' }; + if (start && end && start <= now && end >= now) return { color: 'red', label: 'Đang diễn ra', bg: 'bg-rose-900/30 border-rose-800/50 text-rose-300' }; + return { color: 'green', label: 'Mới tạo / Sắp tới', bg: 'bg-emerald-900/30 border-emerald-800/50 text-emerald-300' }; + })(); + + const participant = tour.participants?.find((p: any) => p.userId === user?.id); + const roleLabel = participant?.role === 'OWNER' ? 'Chủ tour' : + participant?.role === 'MANAGER' ? 'Quản lý' : 'Thành viên'; + + return ( +
+
+
+
+ + {status.label} + +
+ {unreadTourChats.includes(tour.id) && ( + + Tin nhắn mới + + )} + + {roleLabel} + +
+
+ +

+ {tour.title} +

+ + {tour.description && ( +

+ {tour.description} +

+ )} + + {/* Tags */} + {tour.tags && tour.tags.length > 0 && ( +
+ {tour.tags.map((tag: string) => ( + + {tag} + + ))} +
+ )} +
+ +
+
+ + + {tour.startDate ? new Date(tour.startDate).toLocaleDateString('vi-VN') : 'N/A'} + {' - '} + {tour.endDate ? new Date(tour.endDate).toLocaleDateString('vi-VN') : 'N/A'} + +
+
+ + + +
+
+
+
+ ); + })} +
+ )} +
+ )} + + {/* TAB 2: CONNECTIONS */} + {activeTab === 'connections' && ( +
+
+

+ + Danh sách bạn bè +

+

Quản lý các mối quan hệ bạn bè, gia đình, duyệt các yêu cầu kết nối từ thành viên khác.

+
+ + {/* Sub-tabs for connections */} +
+ + + +
+ + {/* SUB TAB CONTENT 2.1: LIST CONNECTIONS */} + {connectionSubTab === 'list' && ( +
+ {connections.length === 0 ? ( +
+ +

Chưa có kết nối nào

+

Bạn chưa kết nối với ai. Hãy chuyển sang tìm kiếm để gửi lời mời.

+ +
+ ) : ( +
+ {connections.map((conn) => { + const connUser = conn.targetUser; + return ( +
+
+ {connUser.avatar ? ( + {connUser.name} + ) : ( + renderInitialsAvatar(connUser.name, 'w-12 h-12 text-base') + )} +
+

{connUser.name}

+

{connUser.email}

+
+ + {conn.type === 'FAMILY' ? 'Gia đình' : 'Bạn bè'} + +
+
+
+ +
+ {/* Classification selector */} + + +
+ + +
+
+
+ ); + })} +
+ )} +
+ )} + + {/* SUB TAB CONTENT 2.2: SEARCH USERS */} + {connectionSubTab === 'search' && ( +
+
+
+ + setSearchQuery(e.target.value)} + className="w-full bg-slate-950 border border-slate-800/80 rounded-2xl py-3 pl-11 pr-4 text-sm text-white placeholder-slate-500 outline-none focus:border-indigo-500/80 transition-all duration-150" + /> +
+ + {searchingUsers ? ( +
+ Đang tìm kiếm... +
+ ) : searchQuery.trim().length < 2 ? ( +
+ Vui lòng nhập tối thiểu 2 ký tự để tìm kiếm thành viên. +
+ ) : searchResults.length === 0 ? ( +
+ Không tìm thấy thành viên phù hợp. +
+ ) : ( +
+ {searchResults.map((usr) => { + const statusText = getConnectionStatusText(usr.id); + + return ( +
+
+ {usr.avatar ? ( + {usr.name} + ) : ( + renderInitialsAvatar(usr.name, 'w-10 h-10 text-xs') + )} +
+

{usr.name}

+

{usr.email}

+
+
+ +
+ {statusText ? ( + + {statusText} + + ) : ( + + )} +
+
+ ); + })} +
+ )} +
+
+ )} + + {/* SUB TAB CONTENT 2.3: PENDING REQUESTS */} + {connectionSubTab === 'pending' && ( +
+
+ {/* Received Requests */} +
+

+ Lời mời nhận được ({receivedRequests.length}) +

+ {receivedRequests.length === 0 ? ( +
+ Không có lời mời kết nối nào. +
+ ) : ( +
+ {receivedRequests.map((req) => ( +
+
+ {req.requester?.avatar ? ( + {req.requester.name} + ) : ( + renderInitialsAvatar(req.requester?.name || 'User', 'w-10 h-10 text-xs') + )} +
+

{req.requester?.name}

+

{req.requester?.email}

+
+
+ +
+ + +
+
+ ))} +
+ )} +
+ + {/* Sent Requests */} +
+

+ Yêu cầu đã gửi ({sentRequests.length}) +

+ {sentRequests.length === 0 ? ( +
+ Không có yêu cầu đang chờ duyệt. +
+ ) : ( +
+ {sentRequests.map((req) => ( +
+
+ {req.receiver?.avatar ? ( + {req.receiver.name} + ) : ( + renderInitialsAvatar(req.receiver?.name || 'User', 'w-10 h-10 text-xs') + )} +
+

{req.receiver?.name}

+

{req.receiver?.email}

+
+
+ + +
+ ))} +
+ )} +
+
+
+ )} +
+ )} + + {/* TAB 3: PERSONAL PHOTOS */} + {activeTab === 'photos' && ( +
+ setMobileShowDetail(false) : () => setActiveTab('tours')} /> +
+ )} + + {/* TAB 4: REALTIME CHAT */} + {activeTab === 'chats' && ( +
+ + {/* Chats List sidebar: show if not mobile OR if mobile and no active chat user */} + {(!isMobile || !activeChatUser) && ( +
+
+

Chọn người hội thoại

+
+ +
+ {connections.length === 0 ? ( +
+ Bạn cần kết bạn trước khi có thể nhắn tin. +
+ ) : ( + connections.map((conn) => { + const connUser = conn.targetUser; + const isActive = activeChatUser && activeChatUser.id === connUser.id; + + return ( + + ); + }) + )} +
+
+ )} + + {/* Chat Window Panel: show if not mobile OR if mobile and active chat user */} + {(!isMobile || activeChatUser) && ( +
+ {activeChatUser ? ( + <> + {/* Chat Header */} +
+
+ {isMobile && ( + + )} + {activeChatUser.avatar ? ( + {activeChatUser.name} + ) : ( + renderInitialsAvatar(activeChatUser.name, 'w-10 h-10 text-xs') + )} +
+

{activeChatUser.name}

+ + + Trực tuyến (Realtime) + +
+
+
+ + {/* Chat Messages Panel */} +
+ {chatMessages.length === 0 ? ( +
+ + Chưa có tin nhắn nào. Gửi tin nhắn để bắt đầu cuộc hội thoại! +
+ ) : ( + chatMessages.map((msg) => { + const isMe = msg.senderId === user.id; + return ( +
+
+ {msg.attachmentUrl && ( +
+ Đính kèm + +
+ )} + + {msg.latitude !== undefined && msg.latitude !== null && ( + + +
+ Vị trí hiện tại + {msg.latitude.toFixed(6)}, {msg.longitude.toFixed(6)} +
+
+ )} + + {msg.content &&

{msg.content}

} +
+ + {new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} + +
+ ); + }) + )} +
+
+ + {/* Previews (Image & GPS Location) */} + {(imagePreview || attachedLocation) && ( +
+ {imagePreview && ( +
+ Preview + +
+ )} + {attachedLocation && ( +
+ + Đã đính kèm GPS + +
+ )} +
+ )} + + {/* Chat Input form */} +
+ { + const file = e.target.files?.[0]; + if (file) { + setSelectedImage(file); + setImagePreview(URL.createObjectURL(file)); + } + }} + className="hidden" + /> + + + + + + setNewMessage(e.target.value)} + placeholder={isUploading ? "Đang tải ảnh lên..." : `Nhắn cho ${activeChatUser.name.split(' ').pop()}...`} + disabled={isUploading} + className="flex-1 bg-slate-950 border border-slate-800 rounded-2xl py-3 px-4 text-xs text-white placeholder-slate-500 outline-none focus:border-indigo-500/80 transition-all disabled:bg-slate-900 disabled:cursor-not-allowed" + /> + +
+ + ) : ( +
+ + Chọn một kết nối bên trái để bắt đầu cuộc trò chuyện trực tiếp! +
+ )} +
+ )} +
+ )} + +
+
+
+
+ ); +}; diff --git a/frontend/src/pages/MyPhotosPage.tsx b/frontend/src/pages/MyPhotosPage.tsx index e36e8fa..7602bb0 100644 --- a/frontend/src/pages/MyPhotosPage.tsx +++ b/frontend/src/pages/MyPhotosPage.tsx @@ -16,10 +16,10 @@ const getMostLikedPhoto = (photos: any[]) => { export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { const [photos, setPhotos] = useState([]); const [isLoading, setIsLoading] = useState(true); - const [selectedTourIdForPhoto, setSelectedTourIdForPhoto] = useState('all'); // Changed from filterTourId + const [selectedTourIdForPhoto, setSelectedTourIdForPhoto] = useState('all'); const [filterDate, setFilterDate] = useState(''); - const [selectedPhotoForDisplay, setSelectedPhotoForDisplay] = useState(null); // New state for large photo display - const [sortOrder, setSortOrder] = useState<'newest' | 'oldest'>('newest'); // 'newest' by default + const [selectedPhotoForDisplay, setSelectedPhotoForDisplay] = useState(null); + const [sortOrder, setSortOrder] = useState<'newest' | 'oldest'>('newest'); const notify = useNotification(); const confirm = useConfirm(); @@ -100,9 +100,7 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { const updatedPhoto = await response.json(); notify({ title: 'Thành công', message: 'Thông tin ảnh đã được cập nhật.', type: 'success' }); - // Update photos list setPhotos(prev => prev.map(p => p.id === updatedPhoto.id ? { ...p, metadata: updatedPhoto.metadata } : p)); - // Update selectedPhotoForDisplay setSelectedPhotoForDisplay((prev: any) => prev ? ({ ...prev, metadata: updatedPhoto.metadata }) : null); setIsEditing(false); } catch (error) { @@ -171,7 +169,6 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { fetchPhotos(); }, []); - // Lấy danh sách các Tour duy nhất để hiển thị trong bộ lọc const toursWithPhotos = useMemo(() => { const tourMap = new Map(); photos.forEach(p => { @@ -182,36 +179,27 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { return Array.from(tourMap.values()); }, [photos]); - // Logic lọc ảnh tại Frontend const filteredPhotos = useMemo(() => { let photosToFilter = photos.filter(p => { const matchTour = selectedTourIdForPhoto === 'all' || p.tourId === selectedTourIdForPhoto; - // So sánh ngày định dạng YYYY-MM-DD const photoDate = p.capturedAt ? p.capturedAt.split('T')[0] : ''; const matchDate = !filterDate || photoDate === filterDate; return matchTour && matchDate; }); let sortedPhotos = photosToFilter; - // Sắp xếp ảnh if (sortOrder === 'newest') { sortedPhotos.sort((a, b) => new Date(b.capturedAt).getTime() - new Date(a.capturedAt).getTime()); - } else { // 'oldest' + } else { sortedPhotos.sort((a, b) => new Date(a.capturedAt).getTime() - new Date(b.capturedAt).getTime()); } return sortedPhotos; }, [photos, selectedTourIdForPhoto, filterDate, sortOrder]); - // Effect để thiết lập ảnh được chọn hiển thị hoặc reset nếu ảnh hiện tại không còn trong danh sách lọc useEffect(() => { if (filteredPhotos.length > 0 && (!selectedPhotoForDisplay || !filteredPhotos.some(p => p.id === selectedPhotoForDisplay.id))) { setSelectedPhotoForDisplay(getMostLikedPhoto(filteredPhotos)); } else if (filteredPhotos.length === 0) { setSelectedPhotoForDisplay(null); - } else if (selectedPhotoForDisplay) { - // Nếu ảnh đang chọn vẫn còn trong danh sách lọc, không làm gì cả - } else { - // Nếu không có ảnh nào để hiển thị - setSelectedPhotoForDisplay(null); // No photos to display } }, [filteredPhotos, selectedPhotoForDisplay]); @@ -234,73 +222,66 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { if (!response.ok) throw new Error('Failed to delete photo'); notify({ title: 'Thành công', message: 'Ảnh đã được xóa.', type: 'success' }); - // Cập nhật lại danh sách ảnh sau khi xóa setPhotos(prev => prev.filter(p => p.id !== photoId)); - setSelectedPhotoForDisplay(null); // Reset ảnh đang hiển thị + setSelectedPhotoForDisplay(null); } catch (error) { notify({ title: 'Lỗi', message: 'Không thể xóa ảnh. Vui lòng thử lại.', type: 'error' }); } }; - return ( -
+
{/* Header */} -
-
-

Ảnh của tôi

-

Kho lưu trữ ảnh gốc cá nhân

+

Ảnh của tôi

+

Kho lưu trữ ảnh gốc cá nhân

- {/* Filter Bar - Thanh công cụ lọc */} -
-
+ {/* Filter Bar */} +
+
- Bộ lọc: + Bộ lọc:
- {/* Chỉ báo Tour hiện tại */}
-
+
{selectedTourIdForPhoto === 'all' ? 'Tất cả hành trình' : toursWithPhotos.find(t => t.id === selectedTourIdForPhoto)?.title || 'Tour đã chọn'}
- {/* Lọc theo Thời gian */}
setFilterDate(e.target.value)} - className="pl-3 pr-3 py-2 bg-gray-50 border border-gray-100 rounded-xl text-xs font-bold outline-none focus:ring-2 focus:ring-blue-500 transition-all text-gray-700 cursor-pointer" + className="pl-3 pr-3 py-2 bg-slate-950 border border-slate-800 rounded-xl text-xs font-bold outline-none focus:ring-2 focus:ring-indigo-500/80 transition-all text-slate-200 cursor-pointer" />
- {/* Lọc theo Sắp xếp */}
-
+
- - {/* Reset Filters - Nút xóa nhanh lọc */} {(selectedTourIdForPhoto !== 'all' || filterDate) && (
-
+
{isLoading ? ( -
- -

Đang tải kho ảnh...

+
+ +

Đang tải kho ảnh...

+
+ ) : photos.length === 0 ? ( +
+ +

Chưa có ảnh nào

+

Hãy tham gia các chuyến đi và lưu lại khoảnh khắc nhé!

) : (
-
+
{/* Left Column: Tour List */} -
-

Tour của bạn

+
+

Hành trình của bạn

@@ -350,87 +338,84 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => {
{/* Right Column: Large Photo Display */} -
+
{selectedPhotoForDisplay ? (
-
+
Selected Photo setIsFullscreen(true)} /> - {/* Overlays (Only show when not editing) */} {!isEditing && ( <> - {/* Like (Heart) button overlay */} + {/* Like Button */} - {/* Delete button overlay */} + {/* Delete Button */} - {/* Bottom metadata details gradient panel overlay */} -
+ {/* Metadata Overlay */} +
{selectedPhotoForDisplay.metadata?.title ? ( -

+

{selectedPhotoForDisplay.metadata.title}

) : ( - Chưa có tiêu đề + Chưa có tiêu đề )} {selectedPhotoForDisplay.metadata?.description ? ( -

+

{selectedPhotoForDisplay.metadata.description}

) : ( - Chưa có mô tả + Chưa có mô tả )}
- {/* Edit Button Overlay */}
- {/* Additional metadata info inside bottom overlay */} -
+
-
- - Ngày chụp: {new Date(selectedPhotoForDisplay.capturedAt).toLocaleDateString('vi-VN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })} +
+ + Ngày chụp: {new Date(selectedPhotoForDisplay.capturedAt).toLocaleDateString('vi-VN')}
-
+
Địa điểm: {resolvedAddress}
{selectedPhotoForDisplay.tour?.title && ( -
+
Hành trình: {selectedPhotoForDisplay.tour.title}
)} @@ -440,9 +425,9 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { - Tải ảnh gốc + Tải ảnh gốc )}
@@ -453,53 +438,53 @@ export const MyPhotosPage = ({ onBack }: { onBack: () => void }) => { {isEditing && (
-
-

Chỉnh sửa thông tin ảnh

+
+

Chỉnh sửa thông tin ảnh

- + setEditTitle(e.target.value)} placeholder="Nhập tiêu đề..." - className="w-full bg-white border border-gray-200 text-gray-800 rounded-xl px-3 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent" + className="w-full bg-slate-950 border border-slate-800 text-white rounded-xl px-3 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-indigo-500" />
- +