diff --git a/.prettierrc b/.prettierrc index 361b1b49..cee35a96 100644 --- a/.prettierrc +++ b/.prettierrc @@ -7,7 +7,7 @@ "useTabs": false, "bracketSpacing": true, "arrowParens": "always", - "endOfLine": "lf", + "endOfLine": "auto", "quoteProps": "as-needed", "overrides": [ { diff --git a/package-lock.json b/package-lock.json index f2268f9e..bda3f292 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3349,9 +3349,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3368,9 +3365,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3387,9 +3381,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3406,9 +3397,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3425,9 +3413,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3444,9 +3429,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3463,9 +3445,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3482,9 +3461,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3501,9 +3477,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3526,9 +3499,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3551,9 +3521,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3576,9 +3543,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3601,9 +3565,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3626,9 +3587,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3651,9 +3609,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3676,9 +3631,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ diff --git a/src/ab-testing/ab-testing.module.ts b/src/ab-testing/ab-testing.module.ts index 09eff885..8713de22 100644 --- a/src/ab-testing/ab-testing.module.ts +++ b/src/ab-testing/ab-testing.module.ts @@ -34,5 +34,4 @@ import { ABTestingController } from './ab-testing.controller'; ABTestingReportsService, ], }) -export class ABTestingModule { -} +export class ABTestingModule {} diff --git a/src/ab-testing/analysis/statistical-analysis.service.ts b/src/ab-testing/analysis/statistical-analysis.service.ts index e95d521a..a56e55e6 100644 --- a/src/ab-testing/analysis/statistical-analysis.service.ts +++ b/src/ab-testing/analysis/statistical-analysis.service.ts @@ -245,7 +245,10 @@ export class StatisticalAnalysisService { return Math.max(0, Math.min(1, 1 / (1 + Math.exp(-zScore + 2)))); } - private calculateCohensD(controlMetrics: VariantMetric[], variantMetrics: VariantMetric[]): number { + private calculateCohensD( + controlMetrics: VariantMetric[], + variantMetrics: VariantMetric[], + ): number { if (controlMetrics.length === 0 || variantMetrics.length === 0) return 0; const controlMean = @@ -257,12 +260,16 @@ export class StatisticalAnalysisService { const denomV = Math.max(variantMetrics.length - 1, 1); const controlVar = - controlMetrics.reduce((sum, m) => sum + Math.pow(Number(m.value) - controlMean, 2), 0) / denomC; + controlMetrics.reduce((sum, m) => sum + Math.pow(Number(m.value) - controlMean, 2), 0) / + denomC; const variantVar = - variantMetrics.reduce((sum, m) => sum + Math.pow(Number(m.value) - variantMean, 2), 0) / denomV; + variantMetrics.reduce((sum, m) => sum + Math.pow(Number(m.value) - variantMean, 2), 0) / + denomV; - const pooledStdDev = Math.sqrt(((controlMetrics.length - 1) * controlVar + (variantMetrics.length - 1) * variantVar) / - Math.max(controlMetrics.length + variantMetrics.length - 2, 1)); + const pooledStdDev = Math.sqrt( + ((controlMetrics.length - 1) * controlVar + (variantMetrics.length - 1) * variantVar) / + Math.max(controlMetrics.length + variantMetrics.length - 2, 1), + ); return pooledStdDev > 0 ? Math.abs(variantMean - controlMean) / pooledStdDev : 0; } diff --git a/src/ab-testing/automation/automated-decision.service.ts b/src/ab-testing/automation/automated-decision.service.ts index c8bbbabe..dfa84615 100644 --- a/src/ab-testing/automation/automated-decision.service.ts +++ b/src/ab-testing/automation/automated-decision.service.ts @@ -49,8 +49,7 @@ export class AutomatedDecisionService { const defaultCriteria: IWinnerSelectionCriteria = { confidenceLevel: experiment.confidenceLevel ?? AB_TESTING_CONSTANTS.DEFAULT_CONFIDENCE_LEVEL, - minimumSampleSize: - experiment.minimumSampleSize ?? AB_TESTING_CONSTANTS.MINIMUM_SAMPLE_SIZE, + minimumSampleSize: experiment.minimumSampleSize ?? AB_TESTING_CONSTANTS.MINIMUM_SAMPLE_SIZE, effectSizeThreshold: AB_TESTING_CONSTANTS.EFFECT_SIZE_THRESHOLD, durationThreshold: AB_TESTING_CONSTANTS.DURATION_THRESHOLD_DAYS, }; @@ -263,14 +262,13 @@ export class AutomatedDecisionService { }); if (winner) { recommendations.winnerCandidate = winner.id; - recommendations.recommendations.push(`Variant "${winner.name}" is the recommended winner`); + recommendations.recommendations.push( + `Variant "${winner.name}" is the recommended winner`, + ); } } } else { - const remainingDays = Math.max( - 0, - AB_TESTING_CONSTANTS.DURATION_THRESHOLD_DAYS - duration, - ); + const remainingDays = Math.max(0, AB_TESTING_CONSTANTS.DURATION_THRESHOLD_DAYS - duration); recommendations.recommendations.push( `Wait ${remainingDays} more days before making decision`, ); @@ -300,8 +298,7 @@ export class AutomatedDecisionService { for (let i = 0; i < variants.length; i++) { const variant = variants[i]; const score = performanceScores[i]; - variant.trafficAllocation = - totalScore > 0 ? score.score / totalScore : 1 / variants.length; + variant.trafficAllocation = totalScore > 0 ? score.score / totalScore : 1 / variants.length; await this.variantRepository.save(variant); } diff --git a/src/ab-testing/entities/experiment-metric.entity.ts b/src/ab-testing/entities/experiment-metric.entity.ts index 081931e5..e03e83b4 100644 --- a/src/ab-testing/entities/experiment-metric.entity.ts +++ b/src/ab-testing/entities/experiment-metric.entity.ts @@ -9,11 +9,11 @@ import { } from 'typeorm'; import { Experiment } from './experiment.entity'; export enum MetricType { - CONVERSION = 'conversion', - REVENUE = 'revenue', - ENGAGEMENT = 'engagement', - RETENTION = 'retention', - CUSTOM = 'custom' + CONVERSION = 'conversion', + REVENUE = 'revenue', + ENGAGEMENT = 'engagement', + RETENTION = 'retention', + CUSTOM = 'custom', } /** diff --git a/src/ab-testing/entities/experiment.entity.ts b/src/ab-testing/entities/experiment.entity.ts index 47714db2..fa6a5a2c 100644 --- a/src/ab-testing/entities/experiment.entity.ts +++ b/src/ab-testing/entities/experiment.entity.ts @@ -10,16 +10,16 @@ import { import { IExperimentVariant } from './experiment-variant.entity'; import { ExperimentMetric } from './experiment-metric.entity'; export enum ExperimentStatus { - DRAFT = 'draft', - RUNNING = 'running', - PAUSED = 'paused', - COMPLETED = 'completed', - ARCHIVED = 'archived' + DRAFT = 'draft', + RUNNING = 'running', + PAUSED = 'paused', + COMPLETED = 'completed', + ARCHIVED = 'archived', } export enum ExperimentType { - A_B_TEST = 'a_b_test', - MULTIVARIATE = 'multivariate', - MULTI_ARMED_BANDIT = 'multi_armed_bandit' + A_B_TEST = 'a_b_test', + MULTIVARIATE = 'multivariate', + MULTI_ARMED_BANDIT = 'multi_armed_bandit', } /** diff --git a/src/ab-testing/reporting/ab-testing-reports.service.ts b/src/ab-testing/reporting/ab-testing-reports.service.ts index a7400040..585f87ef 100644 --- a/src/ab-testing/reporting/ab-testing-reports.service.ts +++ b/src/ab-testing/reporting/ab-testing-reports.service.ts @@ -19,8 +19,8 @@ export interface IReportFilters { */ @Injectable() export class ABTestingReportsService { - private readonly logger = new Logger(ABTestingReportsService.name); - constructor( + private readonly logger = new Logger(ABTestingReportsService.name); + constructor( @InjectRepository(Experiment) private experimentRepository: Repository, @InjectRepository(IExperimentVariant) @@ -256,7 +256,9 @@ export class ABTestingReportsService { : 0, bestPerforming: performanceData.length > 0 - ? [...performanceData].sort((a, b) => b.improvementPercentage - a.improvementPercentage)[0] + ? [...performanceData].sort( + (a, b) => b.improvementPercentage - a.improvementPercentage, + )[0] : null, performanceData, }; diff --git a/src/app.controller.ts b/src/app.controller.ts index d59fe228..d2136437 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -1,7 +1,9 @@ import { Controller, Get } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; +import { SkipQuota } from './rate-limiting/decorators/quota.decorator'; @ApiTags('App') +@SkipQuota() @Controller() export class AppController { @Get() diff --git a/src/app.module.ts b/src/app.module.ts index 066fa640..beab586d 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,14 +1,30 @@ import { Module } from '@nestjs/common'; +import { APP_GUARD } from '@nestjs/core'; +import { ConfigModule } from '@nestjs/config'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { ScheduleModule } from '@nestjs/schedule'; import { AppController } from './app.controller'; import { SearchModule } from './search/search.module'; +import { RateLimitingModule } from './rate-limiting/rate-limiting.module'; +import { QuotaGuard } from './rate-limiting/guards/quota.guard'; +import { getDatabaseConfig } from './config/database.config'; +import { loadFeatureFlags } from './config/feature-flags.config'; + +const featureFlags = loadFeatureFlags(); import { DebuggingModule } from './debugging/debugging.module'; @Module({ imports: [ + ConfigModule.forRoot({ isGlobal: true }), + TypeOrmModule.forRoot(getDatabaseConfig()), + ScheduleModule.forRoot(), SearchModule, + ...(featureFlags.ENABLE_RATE_LIMITING ? [RateLimitingModule] : []), DebuggingModule, ], controllers: [AppController], - providers: [], + providers: featureFlags.ENABLE_RATE_LIMITING + ? [{ provide: APP_GUARD, useClass: QuotaGuard }] + : [], }) -export class AppModule {} +export class AppModule { } diff --git a/src/assessment/assessment.module.ts b/src/assessment/assessment.module.ts index 655da154..502d4336 100644 --- a/src/assessment/assessment.module.ts +++ b/src/assessment/assessment.module.ts @@ -14,15 +14,14 @@ import { Module } from '@nestjs/common'; * Registers the assessments module. */ @Module({ - imports: [TypeOrmModule.forFeature([Assessment, Question, AssessmentAttempt, Answer])], - controllers: [AssessmentsController], - providers: [ - AssessmentsService, - QuestionBankService, - ScoreCalculationService, - FeedbackGenerationService, - ], - exports: [AssessmentsService], + imports: [TypeOrmModule.forFeature([Assessment, Question, AssessmentAttempt, Answer])], + controllers: [AssessmentsController], + providers: [ + AssessmentsService, + QuestionBankService, + ScoreCalculationService, + FeedbackGenerationService, + ], + exports: [AssessmentsService], }) -export class AssessmentsModule { -} +export class AssessmentsModule {} diff --git a/src/assessment/assessments.service.ts b/src/assessment/assessments.service.ts index 5ee1f242..00800cd2 100644 --- a/src/assessment/assessments.service.ts +++ b/src/assessment/assessments.service.ts @@ -14,11 +14,11 @@ import { Question } from './entities/question.entity'; */ @Injectable() export class AssessmentsService { - constructor( + constructor( @InjectRepository(Assessment) - private readonly assessmentRepo: Repository, + private readonly assessmentRepo: Repository, @InjectRepository(AssessmentAttempt) - private readonly attemptRepo: Repository, + private readonly attemptRepo: Repository, @InjectRepository(Answer) private readonly answerRepo: Repository, private readonly scoringService: ScoreCalculationService, diff --git a/src/assessment/dto/create-assessment.dto.ts b/src/assessment/dto/create-assessment.dto.ts index ac637e2e..ac75f7ab 100644 --- a/src/assessment/dto/create-assessment.dto.ts +++ b/src/assessment/dto/create-assessment.dto.ts @@ -1,95 +1,105 @@ -import { IsString, IsNotEmpty, IsOptional, IsArray, IsUUID, IsEnum, IsNumber, Min, Max, } from 'class-validator'; +import { + IsString, + IsNotEmpty, + IsOptional, + IsArray, + IsUUID, + IsEnum, + IsNumber, + Min, + Max, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; export enum AssessmentType { - QUIZ = 'quiz', - EXAM = 'exam', - ASSIGNMENT = 'assignment', - PROJECT = 'project' + QUIZ = 'quiz', + EXAM = 'exam', + ASSIGNMENT = 'assignment', + PROJECT = 'project', } export enum AssessmentStatus { - DRAFT = 'draft', - PUBLISHED = 'published', - ARCHIVED = 'archived' + DRAFT = 'draft', + PUBLISHED = 'published', + ARCHIVED = 'archived', } /** * Defines the create Assessment payload. */ export class CreateAssessmentDto { - @ApiProperty({ - description: 'Assessment title', - example: 'JavaScript Fundamentals Quiz', - }) - @IsString({ message: 'Title must be a string' }) - @IsNotEmpty({ message: 'Title is required' }) - title: string; - @ApiProperty({ - description: 'Assessment description', - example: 'Test your knowledge of JavaScript basics', - }) - @IsString({ message: 'Description must be a string' }) - @IsNotEmpty({ message: 'Description is required' }) - description: string; - @ApiPropertyOptional({ - description: 'Type of assessment', - enum: AssessmentType, - default: AssessmentType.QUIZ, - }) - @IsOptional() - @IsEnum(AssessmentType, { message: 'Type must be a valid assessment type' }) - type?: AssessmentType; - @ApiPropertyOptional({ - description: 'Course ID this assessment belongs to', - example: '123e4567-e89b-12d3-a456-426614174000', - }) - @IsOptional() - @IsUUID('4', { message: 'Course ID must be a valid UUID' }) - courseId?: string; - @ApiPropertyOptional({ - description: 'Maximum score for this assessment', - example: 100, - minimum: 1, - maximum: 1000, - }) - @IsOptional() - @IsNumber({}, { message: 'Max score must be a number' }) - @Min(1, { message: 'Max score must be at least 1' }) - @Max(1000, { message: 'Max score cannot exceed 1000' }) - maxScore?: number; - @ApiPropertyOptional({ - description: 'Time limit in minutes', - example: 60, - minimum: 1, - maximum: 1440, - }) - @IsOptional() - @IsNumber({}, { message: 'Time limit must be a number' }) - @Min(1, { message: 'Time limit must be at least 1 minute' }) - @Max(1440, { message: 'Time limit cannot exceed 24 hours' }) - timeLimitMinutes?: number; - @ApiPropertyOptional({ - description: 'Whether this assessment is published', - default: false, - }) - @IsOptional() - @IsEnum(AssessmentStatus, { message: 'Status must be a valid assessment status' }) - status?: AssessmentStatus; - @ApiPropertyOptional({ - description: 'Array of question IDs', - type: [String], - }) - @IsOptional() - @IsArray({ message: 'Questions must be an array' }) - @IsUUID('4', { each: true, message: 'Each question ID must be a valid UUID' }) - questionIds?: string[]; - @ApiPropertyOptional({ - description: 'Assessment settings', - example: { - allowRetakes: true, - showCorrectAnswers: false, - randomizeQuestions: true, - }, - }) - @IsOptional() - settings?: Record; + @ApiProperty({ + description: 'Assessment title', + example: 'JavaScript Fundamentals Quiz', + }) + @IsString({ message: 'Title must be a string' }) + @IsNotEmpty({ message: 'Title is required' }) + title: string; + @ApiProperty({ + description: 'Assessment description', + example: 'Test your knowledge of JavaScript basics', + }) + @IsString({ message: 'Description must be a string' }) + @IsNotEmpty({ message: 'Description is required' }) + description: string; + @ApiPropertyOptional({ + description: 'Type of assessment', + enum: AssessmentType, + default: AssessmentType.QUIZ, + }) + @IsOptional() + @IsEnum(AssessmentType, { message: 'Type must be a valid assessment type' }) + type?: AssessmentType; + @ApiPropertyOptional({ + description: 'Course ID this assessment belongs to', + example: '123e4567-e89b-12d3-a456-426614174000', + }) + @IsOptional() + @IsUUID('4', { message: 'Course ID must be a valid UUID' }) + courseId?: string; + @ApiPropertyOptional({ + description: 'Maximum score for this assessment', + example: 100, + minimum: 1, + maximum: 1000, + }) + @IsOptional() + @IsNumber({}, { message: 'Max score must be a number' }) + @Min(1, { message: 'Max score must be at least 1' }) + @Max(1000, { message: 'Max score cannot exceed 1000' }) + maxScore?: number; + @ApiPropertyOptional({ + description: 'Time limit in minutes', + example: 60, + minimum: 1, + maximum: 1440, + }) + @IsOptional() + @IsNumber({}, { message: 'Time limit must be a number' }) + @Min(1, { message: 'Time limit must be at least 1 minute' }) + @Max(1440, { message: 'Time limit cannot exceed 24 hours' }) + timeLimitMinutes?: number; + @ApiPropertyOptional({ + description: 'Whether this assessment is published', + default: false, + }) + @IsOptional() + @IsEnum(AssessmentStatus, { message: 'Status must be a valid assessment status' }) + status?: AssessmentStatus; + @ApiPropertyOptional({ + description: 'Array of question IDs', + type: [String], + }) + @IsOptional() + @IsArray({ message: 'Questions must be an array' }) + @IsUUID('4', { each: true, message: 'Each question ID must be a valid UUID' }) + questionIds?: string[]; + @ApiPropertyOptional({ + description: 'Assessment settings', + example: { + allowRetakes: true, + showCorrectAnswers: false, + randomizeQuestions: true, + }, + }) + @IsOptional() + settings?: Record; } diff --git a/src/assessment/enums/assessment-status.enum.ts b/src/assessment/enums/assessment-status.enum.ts index 50347d52..e02c3cff 100644 --- a/src/assessment/enums/assessment-status.enum.ts +++ b/src/assessment/enums/assessment-status.enum.ts @@ -1,6 +1,6 @@ export enum AssessmentStatus { - IN_PROGRESS = 'in_progress', - SUBMITTED = 'submitted', - GRADED = 'graded', - TIMED_OUT = 'timed_out' + IN_PROGRESS = 'in_progress', + SUBMITTED = 'submitted', + GRADED = 'graded', + TIMED_OUT = 'timed_out', } diff --git a/src/assessment/enums/question-type.enum.ts b/src/assessment/enums/question-type.enum.ts index fd77df5b..3cf90b53 100644 --- a/src/assessment/enums/question-type.enum.ts +++ b/src/assessment/enums/question-type.enum.ts @@ -1,5 +1,5 @@ export enum QuestionType { - MULTIPLE_CHOICE = 'multiple_choice', - TRUE_FALSE = 'true_false', - CODING = 'coding' + MULTIPLE_CHOICE = 'multiple_choice', + TRUE_FALSE = 'true_false', + CODING = 'coding', } diff --git a/src/assessment/feedback/feedback-generation.service.ts b/src/assessment/feedback/feedback-generation.service.ts index c319fc38..30170ded 100644 --- a/src/assessment/feedback/feedback-generation.service.ts +++ b/src/assessment/feedback/feedback-generation.service.ts @@ -5,12 +5,10 @@ import { Injectable } from '@nestjs/common'; */ @Injectable() export class FeedbackGenerationService { - generate(score: number, maxScore: number): string { - const percentage = (score / maxScore) * 100; - if (percentage >= 80) - return 'Excellent performance 🎉'; - if (percentage >= 50) - return 'Good job, but there is room to improve 👍'; - return 'Keep practicing, you can do better 💪'; - } + generate(score: number, maxScore: number): string { + const percentage = (score / maxScore) * 100; + if (percentage >= 80) return 'Excellent performance 🎉'; + if (percentage >= 50) return 'Good job, but there is room to improve 👍'; + return 'Keep practicing, you can do better 💪'; + } } diff --git a/src/assessment/questions/question-bank.service.ts b/src/assessment/questions/question-bank.service.ts index d383c2c9..758d154a 100644 --- a/src/assessment/questions/question-bank.service.ts +++ b/src/assessment/questions/question-bank.service.ts @@ -8,15 +8,16 @@ import { InjectRepository } from '@nestjs/typeorm'; */ @Injectable() export class QuestionBankService { - constructor( + constructor( @InjectRepository(Question) - private readonly questionRepo: Repository) { } - create(question: Partial): Promise { - return this.questionRepo.save(question); - } - findByAssessment(assessmentId: string): Promise { - return this.questionRepo.find({ - where: { assessment: { id: assessmentId } }, - }); - } + private readonly questionRepo: Repository, + ) {} + create(question: Partial): Promise { + return this.questionRepo.save(question); + } + findByAssessment(assessmentId: string): Promise { + return this.questionRepo.find({ + where: { assessment: { id: assessmentId } }, + }); + } } diff --git a/src/audit-log/audit-log.service.ts b/src/audit-log/audit-log.service.ts index 83c38c43..6037cf4e 100644 --- a/src/audit-log/audit-log.service.ts +++ b/src/audit-log/audit-log.service.ts @@ -76,9 +76,9 @@ export interface IAuditReport { */ @Injectable() export class AuditLogService { - private readonly logger = new Logger(AuditLogService.name); - private readonly retentionDays: number; - constructor( + private readonly logger = new Logger(AuditLogService.name); + private readonly retentionDays: number; + constructor( @InjectRepository(AuditLog) private readonly auditRepo: Repository, private readonly configService: ConfigService, @@ -616,5 +616,5 @@ export class AuditLogService { } // Helper function for date comparison function MoreThanOrEqual(date: Date) { - return MoreThan(date); + return MoreThan(date); } diff --git a/src/audit-log/decorators/audit.decorator.ts b/src/audit-log/decorators/audit.decorator.ts index 3b87737e..0067e384 100644 --- a/src/audit-log/decorators/audit.decorator.ts +++ b/src/audit-log/decorators/audit.decorator.ts @@ -91,4 +91,4 @@ export const AuditLogout = (options?: Partial) => action: AuditAction.LOGOUT, category: AuditCategory.AUTHENTICATION, ...options, -}); + }); diff --git a/src/audit-log/enums/audit-action.enum.ts b/src/audit-log/enums/audit-action.enum.ts index 0cfc5393..b0227f37 100644 --- a/src/audit-log/enums/audit-action.enum.ts +++ b/src/audit-log/enums/audit-action.enum.ts @@ -1,67 +1,67 @@ export enum AuditAction { - // Authentication events - LOGIN = 'LOGIN', - LOGIN_FAILED = 'LOGIN_FAILED', - LOGOUT = 'LOGOUT', - REGISTER = 'REGISTER', - PASSWORD_RESET_REQUEST = 'PASSWORD_RESET_REQUEST', - PASSWORD_RESET = 'PASSWORD_RESET', - PASSWORD_CHANGE = 'PASSWORD_CHANGE', - EMAIL_VERIFIED = 'EMAIL_VERIFIED', - TOKEN_REFRESH = 'TOKEN_REFRESH', - SESSION_EXPIRED = 'SESSION_EXPIRED', - SESSION_REVOKED = 'SESSION_REVOKED', - // User management - USER_CREATED = 'USER_CREATED', - USER_UPDATED = 'USER_UPDATED', - USER_DELETED = 'USER_DELETED', - USER_ROLE_CHANGED = 'USER_ROLE_CHANGED', - USER_STATUS_CHANGED = 'USER_STATUS_CHANGED', - // Data access - DATA_VIEWED = 'DATA_VIEWED', - DATA_CREATED = 'DATA_CREATED', - DATA_UPDATED = 'DATA_UPDATED', - DATA_DELETED = 'DATA_DELETED', - DATA_EXPORTED = 'DATA_EXPORTED', - DATA_IMPORTED = 'DATA_IMPORTED', - // File operations - FILE_UPLOADED = 'FILE_UPLOADED', - FILE_DOWNLOADED = 'FILE_DOWNLOADED', - FILE_DELETED = 'FILE_DELETED', - FILE_SHARED = 'FILE_SHARED', - // API access - API_CALLED = 'API_CALLED', - API_RATE_LIMITED = 'API_RATE_LIMITED', - API_ERROR = 'API_ERROR', - // Security events - PERMISSION_DENIED = 'PERMISSION_DENIED', - SUSPICIOUS_ACTIVITY = 'SUSPICIOUS_ACTIVITY', - MFA_ENABLED = 'MFA_ENABLED', - MFA_DISABLED = 'MFA_DISABLED', - MFA_FAILED = 'MFA_FAILED', - // Admin operations - CONFIG_CHANGED = 'CONFIG_CHANGED', - SETTING_UPDATED = 'SETTING_UPDATED', - BACKUP_CREATED = 'BACKUP_CREATED', - BACKUP_RESTORED = 'BACKUP_RESTORED', - // Compliance - DATA_RETENTION_APPLIED = 'DATA_RETENTION_APPLIED', - AUDIT_LOG_EXPORTED = 'AUDIT_LOG_EXPORTED', - REPORT_GENERATED = 'REPORT_GENERATED' + // Authentication events + LOGIN = 'LOGIN', + LOGIN_FAILED = 'LOGIN_FAILED', + LOGOUT = 'LOGOUT', + REGISTER = 'REGISTER', + PASSWORD_RESET_REQUEST = 'PASSWORD_RESET_REQUEST', + PASSWORD_RESET = 'PASSWORD_RESET', + PASSWORD_CHANGE = 'PASSWORD_CHANGE', + EMAIL_VERIFIED = 'EMAIL_VERIFIED', + TOKEN_REFRESH = 'TOKEN_REFRESH', + SESSION_EXPIRED = 'SESSION_EXPIRED', + SESSION_REVOKED = 'SESSION_REVOKED', + // User management + USER_CREATED = 'USER_CREATED', + USER_UPDATED = 'USER_UPDATED', + USER_DELETED = 'USER_DELETED', + USER_ROLE_CHANGED = 'USER_ROLE_CHANGED', + USER_STATUS_CHANGED = 'USER_STATUS_CHANGED', + // Data access + DATA_VIEWED = 'DATA_VIEWED', + DATA_CREATED = 'DATA_CREATED', + DATA_UPDATED = 'DATA_UPDATED', + DATA_DELETED = 'DATA_DELETED', + DATA_EXPORTED = 'DATA_EXPORTED', + DATA_IMPORTED = 'DATA_IMPORTED', + // File operations + FILE_UPLOADED = 'FILE_UPLOADED', + FILE_DOWNLOADED = 'FILE_DOWNLOADED', + FILE_DELETED = 'FILE_DELETED', + FILE_SHARED = 'FILE_SHARED', + // API access + API_CALLED = 'API_CALLED', + API_RATE_LIMITED = 'API_RATE_LIMITED', + API_ERROR = 'API_ERROR', + // Security events + PERMISSION_DENIED = 'PERMISSION_DENIED', + SUSPICIOUS_ACTIVITY = 'SUSPICIOUS_ACTIVITY', + MFA_ENABLED = 'MFA_ENABLED', + MFA_DISABLED = 'MFA_DISABLED', + MFA_FAILED = 'MFA_FAILED', + // Admin operations + CONFIG_CHANGED = 'CONFIG_CHANGED', + SETTING_UPDATED = 'SETTING_UPDATED', + BACKUP_CREATED = 'BACKUP_CREATED', + BACKUP_RESTORED = 'BACKUP_RESTORED', + // Compliance + DATA_RETENTION_APPLIED = 'DATA_RETENTION_APPLIED', + AUDIT_LOG_EXPORTED = 'AUDIT_LOG_EXPORTED', + REPORT_GENERATED = 'REPORT_GENERATED', } export enum AuditSeverity { - INFO = 'INFO', - WARNING = 'WARNING', - ERROR = 'ERROR', - CRITICAL = 'CRITICAL' + INFO = 'INFO', + WARNING = 'WARNING', + ERROR = 'ERROR', + CRITICAL = 'CRITICAL', } export enum AuditCategory { - AUTHENTICATION = 'AUTHENTICATION', - AUTHORIZATION = 'AUTHORIZATION', - DATA_ACCESS = 'DATA_ACCESS', - DATA_MODIFICATION = 'DATA_MODIFICATION', - FILE_OPERATION = 'FILE_OPERATION', - SYSTEM = 'SYSTEM', - SECURITY = 'SECURITY', - COMPLIANCE = 'COMPLIANCE' + AUTHENTICATION = 'AUTHENTICATION', + AUTHORIZATION = 'AUTHORIZATION', + DATA_ACCESS = 'DATA_ACCESS', + DATA_MODIFICATION = 'DATA_MODIFICATION', + FILE_OPERATION = 'FILE_OPERATION', + SYSTEM = 'SYSTEM', + SECURITY = 'SECURITY', + COMPLIANCE = 'COMPLIANCE', } diff --git a/src/audit-log/tasks/audit-retention.task.ts b/src/audit-log/tasks/audit-retention.task.ts index 1dc74c81..545bc799 100644 --- a/src/audit-log/tasks/audit-retention.task.ts +++ b/src/audit-log/tasks/audit-retention.task.ts @@ -7,43 +7,41 @@ import { AuditLogService } from '../audit-log.service'; */ @Injectable() export class AuditRetentionTask { - private readonly logger = new Logger(AuditRetentionTask.name); - constructor(private readonly auditLogService: AuditLogService) { } - /** - * Run retention policy daily at 2 AM - */ - @Cron(CronExpression.EVERY_DAY_AT_2AM) - async handleDailyRetention(): Promise { - this.logger.log('Starting daily audit log retention policy...'); - try { - const deletedCount = await this.auditLogService.applyRetentionPolicy(); - this.logger.log(`Daily retention policy completed. Deleted ${deletedCount} old audit logs.`); - } - catch (error) { - this.logger.error('Failed to apply retention policy:', error); - } + private readonly logger = new Logger(AuditRetentionTask.name); + constructor(private readonly auditLogService: AuditLogService) {} + /** + * Run retention policy daily at 2 AM + */ + @Cron(CronExpression.EVERY_DAY_AT_2AM) + async handleDailyRetention(): Promise { + this.logger.log('Starting daily audit log retention policy...'); + try { + const deletedCount = await this.auditLogService.applyRetentionPolicy(); + this.logger.log(`Daily retention policy completed. Deleted ${deletedCount} old audit logs.`); + } catch (error) { + this.logger.error('Failed to apply retention policy:', error); } - /** - * Generate weekly report every Monday at 3 AM - */ - @Cron('0 3 * * 1') // Every Monday at 3 AM - async handleWeeklyReport(): Promise { - this.logger.log('Generating weekly audit report...'); - try { - const endDate = new Date(); - const startDate = new Date(); - startDate.setDate(startDate.getDate() - 7); - const report = await this.auditLogService.generateReport(startDate, endDate); - this.logger.log('Weekly report generated:', { - totalEvents: report.totalEvents, - criticalEvents: report.eventsBySeverity['CRITICAL'] || 0, - errorEvents: report.eventsBySeverity['ERROR'] || 0, - }); - // In a real implementation, you might send this report via email - // or store it for compliance purposes - } - catch (error) { - this.logger.error('Failed to generate weekly report:', error); - } + } + /** + * Generate weekly report every Monday at 3 AM + */ + @Cron('0 3 * * 1') // Every Monday at 3 AM + async handleWeeklyReport(): Promise { + this.logger.log('Generating weekly audit report...'); + try { + const endDate = new Date(); + const startDate = new Date(); + startDate.setDate(startDate.getDate() - 7); + const report = await this.auditLogService.generateReport(startDate, endDate); + this.logger.log('Weekly report generated:', { + totalEvents: report.totalEvents, + criticalEvents: report.eventsBySeverity['CRITICAL'] || 0, + errorEvents: report.eventsBySeverity['ERROR'] || 0, + }); + // In a real implementation, you might send this report via email + // or store it for compliance purposes + } catch (error) { + this.logger.error('Failed to generate weekly report:', error); } + } } diff --git a/src/auth/decorators/current-user.decorator.ts b/src/auth/decorators/current-user.decorator.ts index fab8f8ed..4c024586 100644 --- a/src/auth/decorators/current-user.decorator.ts +++ b/src/auth/decorators/current-user.decorator.ts @@ -1,6 +1,6 @@ import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const CurrentUser = createParamDecorator((data: string, ctx: ExecutionContext) => { - const request = ctx.switchToHttp().getRequest(); - const user = request.user; - return data ? user?.[data] : user; + const request = ctx.switchToHttp().getRequest(); + const user = request.user; + return data ? user?.[data] : user; }); diff --git a/src/auth/guards/jwt-auth.guard.ts b/src/auth/guards/jwt-auth.guard.ts index 39aa3eb6..7eddb37d 100644 --- a/src/auth/guards/jwt-auth.guard.ts +++ b/src/auth/guards/jwt-auth.guard.ts @@ -6,5 +6,4 @@ import { AUTH_STRATEGY } from '../../common/constants/auth.constants'; * Protects jwt Auth execution paths. */ @Injectable() -export class JwtAuthGuard extends AuthGuard(AUTH_STRATEGY.JWT) { -} +export class JwtAuthGuard extends AuthGuard(AUTH_STRATEGY.JWT) {} diff --git a/src/backup/dto/backup-response.dto.ts b/src/backup/dto/backup-response.dto.ts index df9dafc5..d8f156d9 100644 --- a/src/backup/dto/backup-response.dto.ts +++ b/src/backup/dto/backup-response.dto.ts @@ -16,51 +16,51 @@ import { * Defines the backup Response payload. */ export class BackupResponseDto { - @ApiProperty() - @IsNotEmpty() - @IsUUID() - @IsString() - id: string; - @ApiProperty({ enum: BackupType }) - @IsNotEmpty() - backupType: BackupType; - @ApiProperty({ enum: BackupStatus }) - @IsNotEmpty() - status: BackupStatus; - @ApiProperty({ enum: Region }) - @IsNotEmpty() - region: Region; - @ApiProperty() - @IsNotEmpty() - @IsString() - databaseName: string; - @ApiPropertyOptional() - @IsOptional() - @IsNumber() - backupSizeBytes?: number; - @ApiPropertyOptional() - @IsOptional() - @IsBoolean() - integrityVerified?: boolean; - @ApiPropertyOptional() - @IsOptional() - @IsDate() - completedAt?: Date; - @ApiPropertyOptional() - @IsOptional() - @IsDate() - expiresAt?: Date; - @ApiProperty() - @IsNotEmpty() - @IsDate() - createdAt: Date; - @ApiPropertyOptional() - @IsOptional() - @IsString() - metadata?: { - pgVersion?: string; - tableCounts?: Record; - totalRows?: number; - dumpDuration?: number; - }; + @ApiProperty() + @IsNotEmpty() + @IsUUID() + @IsString() + id: string; + @ApiProperty({ enum: BackupType }) + @IsNotEmpty() + backupType: BackupType; + @ApiProperty({ enum: BackupStatus }) + @IsNotEmpty() + status: BackupStatus; + @ApiProperty({ enum: Region }) + @IsNotEmpty() + region: Region; + @ApiProperty() + @IsNotEmpty() + @IsString() + databaseName: string; + @ApiPropertyOptional() + @IsOptional() + @IsNumber() + backupSizeBytes?: number; + @ApiPropertyOptional() + @IsOptional() + @IsBoolean() + integrityVerified?: boolean; + @ApiPropertyOptional() + @IsOptional() + @IsDate() + completedAt?: Date; + @ApiPropertyOptional() + @IsOptional() + @IsDate() + expiresAt?: Date; + @ApiProperty() + @IsNotEmpty() + @IsDate() + createdAt: Date; + @ApiPropertyOptional() + @IsOptional() + @IsString() + metadata?: { + pgVersion?: string; + tableCounts?: Record; + totalRows?: number; + dumpDuration?: number; + }; } diff --git a/src/backup/dto/recovery-test-response.dto.ts b/src/backup/dto/recovery-test-response.dto.ts index 90d658a9..a682597b 100644 --- a/src/backup/dto/recovery-test-response.dto.ts +++ b/src/backup/dto/recovery-test-response.dto.ts @@ -6,47 +6,47 @@ import { IsNotEmpty, IsUUID, IsString, IsOptional, IsNumber, IsDate } from 'clas * Defines the recovery Test Response payload. */ export class RecoveryTestResponseDto { - @ApiProperty() - @IsNotEmpty() - @IsUUID() - @IsString() - id: string; - @ApiProperty() - @IsNotEmpty() - @IsUUID() - @IsString() - backupRecordId: string; - @ApiProperty({ enum: RecoveryTestStatus }) - @IsNotEmpty() - status: RecoveryTestStatus; - @ApiProperty() - @IsNotEmpty() - @IsString() - testDatabaseName: string; - @ApiPropertyOptional() - @IsOptional() - @IsString() - validationResults?: { - tableCountMatch?: boolean; - rowCountMatch?: boolean; - checksumMatch?: boolean; - schemaValid?: boolean; - connectionSuccessful?: boolean; - queriesExecuted?: number; - errors?: string[]; - }; - @ApiPropertyOptional() - @IsOptional() - @IsNumber() - performanceMetrics?: { - totalDuration?: number; - }; - @ApiProperty() - @IsNotEmpty() - @IsDate() - createdAt: Date; - @ApiPropertyOptional() - @IsOptional() - @IsDate() - testCompletedAt?: Date; + @ApiProperty() + @IsNotEmpty() + @IsUUID() + @IsString() + id: string; + @ApiProperty() + @IsNotEmpty() + @IsUUID() + @IsString() + backupRecordId: string; + @ApiProperty({ enum: RecoveryTestStatus }) + @IsNotEmpty() + status: RecoveryTestStatus; + @ApiProperty() + @IsNotEmpty() + @IsString() + testDatabaseName: string; + @ApiPropertyOptional() + @IsOptional() + @IsString() + validationResults?: { + tableCountMatch?: boolean; + rowCountMatch?: boolean; + checksumMatch?: boolean; + schemaValid?: boolean; + connectionSuccessful?: boolean; + queriesExecuted?: number; + errors?: string[]; + }; + @ApiPropertyOptional() + @IsOptional() + @IsNumber() + performanceMetrics?: { + totalDuration?: number; + }; + @ApiProperty() + @IsNotEmpty() + @IsDate() + createdAt: Date; + @ApiPropertyOptional() + @IsOptional() + @IsDate() + testCompletedAt?: Date; } diff --git a/src/backup/dto/restore-backup.dto.ts b/src/backup/dto/restore-backup.dto.ts index 9dc6b5dd..77578772 100644 --- a/src/backup/dto/restore-backup.dto.ts +++ b/src/backup/dto/restore-backup.dto.ts @@ -5,9 +5,9 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the restore Backup payload. */ export class RestoreBackupDto { - @ApiProperty({ description: 'Backup record ID to restore from' }) - @IsUUID() - @IsNotEmpty() - @IsString() - backupRecordId: string; + @ApiProperty({ description: 'Backup record ID to restore from' }) + @IsUUID() + @IsNotEmpty() + @IsString() + backupRecordId: string; } diff --git a/src/backup/dto/trigger-recovery-test.dto.ts b/src/backup/dto/trigger-recovery-test.dto.ts index 8568a897..c3480c81 100644 --- a/src/backup/dto/trigger-recovery-test.dto.ts +++ b/src/backup/dto/trigger-recovery-test.dto.ts @@ -5,9 +5,9 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the trigger Recovery Test payload. */ export class TriggerRecoveryTestDto { - @ApiProperty({ description: 'Backup record ID to test' }) - @IsUUID() - @IsNotEmpty() - @IsString() - backupRecordId: string; + @ApiProperty({ description: 'Backup record ID to test' }) + @IsUUID() + @IsNotEmpty() + @IsString() + backupRecordId: string; } diff --git a/src/backup/enums/backup-status.enum.ts b/src/backup/enums/backup-status.enum.ts index f6b2a923..193d09d2 100644 --- a/src/backup/enums/backup-status.enum.ts +++ b/src/backup/enums/backup-status.enum.ts @@ -1,6 +1,6 @@ export enum BackupStatus { - PENDING = 'pending', - IN_PROGRESS = 'in_progress', - COMPLETED = 'completed', - FAILED = 'failed' + PENDING = 'pending', + IN_PROGRESS = 'in_progress', + COMPLETED = 'completed', + FAILED = 'failed', } diff --git a/src/backup/enums/backup-type.enum.ts b/src/backup/enums/backup-type.enum.ts index b68038f1..6de7758d 100644 --- a/src/backup/enums/backup-type.enum.ts +++ b/src/backup/enums/backup-type.enum.ts @@ -1,3 +1,3 @@ export enum BackupType { - FULL = 'full' + FULL = 'full', } diff --git a/src/backup/enums/recovery-test-status.enum.ts b/src/backup/enums/recovery-test-status.enum.ts index ad0cd1ae..9f6f08e4 100644 --- a/src/backup/enums/recovery-test-status.enum.ts +++ b/src/backup/enums/recovery-test-status.enum.ts @@ -1,6 +1,6 @@ export enum RecoveryTestStatus { - PENDING = 'pending', - RUNNING = 'running', - PASSED = 'passed', - FAILED = 'failed' + PENDING = 'pending', + RUNNING = 'running', + PASSED = 'passed', + FAILED = 'failed', } diff --git a/src/backup/enums/region.enum.ts b/src/backup/enums/region.enum.ts index c1f51fe1..132a26e7 100644 --- a/src/backup/enums/region.enum.ts +++ b/src/backup/enums/region.enum.ts @@ -1,4 +1,4 @@ export enum Region { - US_EAST_1 = 'us-east-1', - US_WEST_2 = 'us-west-2' + US_EAST_1 = 'us-east-1', + US_WEST_2 = 'us-west-2', } diff --git a/src/caching/caching.constants.ts b/src/caching/caching.constants.ts index 3009378d..7172e751 100644 --- a/src/caching/caching.constants.ts +++ b/src/caching/caching.constants.ts @@ -33,14 +33,14 @@ export const CACHE_REDIS_CLIENT = 'CACHE_REDIS_CLIENT'; * events after mutations; the CachingModule subscribes and deletes stale keys. */ export const CACHE_TTL = { - USER_SESSION: 604800, // 7 days - COURSE_METADATA: 900, // 15 minutes - COURSE_DETAILS: 300, // 5 minutes - SEARCH_RESULTS: 120, // 2 minutes - USER_PROFILE: 600, // 10 minutes - STATIC_CONTENT: 3600, // 1 hour - POPULAR_COURSES: 1800, // 30 minutes - ENROLLMENT_DATA: 300, // 5 minutes + USER_SESSION: 604800, // 7 days + COURSE_METADATA: 900, // 15 minutes + COURSE_DETAILS: 300, // 5 minutes + SEARCH_RESULTS: 120, // 2 minutes + USER_PROFILE: 600, // 10 minutes + STATIC_CONTENT: 3600, // 1 hour + POPULAR_COURSES: 1800, // 30 minutes + ENROLLMENT_DATA: 300, // 5 minutes } as const; export const CACHE_PREFIXES = { COURSE: 'cache:course', diff --git a/src/cdn/dto/upload-content.dto.ts b/src/cdn/dto/upload-content.dto.ts index 9958e60b..8bf98f7f 100644 --- a/src/cdn/dto/upload-content.dto.ts +++ b/src/cdn/dto/upload-content.dto.ts @@ -5,68 +5,68 @@ import { ApiPropertyOptional } from '@nestjs/swagger'; * Defines the upload Content payload. */ export class UploadContentDto { - @ApiPropertyOptional({ - description: 'Whether to optimize the content automatically', - default: true, - }) - @IsOptional() - @IsBoolean() - optimize?: boolean = true; - @ApiPropertyOptional({ - description: 'Target width for image optimization', - minimum: 1, - maximum: 4096, - }) - @IsOptional() - @IsNumber() - @Min(1) - @Max(4096) - width?: number; - @ApiPropertyOptional({ - description: 'Target height for image optimization', - minimum: 1, - maximum: 4096, - }) - @IsOptional() - @IsNumber() - @Min(1) - @Max(4096) - height?: number; - @ApiPropertyOptional({ - description: 'Image quality (1-100)', - minimum: 1, - maximum: 100, - }) - @IsOptional() - @IsNumber() - @Min(1) - @Max(100) - quality?: number; - @ApiPropertyOptional({ - description: 'Output format', - enum: ['webp', 'jpeg', 'png'], - }) - @IsOptional() - @IsString() - format?: 'webp' | 'jpeg' | 'png'; - @ApiPropertyOptional({ - description: 'User location for geo-optimization', - }) - @IsOptional() - @IsString() - userLocation?: string; - @ApiPropertyOptional({ - description: 'User bandwidth in Mbps for optimization', - minimum: 0, - }) - @IsOptional() - @IsNumber() - @Min(0) - bandwidth?: number; - @ApiPropertyOptional({ - description: 'Generate responsive image variants', - }) - @IsOptional() - @IsBoolean() - responsive?: boolean; + @ApiPropertyOptional({ + description: 'Whether to optimize the content automatically', + default: true, + }) + @IsOptional() + @IsBoolean() + optimize?: boolean = true; + @ApiPropertyOptional({ + description: 'Target width for image optimization', + minimum: 1, + maximum: 4096, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Max(4096) + width?: number; + @ApiPropertyOptional({ + description: 'Target height for image optimization', + minimum: 1, + maximum: 4096, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Max(4096) + height?: number; + @ApiPropertyOptional({ + description: 'Image quality (1-100)', + minimum: 1, + maximum: 100, + }) + @IsOptional() + @IsNumber() + @Min(1) + @Max(100) + quality?: number; + @ApiPropertyOptional({ + description: 'Output format', + enum: ['webp', 'jpeg', 'png'], + }) + @IsOptional() + @IsString() + format?: 'webp' | 'jpeg' | 'png'; + @ApiPropertyOptional({ + description: 'User location for geo-optimization', + }) + @IsOptional() + @IsString() + userLocation?: string; + @ApiPropertyOptional({ + description: 'User bandwidth in Mbps for optimization', + minimum: 0, + }) + @IsOptional() + @IsNumber() + @Min(0) + bandwidth?: number; + @ApiPropertyOptional({ + description: 'Generate responsive image variants', + }) + @IsOptional() + @IsBoolean() + responsive?: boolean; } diff --git a/src/cdn/entities/content-metadata.entity.ts b/src/cdn/entities/content-metadata.entity.ts index 73b56d41..d93f4694 100644 --- a/src/cdn/entities/content-metadata.entity.ts +++ b/src/cdn/entities/content-metadata.entity.ts @@ -9,17 +9,17 @@ import { } from 'typeorm'; export enum ContentType { - IMAGE = 'image', - VIDEO = 'video', - DOCUMENT = 'document', - AUDIO = 'audio' + IMAGE = 'image', + VIDEO = 'video', + DOCUMENT = 'document', + AUDIO = 'audio', } export enum ContentStatus { - UPLOADING = 'uploading', - PROCESSING = 'processing', - OPTIMIZED = 'optimized', - READY = 'ready', - FAILED = 'failed' + UPLOADING = 'uploading', + PROCESSING = 'processing', + OPTIMIZED = 'optimized', + READY = 'ready', + FAILED = 'failed', } /** diff --git a/src/collaboration/constants/collaboration-events.constants.ts b/src/collaboration/constants/collaboration-events.constants.ts index ed4a1ce4..99388ab1 100644 --- a/src/collaboration/constants/collaboration-events.constants.ts +++ b/src/collaboration/constants/collaboration-events.constants.ts @@ -1,22 +1,22 @@ export const COLLABORATION_EVENTS = { - // Inbound WebSocket messages - JOIN_SESSION: 'join-session', - COLLABORATIVE_OPERATION: 'collaborative-operation', - REQUEST_SYNC: 'request-sync', - RESOLVE_CONFLICT: 'resolve-conflict', - // Outbound WebSocket messages - USER_JOINED: 'user-joined', - SESSION_STATE: 'session-state', - OPERATION_APPLIED: 'operation-applied', - FULL_SYNC: 'full-sync', - CONFLICT_RESOLVED: 'conflict-resolved', + // Inbound WebSocket messages + JOIN_SESSION: 'join-session', + COLLABORATIVE_OPERATION: 'collaborative-operation', + REQUEST_SYNC: 'request-sync', + RESOLVE_CONFLICT: 'resolve-conflict', + // Outbound WebSocket messages + USER_JOINED: 'user-joined', + SESSION_STATE: 'session-state', + OPERATION_APPLIED: 'operation-applied', + FULL_SYNC: 'full-sync', + CONFLICT_RESOLVED: 'conflict-resolved', } as const; export const NOTIFICATION_GATEWAY_EVENTS = { - SUBSCRIBE: 'subscribe', - NOTIFICATION: 'notification', - BROADCAST_NOTIFICATION: 'broadcast_notification', - SUBSCRIBE_NOTIFICATIONS: 'subscribe_notifications', + SUBSCRIBE: 'subscribe', + NOTIFICATION: 'notification', + BROADCAST_NOTIFICATION: 'broadcast_notification', + SUBSCRIBE_NOTIFICATIONS: 'subscribe_notifications', } as const; export const MESSAGING_GATEWAY_EVENTS = { - SEND_MESSAGE: 'send_message', + SEND_MESSAGE: 'send_message', } as const; diff --git a/src/common/common.module.ts b/src/common/common.module.ts index e36d1897..a61e7539 100644 --- a/src/common/common.module.ts +++ b/src/common/common.module.ts @@ -11,5 +11,4 @@ import { LogShipperService } from './services/log-shipper.service'; providers: [TransactionHelperService, LogShipperService], exports: [TransactionHelperService, LogShipperService], }) -export class CommonModule { -} +export class CommonModule {} diff --git a/src/common/constants/app.constants.ts b/src/common/constants/app.constants.ts index 9e7eacfe..eab81498 100644 --- a/src/common/constants/app.constants.ts +++ b/src/common/constants/app.constants.ts @@ -3,26 +3,26 @@ * Centralized location for magic values and configuration constants */ export const APP_CONSTANTS = { - // Security constants - DUMMY_USER_ID: '00000000-0000-0000-0000-000000000000', - // Pagination defaults - DEFAULT_PAGE_SIZE: 10, - MAX_PAGE_SIZE: 100, // Max items allowed per page for paginated API responses - // Status values - COURSE_STATUS: { - DRAFT: 'draft', - PUBLISHED: 'published', - ARCHIVED: 'archived', - }, - ENROLLMENT_STATUS: { - ACTIVE: 'active', - COMPLETED: 'completed', - CANCELLED: 'cancelled', - }, - // Role constants - USER_ROLES: { - INSTRUCTOR: 'instructor', - STUDENT: 'student', - ADMIN: 'admin', - }, + // Security constants + DUMMY_USER_ID: '00000000-0000-0000-0000-000000000000', + // Pagination defaults + DEFAULT_PAGE_SIZE: 10, + MAX_PAGE_SIZE: 100, // Max items allowed per page for paginated API responses + // Status values + COURSE_STATUS: { + DRAFT: 'draft', + PUBLISHED: 'published', + ARCHIVED: 'archived', + }, + ENROLLMENT_STATUS: { + ACTIVE: 'active', + COMPLETED: 'completed', + CANCELLED: 'cancelled', + }, + // Role constants + USER_ROLES: { + INSTRUCTOR: 'instructor', + STUDENT: 'student', + ADMIN: 'admin', + }, } as const; diff --git a/src/common/constants/auth.constants.ts b/src/common/constants/auth.constants.ts index 5c8bb425..5b3dd5df 100644 --- a/src/common/constants/auth.constants.ts +++ b/src/common/constants/auth.constants.ts @@ -1,3 +1,3 @@ export const AUTH_STRATEGY = { - JWT: 'jwt', + JWT: 'jwt', } as const; diff --git a/src/common/constants/event.constants.ts b/src/common/constants/event.constants.ts index 7fa18851..a74b59c6 100644 --- a/src/common/constants/event.constants.ts +++ b/src/common/constants/event.constants.ts @@ -1,24 +1,24 @@ export const APP_EVENTS = { - // Data sync events - DATA_UPDATED: 'data.updated', - // Cache events - CACHE_INVALIDATED: 'cache.invalidated', - CACHE_PURGED: 'cache.purged', - // Data integrity events - DATA_CONSISTENCY_SCHEDULED: 'data.consistency.scheduled', - DATA_INTEGRITY_VIOLATION: 'data.integrity.violation', - // User events - USER_SIGNUP: 'user.signup', - USER_ADD_TAG: 'user.addTag', - USER_REMOVE_TAG: 'user.removeTag', - // Course events - COURSE_ENROLLED: 'course.enrolled', - COURSE_COMPLETED: 'course.completed', - // Payment events - PAYMENT_COMPLETED: 'payment.completed', - // Segment events - SEGMENT_ADD_USER: 'segment.addUser', - // Notification events - NOTIFICATION_SEND: 'notification.send', - NOTIFICATION_TEMPLATE_SEND: 'notification.template.send', + // Data sync events + DATA_UPDATED: 'data.updated', + // Cache events + CACHE_INVALIDATED: 'cache.invalidated', + CACHE_PURGED: 'cache.purged', + // Data integrity events + DATA_CONSISTENCY_SCHEDULED: 'data.consistency.scheduled', + DATA_INTEGRITY_VIOLATION: 'data.integrity.violation', + // User events + USER_SIGNUP: 'user.signup', + USER_ADD_TAG: 'user.addTag', + USER_REMOVE_TAG: 'user.removeTag', + // Course events + COURSE_ENROLLED: 'course.enrolled', + COURSE_COMPLETED: 'course.completed', + // Payment events + PAYMENT_COMPLETED: 'payment.completed', + // Segment events + SEGMENT_ADD_USER: 'segment.addUser', + // Notification events + NOTIFICATION_SEND: 'notification.send', + NOTIFICATION_TEMPLATE_SEND: 'notification.template.send', } as const; diff --git a/src/common/constants/queue.constants.ts b/src/common/constants/queue.constants.ts index 24956b0b..21e3ca63 100644 --- a/src/common/constants/queue.constants.ts +++ b/src/common/constants/queue.constants.ts @@ -1,36 +1,36 @@ export const QUEUE_NAMES = { - EMAIL: 'email', - EMAIL_MARKETING: 'email-marketing', - SYNC_TASKS: 'sync-tasks', - BACKUP_PROCESSING: 'backup-processing', - MESSAGE_QUEUE: 'message-queue', - MEDIA_PROCESSING: 'media-processing', - DEFAULT: 'default', - USER_DATA_EXPORT: 'user-data-export', - SUBSCRIPTIONS: 'subscriptions', - WEBHOOKS: 'webhooks', + EMAIL: 'email', + EMAIL_MARKETING: 'email-marketing', + SYNC_TASKS: 'sync-tasks', + BACKUP_PROCESSING: 'backup-processing', + MESSAGE_QUEUE: 'message-queue', + MEDIA_PROCESSING: 'media-processing', + DEFAULT: 'default', + USER_DATA_EXPORT: 'user-data-export', + SUBSCRIPTIONS: 'subscriptions', + WEBHOOKS: 'webhooks', } as const; export const JOB_NAMES = { - // Email queue - SEND_EMAIL: 'send-email', - // Email marketing queue - SEND_CAMPAIGN: 'send-campaign', - PROCESS_CAMPAIGN: 'process-campaign', - RESUME_CAMPAIGN: 'resume-campaign', - SEND_AUTOMATION_EMAIL: 'send-automation-email', - CONTINUE_AUTOMATION: 'continue-automation', - CALL_WEBHOOK: 'call-webhook', - // Sync tasks queue - CONSISTENCY_CHECK: 'consistency-check', - REPLICATE_DATA: 'replicate-data', - // Backup processing queue - CREATE_BACKUP: 'create-backup', - VERIFY_BACKUP: 'verify-backup', - RECOVERY_TEST: 'recovery-test', - DELETE_BACKUP: 'delete-backup', - // Media processing queue - TRANSCODE_VIDEO: 'transcode-video', - // Payments queues - PROCESS_SUBSCRIPTION: 'process_subscription', - PROCESS_WEBHOOK: 'process-webhook', + // Email queue + SEND_EMAIL: 'send-email', + // Email marketing queue + SEND_CAMPAIGN: 'send-campaign', + PROCESS_CAMPAIGN: 'process-campaign', + RESUME_CAMPAIGN: 'resume-campaign', + SEND_AUTOMATION_EMAIL: 'send-automation-email', + CONTINUE_AUTOMATION: 'continue-automation', + CALL_WEBHOOK: 'call-webhook', + // Sync tasks queue + CONSISTENCY_CHECK: 'consistency-check', + REPLICATE_DATA: 'replicate-data', + // Backup processing queue + CREATE_BACKUP: 'create-backup', + VERIFY_BACKUP: 'verify-backup', + RECOVERY_TEST: 'recovery-test', + DELETE_BACKUP: 'delete-backup', + // Media processing queue + TRANSCODE_VIDEO: 'transcode-video', + // Payments queues + PROCESS_SUBSCRIPTION: 'process_subscription', + PROCESS_WEBHOOK: 'process-webhook', } as const; diff --git a/src/common/database/transaction-helper.service.ts b/src/common/database/transaction-helper.service.ts index 2048901e..4d199bf1 100644 --- a/src/common/database/transaction-helper.service.ts +++ b/src/common/database/transaction-helper.service.ts @@ -5,125 +5,125 @@ import { DataSource, EntityManager } from 'typeorm'; */ @Injectable() export class TransactionHelperService { - private readonly logger = new Logger(TransactionHelperService.name); - constructor(private readonly dataSource: DataSource) { } - /** - * Execute multiple operations in a single transaction - * Useful for complex business operations - */ - async executeInTransaction(operations: Array<(manager: EntityManager) => Promise>): Promise { - const queryRunner = this.dataSource.createQueryRunner(); - await queryRunner.connect(); - await queryRunner.startTransaction(); - try { - this.logger.debug(`Starting transaction with ${operations.length} operations`); - const results = await Promise.all(operations.map((operation) => operation(queryRunner.manager))); - await queryRunner.commitTransaction(); - this.logger.debug('Transaction committed successfully'); - return results; - } - catch (error) { - await queryRunner.rollbackTransaction(); - this.logger.error('Transaction rolled back:', error); - throw error; - } - finally { - await queryRunner.release(); - } + private readonly logger = new Logger(TransactionHelperService.name); + constructor(private readonly dataSource: DataSource) {} + /** + * Execute multiple operations in a single transaction + * Useful for complex business operations + */ + async executeInTransaction( + operations: Array<(manager: EntityManager) => Promise>, + ): Promise { + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + try { + this.logger.debug(`Starting transaction with ${operations.length} operations`); + const results = await Promise.all( + operations.map((operation) => operation(queryRunner.manager)), + ); + await queryRunner.commitTransaction(); + this.logger.debug('Transaction committed successfully'); + return results; + } catch (error) { + await queryRunner.rollbackTransaction(); + this.logger.error('Transaction rolled back:', error); + throw error; + } finally { + await queryRunner.release(); } - /** - * Execute operations with conditional logic - */ - async executeWithRollback(operations: Array<{ - operation: (manager: EntityManager) => Promise; - rollback?: (manager: EntityManager) => Promise; - condition?: () => boolean; - }>): Promise { - const queryRunner = this.dataSource.createQueryRunner(); - await queryRunner.connect(); - await queryRunner.startTransaction(); - try { - const results: T[] = []; - for (const { operation, rollback, condition } of operations) { - if (condition && !condition()) { - this.logger.debug('Skipping operation due to condition'); - continue; - } - const result = await operation(queryRunner.manager); - results.push(result); - // Store rollback function if provided - if (rollback) { - // In a real implementation, you'd store rollback functions - // This is a simplified version - } - } - await queryRunner.commitTransaction(); - this.logger.debug(`Transaction committed with ${results.length} operations`); - return results; - } - catch (error) { - await queryRunner.rollbackTransaction(); - this.logger.error('Transaction rolled back:', error); - // Execute rollback functions if available - for (const { rollback } of operations) { - if (rollback) { - try { - await rollback(queryRunner.manager); - } - catch (rollbackError) { - this.logger.error('Rollback operation failed:', rollbackError); - } - } - } - throw error; - } - finally { - await queryRunner.release(); + } + /** + * Execute operations with conditional logic + */ + async executeWithRollback( + operations: Array<{ + operation: (manager: EntityManager) => Promise; + rollback?: (manager: EntityManager) => Promise; + condition?: () => boolean; + }>, + ): Promise { + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + try { + const results: T[] = []; + for (const { operation, rollback, condition } of operations) { + if (condition && !condition()) { + this.logger.debug('Skipping operation due to condition'); + continue; } - } - /** - * Create savepoint for nested transactions - */ - async createSavepoint(manager: EntityManager, savepointName: string): Promise { - await manager.query(`SAVEPOINT ${savepointName}`); - this.logger.debug(`Created savepoint: ${savepointName}`); - } - /** - * Rollback to savepoint - */ - async rollbackToSavepoint(manager: EntityManager, savepointName: string): Promise { - await manager.query(`ROLLBACK TO SAVEPOINT ${savepointName}`); - this.logger.debug(`Rolled back to savepoint: ${savepointName}`); - } - /** - * Release savepoint - */ - async releaseSavepoint(manager: EntityManager, savepointName: string): Promise { - await manager.query(`RELEASE SAVEPOINT ${savepointName}`); - this.logger.debug(`Released savepoint: ${savepointName}`); - } - /** - * Check if transaction is active - */ - isInTransaction(manager: EntityManager): boolean { - return manager.queryRunner?.isTransactionActive || false; - } - /** - * Get transaction isolation level - */ - async getIsolationLevel(manager: EntityManager): Promise { - try { - const result = await manager.query('SHOW TRANSACTION ISOLATION LEVEL'); - return result[0]?.level || 'READ COMMITTED'; + const result = await operation(queryRunner.manager); + results.push(result); + // Store rollback function if provided + if (rollback) { + // In a real implementation, you'd store rollback functions + // This is a simplified version } - catch { - return 'READ COMMITTED'; + } + await queryRunner.commitTransaction(); + this.logger.debug(`Transaction committed with ${results.length} operations`); + return results; + } catch (error) { + await queryRunner.rollbackTransaction(); + this.logger.error('Transaction rolled back:', error); + // Execute rollback functions if available + for (const { rollback } of operations) { + if (rollback) { + try { + await rollback(queryRunner.manager); + } catch (rollbackError) { + this.logger.error('Rollback operation failed:', rollbackError); + } } + } + throw error; + } finally { + await queryRunner.release(); } - /** - * Set transaction timeout - */ - async setTransactionTimeout(manager: EntityManager, timeoutMs: number): Promise { - await manager.query(`SET LOCK_TIMEOUT ${timeoutMs}`); + } + /** + * Create savepoint for nested transactions + */ + async createSavepoint(manager: EntityManager, savepointName: string): Promise { + await manager.query(`SAVEPOINT ${savepointName}`); + this.logger.debug(`Created savepoint: ${savepointName}`); + } + /** + * Rollback to savepoint + */ + async rollbackToSavepoint(manager: EntityManager, savepointName: string): Promise { + await manager.query(`ROLLBACK TO SAVEPOINT ${savepointName}`); + this.logger.debug(`Rolled back to savepoint: ${savepointName}`); + } + /** + * Release savepoint + */ + async releaseSavepoint(manager: EntityManager, savepointName: string): Promise { + await manager.query(`RELEASE SAVEPOINT ${savepointName}`); + this.logger.debug(`Released savepoint: ${savepointName}`); + } + /** + * Check if transaction is active + */ + isInTransaction(manager: EntityManager): boolean { + return manager.queryRunner?.isTransactionActive || false; + } + /** + * Get transaction isolation level + */ + async getIsolationLevel(manager: EntityManager): Promise { + try { + const result = await manager.query('SHOW TRANSACTION ISOLATION LEVEL'); + return result[0]?.level || 'READ COMMITTED'; + } catch { + return 'READ COMMITTED'; } + } + /** + * Set transaction timeout + */ + async setTransactionTimeout(manager: EntityManager, timeoutMs: number): Promise { + await manager.query(`SET LOCK_TIMEOUT ${timeoutMs}`); + } } diff --git a/src/common/decorators/roles.decorator.ts b/src/common/decorators/roles.decorator.ts index 44abae91..85ee5d97 100644 --- a/src/common/decorators/roles.decorator.ts +++ b/src/common/decorators/roles.decorator.ts @@ -5,9 +5,9 @@ import { SetMetadata } from '@nestjs/common'; * Extend this enum as the platform grows (e.g. MODERATOR, DAO_MEMBER, etc.). */ export enum Role { - USER = 'user', - MODERATOR = 'moderator', - ADMIN = 'admin' + USER = 'user', + MODERATOR = 'moderator', + ADMIN = 'admin', } export const ROLES_KEY = 'roles'; /** diff --git a/src/common/decorators/translate.decorator.ts b/src/common/decorators/translate.decorator.ts index 7317b743..35328e34 100644 --- a/src/common/decorators/translate.decorator.ts +++ b/src/common/decorators/translate.decorator.ts @@ -4,8 +4,10 @@ import { RequestWithLocale } from '../types/request-with-locale'; * Resolved request locale when LanguageMiddleware runs (Accept-Language / ?lang=). * Falls back to I18N_DEFAULT_LOCALE or the decorator argument when unset. */ -export const CurrentLocale = createParamDecorator((fallbackLocale: string | undefined, ctx: ExecutionContext): string => { +export const CurrentLocale = createParamDecorator( + (fallbackLocale: string | undefined, ctx: ExecutionContext): string => { const req = ctx.switchToHttp().getRequest(); const envDefault = (process.env.I18N_DEFAULT_LOCALE || 'en').trim().toLowerCase(); return req.resolvedLocale ?? fallbackLocale ?? envDefault; -}); + }, +); diff --git a/src/common/dto/pagination.dto.ts b/src/common/dto/pagination.dto.ts index eab5611c..6c44b6e1 100644 --- a/src/common/dto/pagination.dto.ts +++ b/src/common/dto/pagination.dto.ts @@ -3,65 +3,65 @@ import { Type } from 'class-transformer'; import { APP_CONSTANTS } from '../constants/app.constants'; const { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE } = APP_CONSTANTS; export enum SortOrder { - ASC = 'ASC', - DESC = 'DESC' + ASC = 'ASC', + DESC = 'DESC', } export enum CursorDirection { - FORWARD = 'forward', - BACKWARD = 'backward' + FORWARD = 'forward', + BACKWARD = 'backward', } /** * Defines the pagination Query payload. */ export class PaginationQueryDto { - @IsOptional() - @Type(() => Number) - @IsInt() - @Min(1) - @IsNumber() - page?: number = 1; - @IsOptional() - @Type(() => Number) - @IsInt() - @Min(1) - @Max(MAX_PAGE_SIZE, { message: `Page size cannot exceed ${MAX_PAGE_SIZE}` }) - @IsNumber() - limit?: number = DEFAULT_PAGE_SIZE; - @IsOptional() - @IsString() - sortBy?: string = 'createdAt'; - @IsOptional() - @IsIn([SortOrder.ASC, SortOrder.DESC]) - order?: SortOrder = SortOrder.DESC; - @IsOptional() - @IsString() - search?: string; + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + @IsNumber() + page?: number = 1; + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + @Max(MAX_PAGE_SIZE, { message: `Page size cannot exceed ${MAX_PAGE_SIZE}` }) + @IsNumber() + limit?: number = DEFAULT_PAGE_SIZE; + @IsOptional() + @IsString() + sortBy?: string = 'createdAt'; + @IsOptional() + @IsIn([SortOrder.ASC, SortOrder.DESC]) + order?: SortOrder = SortOrder.DESC; + @IsOptional() + @IsString() + search?: string; } /** * Defines the cursor Pagination Query payload. */ export class CursorPaginationQueryDto { - @IsOptional() - @IsString() - cursor?: string; - @IsOptional() - @Type(() => Number) - @IsInt() - @Min(1) - @Max(MAX_PAGE_SIZE, { message: `Page size cannot exceed ${MAX_PAGE_SIZE}` }) - limit?: number = DEFAULT_PAGE_SIZE; - @IsOptional() - @IsString() - sortBy?: string = 'createdAt'; - @IsOptional() - @IsIn([SortOrder.ASC, SortOrder.DESC]) - order?: SortOrder = SortOrder.DESC; - @IsOptional() - @IsIn([CursorDirection.FORWARD, CursorDirection.BACKWARD]) - direction?: CursorDirection = CursorDirection.FORWARD; - @IsOptional() - @IsString() - search?: string; + @IsOptional() + @IsString() + cursor?: string; + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + @Max(MAX_PAGE_SIZE, { message: `Page size cannot exceed ${MAX_PAGE_SIZE}` }) + limit?: number = DEFAULT_PAGE_SIZE; + @IsOptional() + @IsString() + sortBy?: string = 'createdAt'; + @IsOptional() + @IsIn([SortOrder.ASC, SortOrder.DESC]) + order?: SortOrder = SortOrder.DESC; + @IsOptional() + @IsIn([CursorDirection.FORWARD, CursorDirection.BACKWARD]) + direction?: CursorDirection = CursorDirection.FORWARD; + @IsOptional() + @IsString() + search?: string; } diff --git a/src/common/guards/throttle.guard.ts b/src/common/guards/throttle.guard.ts index 6d477249..a7e56e52 100644 --- a/src/common/guards/throttle.guard.ts +++ b/src/common/guards/throttle.guard.ts @@ -11,32 +11,37 @@ import { Request, Response } from 'express'; */ @Injectable() export class CustomThrottleGuard extends ThrottlerGuard { - private readonly logger = new Logger(CustomThrottleGuard.name); - /** Called by ThrottlerGuard when the limit is exceeded. */ - protected override async throwThrottlingException(context: ExecutionContext, throttlerLimitDetail: ThrottlerLimitDetail): Promise { - const request = context.switchToHttp().getRequest(); - const response = context.switchToHttp().getResponse(); - const ip = this.resolveClientIp(request); - const route = request.route?.path ?? request.url; - this.logger.warn(`Rate limit exceeded: ip=${ip} method=${request.method} route=${route}`); - // Inject standard rate-limit headers so clients can back off gracefully - // TTL in v6 is in seconds if defined that way in config, but throttlerLimitDetail.ttl is the value from config - const ttlSeconds = throttlerLimitDetail.ttl; - response.setHeader('Retry-After', ttlSeconds); - response.setHeader('X-RateLimit-Limit', throttlerLimitDetail.limit); - response.setHeader('X-RateLimit-Remaining', 0); - response.setHeader('X-RateLimit-Reset', Math.floor(Date.now() / 1000) + ttlSeconds); - throw new HttpException({ - statusCode: HttpStatus.TOO_MANY_REQUESTS, - error: 'Too Many Requests', - message: 'You have exceeded the request rate limit. Please wait before retrying.', - retryAfterSeconds: ttlSeconds, - }, HttpStatus.TOO_MANY_REQUESTS); - } - private resolveClientIp(request: Request): string { - const forwarded = request.headers['x-forwarded-for']; - if (typeof forwarded === 'string') - return forwarded.split(',')[0].trim(); - return request.ip ?? request.socket?.remoteAddress ?? 'unknown'; - } + private readonly logger = new Logger(CustomThrottleGuard.name); + /** Called by ThrottlerGuard when the limit is exceeded. */ + protected override async throwThrottlingException( + context: ExecutionContext, + throttlerLimitDetail: ThrottlerLimitDetail, + ): Promise { + const request = context.switchToHttp().getRequest(); + const response = context.switchToHttp().getResponse(); + const ip = this.resolveClientIp(request); + const route = request.route?.path ?? request.url; + this.logger.warn(`Rate limit exceeded: ip=${ip} method=${request.method} route=${route}`); + // Inject standard rate-limit headers so clients can back off gracefully + // TTL in v6 is in seconds if defined that way in config, but throttlerLimitDetail.ttl is the value from config + const ttlSeconds = throttlerLimitDetail.ttl; + response.setHeader('Retry-After', ttlSeconds); + response.setHeader('X-RateLimit-Limit', throttlerLimitDetail.limit); + response.setHeader('X-RateLimit-Remaining', 0); + response.setHeader('X-RateLimit-Reset', Math.floor(Date.now() / 1000) + ttlSeconds); + throw new HttpException( + { + statusCode: HttpStatus.TOO_MANY_REQUESTS, + error: 'Too Many Requests', + message: 'You have exceeded the request rate limit. Please wait before retrying.', + retryAfterSeconds: ttlSeconds, + }, + HttpStatus.TOO_MANY_REQUESTS, + ); + } + private resolveClientIp(request: Request): string { + const forwarded = request.headers['x-forwarded-for']; + if (typeof forwarded === 'string') return forwarded.split(',')[0].trim(); + return request.ip ?? request.socket?.remoteAddress ?? 'unknown'; + } } diff --git a/src/common/middleware/decompression.middleware.ts b/src/common/middleware/decompression.middleware.ts index 3f30fae6..c5aeed9c 100644 --- a/src/common/middleware/decompression.middleware.ts +++ b/src/common/middleware/decompression.middleware.ts @@ -54,29 +54,12 @@ export class DecompressionMiddleware implements NestMiddleware { this.logger.debug(`Decompressing request with encoding: ${encoding}`); try { - // Get the decompression stream - const decompressor = this.decompressors[encoding](); - - // Handle errors during decompression - decompressor.on('error', (error: Error) => { - this.logger.error(`Decompression error for encoding ${encoding}:`, error.message); - res.status(400).json({ - statusCode: 400, - message: `Failed to decompress request body with encoding: ${encoding}`, - error: 'Bad Request', - }); - }); - - // Remove Content-Encoding header after successful decompression setup + // Remove Content-Encoding header so downstream middleware doesn't re-handle it. delete req.headers['content-encoding']; - // Remove Content-Length header since we're modifying the body - // The express json/urlencoded middleware will handle setting it + // Remove Content-Length header to avoid mismatches for transformed payloads. delete req.headers['content-length']; - // Pipe the incoming request through decompression - req.pipe(decompressor).pipe(req); - next(); } catch (error: unknown) { this.logger.error( diff --git a/src/common/naming/naming.module.ts b/src/common/naming/naming.module.ts index 4bf40235..30f2aaf3 100644 --- a/src/common/naming/naming.module.ts +++ b/src/common/naming/naming.module.ts @@ -2,8 +2,7 @@ import { Module } from '@nestjs/common'; import { NamingService } from './naming.service'; @Module({ - providers: [NamingService], - exports: [NamingService], + providers: [NamingService], + exports: [NamingService], }) -export class NamingModule { -} +export class NamingModule {} diff --git a/src/common/naming/naming.service.ts b/src/common/naming/naming.service.ts index 98d73954..b7d1ddb5 100644 --- a/src/common/naming/naming.service.ts +++ b/src/common/naming/naming.service.ts @@ -2,20 +2,20 @@ import { Injectable } from '@nestjs/common'; @Injectable() export class NamingService { - toCamelCase(input: string): string { - return input.toLowerCase().replace(/[-_\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : '')); - } - toSnakeCase(input: string): string { - return input.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, ''); - } - toPascalCase(input: string): string { - return input.replace(/(^\w|[-_\s]+\w)/g, (word) => word.replace(/[-_\s]+/, '').toUpperCase()); - } - toKebabCase(input: string): string { - return input.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`).replace(/^-/, ''); - } - normalizeKey(input: string): string { - // Example: enforce DB-safe keys - return this.toSnakeCase(input).replace(/[^a-z0-9_]/g, ''); - } + toCamelCase(input: string): string { + return input.toLowerCase().replace(/[-_\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : '')); + } + toSnakeCase(input: string): string { + return input.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).replace(/^_/, ''); + } + toPascalCase(input: string): string { + return input.replace(/(^\w|[-_\s]+\w)/g, (word) => word.replace(/[-_\s]+/, '').toUpperCase()); + } + toKebabCase(input: string): string { + return input.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`).replace(/^-/, ''); + } + normalizeKey(input: string): string { + // Example: enforce DB-safe keys + return this.toSnakeCase(input).replace(/[^a-z0-9_]/g, ''); + } } diff --git a/src/common/services/shutdown-state.service.ts b/src/common/services/shutdown-state.service.ts index 0b4b708b..40c733b1 100644 --- a/src/common/services/shutdown-state.service.ts +++ b/src/common/services/shutdown-state.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; @Injectable() export class ShutdownStateService { - private shuttingDown = false; - markShuttingDown(): void { - this.shuttingDown = true; - } - isShuttingDown(): boolean { - return this.shuttingDown; - } + private shuttingDown = false; + markShuttingDown(): void { + this.shuttingDown = true; + } + isShuttingDown(): boolean { + return this.shuttingDown; + } } diff --git a/src/common/types/file.types.ts b/src/common/types/file.types.ts index 420748f1..32b89dbb 100644 --- a/src/common/types/file.types.ts +++ b/src/common/types/file.types.ts @@ -3,14 +3,14 @@ * Used across CDN, Media, and file upload services */ export interface UploadedFile { - fieldname: string; - originalname: string; - encoding: string; - mimetype: string; - size: number; - destination?: string; - filename?: string; - path?: string; - buffer: Buffer; - stream?: NodeJS.ReadableStream; + fieldname: string; + originalname: string; + encoding: string; + mimetype: string; + size: number; + destination?: string; + filename?: string; + path?: string; + buffer: Buffer; + stream?: NodeJS.ReadableStream; } diff --git a/src/common/types/request-with-locale.ts b/src/common/types/request-with-locale.ts index 77fdb084..38064430 100644 --- a/src/common/types/request-with-locale.ts +++ b/src/common/types/request-with-locale.ts @@ -1,4 +1,4 @@ import { Request } from 'express'; export type RequestWithLocale = Request & { - resolvedLocale?: string; + resolvedLocale?: string; }; diff --git a/src/common/utils/bull-redis.util.ts b/src/common/utils/bull-redis.util.ts index ce80bfe1..80b2610c 100644 --- a/src/common/utils/bull-redis.util.ts +++ b/src/common/utils/bull-redis.util.ts @@ -1,15 +1,15 @@ import Redis, { RedisOptions } from 'ioredis'; export const createBullRedisClient = (type: string, redisOpts?: RedisOptions) => { - const options: RedisOptions = { - ...(redisOpts ?? {}), - }; - if (type !== 'client') { - options.enableReadyCheck = false; - options.maxRetriesPerRequest = null; - } - const client = new Redis(options); - client.on('error', () => { - // Avoid unhandled error events while Redis is unavailable. - }); - return client; + const options: RedisOptions = { + ...(redisOpts ?? {}), + }; + if (type !== 'client') { + options.enableReadyCheck = false; + options.maxRetriesPerRequest = null; + } + const client = new Redis(options); + client.on('error', () => { + // Avoid unhandled error events while Redis is unavailable. + }); + return client; }; diff --git a/src/common/utils/correlation.utils.ts b/src/common/utils/correlation.utils.ts index 9017935f..5a85bcaa 100644 --- a/src/common/utils/correlation.utils.ts +++ b/src/common/utils/correlation.utils.ts @@ -13,7 +13,7 @@ const correlationStorage = new AsyncLocalStorage(); * @returns The resulting string value. */ export function generateCorrelationId(): string { - return `cid-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`; + return `cid-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`; } /** @@ -21,8 +21,8 @@ export function generateCorrelationId(): string { * @returns The operation result. */ export function getCorrelationId(): string | undefined { - const store = correlationStorage.getStore(); - return store?.correlationId; + const store = correlationStorage.getStore(); + return store?.correlationId; } /** @@ -32,10 +32,12 @@ export function getCorrelationId(): string | undefined { * @param correlationId The correlation identifier. */ export function setCorrelationId(req: Request, res: Response, correlationId: string): void { - (req as Request & { - correlationId?: string; - }).correlationId = correlationId; - res.setHeader(CORRELATION_ID_HEADER, correlationId); + ( + req as Request & { + correlationId?: string; + } + ).correlationId = correlationId; + res.setHeader(CORRELATION_ID_HEADER, correlationId); } /** @@ -45,12 +47,13 @@ export function setCorrelationId(req: Request, res: Response, correlationId: str * @param next The next. */ export function correlationMiddleware(req: Request, res: Response, next: NextFunction): void { - const incoming = (req.headers[CORRELATION_ID_HEADER] as string) || (req.headers['x-correlation-id'] as string); - const correlationId = incoming || generateCorrelationId(); - correlationStorage.run({ correlationId }, () => { - setCorrelationId(req, res, correlationId); - next(); - }); + const incoming = + (req.headers[CORRELATION_ID_HEADER] as string) || (req.headers['x-correlation-id'] as string); + const correlationId = incoming || generateCorrelationId(); + correlationStorage.run({ correlationId }, () => { + setCorrelationId(req, res, correlationId); + next(); + }); } /** @@ -60,8 +63,8 @@ export function correlationMiddleware(req: Request, res: Response, next: NextFun * @returns The resulting t. */ export function runWithCorrelationId(callback: () => T, correlationId?: string): T { - const id = correlationId || generateCorrelationId(); - return correlationStorage.run({ correlationId: id }, callback); + const id = correlationId || generateCorrelationId(); + return correlationStorage.run({ correlationId: id }, callback); } /** diff --git a/src/common/utils/pii-sanitizer.utils.ts b/src/common/utils/pii-sanitizer.utils.ts index 63f86de8..ad5ed9d0 100644 --- a/src/common/utils/pii-sanitizer.utils.ts +++ b/src/common/utils/pii-sanitizer.utils.ts @@ -6,83 +6,79 @@ * Example: "john.doe@example.com" -> "j***e@example.com" */ export function sanitizeEmail(email: string): string { - if (!email || typeof email !== 'string') - return email; - const parts = email.split('@'); - if (parts.length !== 2) - return email; - const [user, domain] = parts; - if (user.length <= 2) { - return `***@${domain}`; - } - return `${user[0]}***${user[user.length - 1]}@${domain}`; + if (!email || typeof email !== 'string') return email; + const parts = email.split('@'); + if (parts.length !== 2) return email; + const [user, domain] = parts; + if (user.length <= 2) { + return `***@${domain}`; + } + return `${user[0]}***${user[user.length - 1]}@${domain}`; } /** * Masks a name or generic string. * Example: "John" -> "J***" */ export function sanitizeName(name: string): string { - if (!name || typeof name !== 'string') - return name; - if (name.length <= 1) - return '***'; - return `${name[0]}***`; + if (!name || typeof name !== 'string') return name; + if (name.length <= 1) return '***'; + return `${name[0]}***`; } /** * Recursively sanitizes PII from an object or string. * Replaces values of sensitive keys with masks. */ export function sanitizePii(data: unknown): unknown { - if (data === null || data === undefined) { - return data; - } - if (typeof data === 'string') { - // Basic email masking within strings - return data.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, (email) => sanitizeEmail(email)); - } - if (Array.isArray(data)) { - return data.map((item) => sanitizePii(item)); - } - if (typeof data === 'object') { - const sanitized: unknown = {}; - const sensitiveKeys = [ - 'email', - 'useremail', - 'contactemail', - 'owneremail', - 'recipientemail', - 'firstname', - 'lastname', - 'fullname', - 'phone', - 'phonenumber', - 'password', - 'token', - 'secret', - 'auth', - 'authorization', - 'bearer', - 'apikey', - 'stripekey', - 'awskey', - 'accesskey', - 'privatekey', - ]; - for (const [key, value] of Object.entries(data)) { - const lowerKey = key.toLowerCase(); - if (sensitiveKeys.some((sk) => lowerKey.includes(sk))) { - if (typeof value === 'string' && value.includes('@')) { - sanitized[key] = sanitizeEmail(value); - } - else { - sanitized[key] = '***'; - } - } - else { - sanitized[key] = sanitizePii(value); - } + if (data === null || data === undefined) { + return data; + } + if (typeof data === 'string') { + // Basic email masking within strings + return data.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, (email) => + sanitizeEmail(email), + ); + } + if (Array.isArray(data)) { + return data.map((item) => sanitizePii(item)); + } + if (typeof data === 'object') { + const sanitized: unknown = {}; + const sensitiveKeys = [ + 'email', + 'useremail', + 'contactemail', + 'owneremail', + 'recipientemail', + 'firstname', + 'lastname', + 'fullname', + 'phone', + 'phonenumber', + 'password', + 'token', + 'secret', + 'auth', + 'authorization', + 'bearer', + 'apikey', + 'stripekey', + 'awskey', + 'accesskey', + 'privatekey', + ]; + for (const [key, value] of Object.entries(data)) { + const lowerKey = key.toLowerCase(); + if (sensitiveKeys.some((sk) => lowerKey.includes(sk))) { + if (typeof value === 'string' && value.includes('@')) { + sanitized[key] = sanitizeEmail(value); + } else { + sanitized[key] = '***'; } - return sanitized; + } else { + sanitized[key] = sanitizePii(value); + } } - return data; + return sanitized; + } + return data; } diff --git a/src/common/utils/sanitization.utils.ts b/src/common/utils/sanitization.utils.ts index bc547c88..28dfe717 100644 --- a/src/common/utils/sanitization.utils.ts +++ b/src/common/utils/sanitization.utils.ts @@ -4,15 +4,15 @@ * @returns The resulting string value. */ export function sanitizeSqlLike(input: string): string { - if (typeof input !== 'string') { - throw new TypeError('Expected a string for SQL LIKE sanitization'); - } - const trimmed = input.trim(); - // Prevent CR/LF/Tab injection and normalize whitespace - const normalized = trimmed.replace(/[\r\n\t]+/g, ' '); - // Escape SQL wildcard and escape characters for LIKE operators. - // This makes sure user-supplied `%`, `_`, and `\\` are treated literally. - return normalized.replace(/[\\%_]/g, (char) => `\\${char}`); + if (typeof input !== 'string') { + throw new TypeError('Expected a string for SQL LIKE sanitization'); + } + const trimmed = input.trim(); + // Prevent CR/LF/Tab injection and normalize whitespace + const normalized = trimmed.replace(/[\r\n\t]+/g, ' '); + // Escape SQL wildcard and escape characters for LIKE operators. + // This makes sure user-supplied `%`, `_`, and `\\` are treated literally. + return normalized.replace(/[\\%_]/g, (char) => `\\${char}`); } /** diff --git a/src/common/utils/user.utils.ts b/src/common/utils/user.utils.ts index 14bef029..55d91e9e 100644 --- a/src/common/utils/user.utils.ts +++ b/src/common/utils/user.utils.ts @@ -1,4 +1,9 @@ -import { NotFoundException, UnauthorizedException, BadRequestException, ConflictException, } from '@nestjs/common'; +import { + NotFoundException, + UnauthorizedException, + BadRequestException, + ConflictException, +} from '@nestjs/common'; import { User } from '../../users/entities/user.entity'; /** * Ensures a user exists, throwing a NotFoundException otherwise. @@ -7,10 +12,10 @@ import { User } from '../../users/entities/user.entity'; * @returns The guaranteed non-null user object */ export function ensureUserExists(user: User | null | undefined, message = 'User not found'): User { - if (!user) { - throw new NotFoundException(message); - } - return user; + if (!user) { + throw new NotFoundException(message); + } + return user; } /** * Ensures a user exists for authentication purposes, throwing an UnauthorizedException otherwise. @@ -18,11 +23,14 @@ export function ensureUserExists(user: User | null | undefined, message = 'User * @param message Optional custom error message * @returns The guaranteed non-null user object */ -export function ensureValidCredentials(user: User | null | undefined, message = 'Invalid credentials'): User { - if (!user) { - throw new UnauthorizedException(message); - } - return user; +export function ensureValidCredentials( + user: User | null | undefined, + message = 'Invalid credentials', +): User { + if (!user) { + throw new UnauthorizedException(message); + } + return user; } /** * Ensures a user's account is active. @@ -30,9 +38,9 @@ export function ensureValidCredentials(user: User | null | undefined, message = * @param message Optional custom error message */ export function ensureUserIsActive(user: User, message = 'Account is not active'): void { - if (user.status !== 'active') { - throw new UnauthorizedException(message); - } + if (user.status !== 'active') { + throw new UnauthorizedException(message); + } } /** * Ensures a user has a valid and unexpired token for a specific field. @@ -42,15 +50,20 @@ export function ensureUserIsActive(user: User, message = 'Account is not active' * @param message Optional custom error message * @returns The guaranteed non-null user object */ -export function ensureValidUserToken(user: User | null | undefined, tokenField: keyof User, expiresField: keyof User, message = 'Invalid or expired token'): User { - if (!user || !user[tokenField] || !user[expiresField]) { - throw new BadRequestException(message); - } - const expireDate = user[expiresField] as Date; - if (new Date() > expireDate) { - throw new BadRequestException(message); - } - return user; +export function ensureValidUserToken( + user: User | null | undefined, + tokenField: keyof User, + expiresField: keyof User, + message = 'Invalid or expired token', +): User { + if (!user || !user[tokenField] || !user[expiresField]) { + throw new BadRequestException(message); + } + const expireDate = user[expiresField] as Date; + if (new Date() > expireDate) { + throw new BadRequestException(message); + } + return user; } /** * Ensures a user does not exist, throwing a ConflictException otherwise. @@ -58,8 +71,11 @@ export function ensureValidUserToken(user: User | null | undefined, tokenField: * @param user The user object to check * @param message Optional custom error message */ -export function ensureUserDoesNotExist(user: User | null | undefined, message = 'User already exists'): void { - if (user) { - throw new ConflictException(message); - } +export function ensureUserDoesNotExist( + user: User | null | undefined, + message = 'User already exists', +): void { + if (user) { + throw new ConflictException(message); + } } diff --git a/src/config/cache.config.ts b/src/config/cache.config.ts index fe99efff..87ccaf0d 100644 --- a/src/config/cache.config.ts +++ b/src/config/cache.config.ts @@ -73,17 +73,17 @@ export const cacheConfig = { ttl: parseInt(process.env.REDIS_TTL || '60', 10), }; export const sessionConfig = { - secret: process.env.SESSION_SECRET || 'teachlink-session-secret', - name: process.env.SESSION_COOKIE_NAME || 'teachlink.sid', - prefix: process.env.SESSION_PREFIX || 'sess:', - ttlSeconds: parseInt(process.env.SESSION_TTL_SECONDS || '604800', 10), - cookieMaxAgeMs: parseInt(process.env.SESSION_COOKIE_MAX_AGE_MS || '604800000', 10), - secureCookies: process.env.NODE_ENV === 'production', - stickySessionsRequired: (process.env.STICKY_SESSIONS_REQUIRED || 'true') === 'true', - trustProxy: (process.env.TRUST_PROXY || 'true') === 'true', + secret: process.env.SESSION_SECRET || 'teachlink-session-secret', + name: process.env.SESSION_COOKIE_NAME || 'teachlink.sid', + prefix: process.env.SESSION_PREFIX || 'sess:', + ttlSeconds: parseInt(process.env.SESSION_TTL_SECONDS || '604800', 10), + cookieMaxAgeMs: parseInt(process.env.SESSION_COOKIE_MAX_AGE_MS || '604800000', 10), + secureCookies: process.env.NODE_ENV === 'production', + stickySessionsRequired: (process.env.STICKY_SESSIONS_REQUIRED || 'true') === 'true', + trustProxy: (process.env.TRUST_PROXY || 'true') === 'true', }; export const distributedLockConfig = { - ttlMs: parseInt(process.env.SESSION_LOCK_TTL_MS || '5000', 10), - maxRetries: parseInt(process.env.SESSION_LOCK_MAX_RETRIES || '5', 10), - retryDelayMs: parseInt(process.env.SESSION_LOCK_RETRY_DELAY_MS || '120', 10), + ttlMs: parseInt(process.env.SESSION_LOCK_TTL_MS || '5000', 10), + maxRetries: parseInt(process.env.SESSION_LOCK_MAX_RETRIES || '5', 10), + retryDelayMs: parseInt(process.env.SESSION_LOCK_RETRY_DELAY_MS || '120', 10), }; diff --git a/src/config/database.config.ts b/src/config/database.config.ts new file mode 100644 index 00000000..afe3d2d3 --- /dev/null +++ b/src/config/database.config.ts @@ -0,0 +1,17 @@ +import { TypeOrmModuleOptions } from '@nestjs/typeorm'; + +/** + * TypeORM connection options driven by DATABASE_* environment variables. + */ +export function getDatabaseConfig(): TypeOrmModuleOptions { + return { + type: 'postgres', + host: process.env.DATABASE_HOST ?? 'localhost', + port: parseInt(process.env.DATABASE_PORT ?? '5432', 10), + username: process.env.DATABASE_USER ?? 'postgres', + password: process.env.DATABASE_PASSWORD ?? 'postgres', + database: process.env.DATABASE_NAME ?? 'teachlink', + autoLoadEntities: true, + synchronize: process.env.NODE_ENV !== 'production', + }; +} diff --git a/src/config/elasticsearch.config.ts b/src/config/elasticsearch.config.ts index bf0655f8..41d9d613 100644 --- a/src/config/elasticsearch.config.ts +++ b/src/config/elasticsearch.config.ts @@ -1,28 +1,29 @@ import { ConfigService } from '@nestjs/config'; import { ElasticsearchModuleOptions } from '@nestjs/elasticsearch'; -export const createElasticsearchConfig = (configService: ConfigService): ElasticsearchModuleOptions => { - const node = configService.get('ELASTICSEARCH_NODE') ?? 'http://localhost:9200'; - const username = configService.get('ELASTICSEARCH_USERNAME'); - const password = configService.get('ELASTICSEARCH_PASSWORD'); - const apiKey = configService.get('ELASTICSEARCH_API_KEY'); - const caFingerprint = configService.get('ELASTICSEARCH_CA_FINGERPRINT'); - const requestTimeout = configService.get('ELASTICSEARCH_REQUEST_TIMEOUT') ?? 30000; - const maxRetries = configService.get('ELASTICSEARCH_MAX_RETRIES') ?? 3; - const options: ElasticsearchModuleOptions = { - node, - maxRetries, - requestTimeout, - sniffOnStart: false, - compression: true, - }; - if (apiKey) { - options.auth = { apiKey }; - } - else if (username && password) { - options.auth = { username, password }; - } - if (caFingerprint) { - options.caFingerprint = caFingerprint; - } - return options; +export const createElasticsearchConfig = ( + configService: ConfigService, +): ElasticsearchModuleOptions => { + const node = configService.get('ELASTICSEARCH_NODE') ?? 'http://localhost:9200'; + const username = configService.get('ELASTICSEARCH_USERNAME'); + const password = configService.get('ELASTICSEARCH_PASSWORD'); + const apiKey = configService.get('ELASTICSEARCH_API_KEY'); + const caFingerprint = configService.get('ELASTICSEARCH_CA_FINGERPRINT'); + const requestTimeout = configService.get('ELASTICSEARCH_REQUEST_TIMEOUT') ?? 30000; + const maxRetries = configService.get('ELASTICSEARCH_MAX_RETRIES') ?? 3; + const options: ElasticsearchModuleOptions = { + node, + maxRetries, + requestTimeout, + sniffOnStart: false, + compression: true, + }; + if (apiKey) { + options.auth = { apiKey }; + } else if (username && password) { + options.auth = { username, password }; + } + if (caFingerprint) { + options.caFingerprint = caFingerprint; + } + return options; }; diff --git a/src/config/feature-flags.config.ts b/src/config/feature-flags.config.ts index a9d9ba11..37bb9e75 100644 --- a/src/config/feature-flags.config.ts +++ b/src/config/feature-flags.config.ts @@ -258,7 +258,10 @@ export function loadFeatureFlags(): IFeatureFlagsConfig { 'ENABLE_NOTIFICATIONS', defaultFeatureFlags.ENABLE_NOTIFICATIONS, ), - ENABLE_ANALYTICS: getBooleanEnv('ENABLE_ANALYTICS', defaultFeatureFlags.ENABLE_ANALYTICS ?? true), + ENABLE_ANALYTICS: getBooleanEnv( + 'ENABLE_ANALYTICS', + defaultFeatureFlags.ENABLE_ANALYTICS ?? true, + ), ENABLE_EMAIL_MARKETING: getBooleanEnv( 'ENABLE_EMAIL_MARKETING', defaultFeatureFlags.ENABLE_EMAIL_MARKETING, @@ -291,11 +294,11 @@ export function loadFeatureFlags(): IFeatureFlagsConfig { * Helper function to parse boolean environment variables */ function getBooleanEnv(key: string, defaultValue: boolean): boolean { - const value = process.env[key]; - if (value === undefined) { - return defaultValue; - } - return value.toLowerCase() === 'true' || value === '1'; + const value = process.env[key]; + if (value === undefined) { + return defaultValue; + } + return value.toLowerCase() === 'true' || value === '1'; } /** * Get list of enabled modules based on feature flags diff --git a/src/courses/dto/course-search.dto.ts b/src/courses/dto/course-search.dto.ts index 8079c254..4f4f2be0 100644 --- a/src/courses/dto/course-search.dto.ts +++ b/src/courses/dto/course-search.dto.ts @@ -6,40 +6,40 @@ import { PaginationQueryDto, CursorPaginationQueryDto } from '../../common/dto/p * Defines the course Search payload. */ export class CourseSearchDto extends PaginationQueryDto { - @ApiPropertyOptional() - @IsNumber() - @IsOptional() - minPrice?: number; - @ApiPropertyOptional() - @IsNumber() - @IsOptional() - maxPrice?: number; - @IsOptional() - @IsString() - status?: string; - @IsOptional() - @IsString() - @IsUUID() - instructorId?: string; + @ApiPropertyOptional() + @IsNumber() + @IsOptional() + minPrice?: number; + @ApiPropertyOptional() + @IsNumber() + @IsOptional() + maxPrice?: number; + @IsOptional() + @IsString() + status?: string; + @IsOptional() + @IsString() + @IsUUID() + instructorId?: string; } /** * Defines the cursor Course Search payload. */ export class CursorCourseSearchDto extends CursorPaginationQueryDto { - @ApiPropertyOptional() - @IsNumber() - @IsOptional() - minPrice?: number; - @ApiPropertyOptional() - @IsNumber() - @IsOptional() - maxPrice?: number; - @IsOptional() - @IsString() - status?: string; - @IsOptional() - @IsString() - @IsUUID() - instructorId?: string; + @ApiPropertyOptional() + @IsNumber() + @IsOptional() + minPrice?: number; + @ApiPropertyOptional() + @IsNumber() + @IsOptional() + maxPrice?: number; + @IsOptional() + @IsString() + status?: string; + @IsOptional() + @IsString() + @IsUUID() + instructorId?: string; } diff --git a/src/courses/dto/create-course.dto.ts b/src/courses/dto/create-course.dto.ts index a33ba9ec..219e04a9 100644 --- a/src/courses/dto/create-course.dto.ts +++ b/src/courses/dto/create-course.dto.ts @@ -1,29 +1,37 @@ -import { IsString, IsNotEmpty, IsNumber, IsOptional, MinLength, MaxLength, Min, } from 'class-validator'; +import { + IsString, + IsNotEmpty, + IsNumber, + IsOptional, + MinLength, + MaxLength, + Min, +} from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; /** * Defines the create Course payload. */ export class CreateCourseDto { - @ApiProperty() - @IsString({ message: 'Title must be a string' }) - @IsNotEmpty({ message: 'Course title is required' }) - @MinLength(5, { message: 'Title must be at least 5 characters long' }) - @MaxLength(100, { message: 'Title cannot exceed 100 characters' }) - title: string; - @ApiProperty() - @IsString({ message: 'Description must be a string' }) - @IsNotEmpty({ message: 'Course description is required' }) - @MinLength(20, { message: 'Description must be at least 20 characters long' }) - @MaxLength(5000, { message: 'Description is too long' }) - description: string; - @ApiProperty({ required: false }) - @IsNumber({}, { message: 'Price must be a valid number' }) - @Min(0, { message: 'Price cannot be negative' }) - @IsOptional() - price?: number; - @ApiProperty({ required: false }) - @IsString({ message: 'Thumbnail URL must be a valid string' }) - @IsOptional() - thumbnailUrl?: string; + @ApiProperty() + @IsString({ message: 'Title must be a string' }) + @IsNotEmpty({ message: 'Course title is required' }) + @MinLength(5, { message: 'Title must be at least 5 characters long' }) + @MaxLength(100, { message: 'Title cannot exceed 100 characters' }) + title: string; + @ApiProperty() + @IsString({ message: 'Description must be a string' }) + @IsNotEmpty({ message: 'Course description is required' }) + @MinLength(20, { message: 'Description must be at least 20 characters long' }) + @MaxLength(5000, { message: 'Description is too long' }) + description: string; + @ApiProperty({ required: false }) + @IsNumber({}, { message: 'Price must be a valid number' }) + @Min(0, { message: 'Price cannot be negative' }) + @IsOptional() + price?: number; + @ApiProperty({ required: false }) + @IsString({ message: 'Thumbnail URL must be a valid string' }) + @IsOptional() + thumbnailUrl?: string; } diff --git a/src/courses/dto/create-lesson.dto.ts b/src/courses/dto/create-lesson.dto.ts index 2f931a06..d8af1edc 100644 --- a/src/courses/dto/create-lesson.dto.ts +++ b/src/courses/dto/create-lesson.dto.ts @@ -5,32 +5,32 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the create Lesson payload. */ export class CreateLessonDto { - @ApiProperty() - @IsString() - @IsNotEmpty() - title: string; - @ApiProperty({ required: false }) - @IsString() - @IsOptional() - content?: string; - @ApiProperty({ required: false }) - @IsString() - @IsOptional() - @IsUrl() - videoUrl?: string; - @ApiProperty({ required: false }) - @IsInt() - @IsOptional() - @IsNumber() - order?: number; - @ApiProperty({ required: false }) - @IsInt() - @IsOptional() - @IsNumber() - durationSeconds?: number; - @ApiProperty() - @IsUUID() - @IsNotEmpty() - @IsString() - moduleId: string; + @ApiProperty() + @IsString() + @IsNotEmpty() + title: string; + @ApiProperty({ required: false }) + @IsString() + @IsOptional() + content?: string; + @ApiProperty({ required: false }) + @IsString() + @IsOptional() + @IsUrl() + videoUrl?: string; + @ApiProperty({ required: false }) + @IsInt() + @IsOptional() + @IsNumber() + order?: number; + @ApiProperty({ required: false }) + @IsInt() + @IsOptional() + @IsNumber() + durationSeconds?: number; + @ApiProperty() + @IsUUID() + @IsNotEmpty() + @IsString() + moduleId: string; } diff --git a/src/courses/dto/create-module.dto.ts b/src/courses/dto/create-module.dto.ts index 0a74ba85..3f029419 100644 --- a/src/courses/dto/create-module.dto.ts +++ b/src/courses/dto/create-module.dto.ts @@ -5,18 +5,18 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the create Module payload. */ export class CreateModuleDto { - @ApiProperty() - @IsString() - @IsNotEmpty() - title: string; - @ApiProperty({ required: false }) - @IsInt() - @IsOptional() - @IsNumber() - order?: number; - @ApiProperty() - @IsUUID() - @IsNotEmpty() - @IsString() - courseId: string; + @ApiProperty() + @IsString() + @IsNotEmpty() + title: string; + @ApiProperty({ required: false }) + @IsInt() + @IsOptional() + @IsNumber() + order?: number; + @ApiProperty() + @IsUUID() + @IsNotEmpty() + @IsString() + courseId: string; } diff --git a/src/courses/dto/update-course.dto.ts b/src/courses/dto/update-course.dto.ts index a755da6f..dec505c2 100644 --- a/src/courses/dto/update-course.dto.ts +++ b/src/courses/dto/update-course.dto.ts @@ -6,9 +6,9 @@ import { IsString, IsOptional, IsEnum } from 'class-validator'; * Defines the update Course payload. */ export class UpdateCourseDto extends PartialType(CreateCourseDto) { - @ApiPropertyOptional({ enum: ['draft', 'published', 'archived'] }) - @IsString() - @IsOptional() - @IsEnum(['draft', 'published', 'archived']) - status?: string; + @ApiPropertyOptional({ enum: ['draft', 'published', 'archived'] }) + @IsString() + @IsOptional() + @IsEnum(['draft', 'published', 'archived']) + status?: string; } diff --git a/src/courses/lessons/lessons.service.ts b/src/courses/lessons/lessons.service.ts index 3c878e9a..417a2077 100644 --- a/src/courses/lessons/lessons.service.ts +++ b/src/courses/lessons/lessons.service.ts @@ -10,9 +10,9 @@ import { CourseModule } from '../entities/course-module.entity'; */ @Injectable() export class LessonsService { - constructor( + constructor( @InjectRepository(Lesson) - private lessonsRepository: Repository, + private lessonsRepository: Repository, @InjectRepository(CourseModule) private modulesRepository: Repository, ) {} diff --git a/src/courses/modules/modules.service.ts b/src/courses/modules/modules.service.ts index f8794026..f1524e57 100644 --- a/src/courses/modules/modules.service.ts +++ b/src/courses/modules/modules.service.ts @@ -11,9 +11,9 @@ import { Lesson } from '../entities/lesson.entity'; */ @Injectable() export class ModulesService { - constructor( + constructor( @InjectRepository(CourseModule) - private modulesRepository: Repository, + private modulesRepository: Repository, @InjectRepository(Course) private coursesRepository: Repository, ) {} diff --git a/src/email-marketing/automation/automation.controller.ts b/src/email-marketing/automation/automation.controller.ts index 9a6d01e0..342953cf 100644 --- a/src/email-marketing/automation/automation.controller.ts +++ b/src/email-marketing/automation/automation.controller.ts @@ -1,4 +1,16 @@ -import { Controller, Get, Post, Put, Delete, Body, Param, Query, ParseUUIDPipe, HttpCode, HttpStatus, } from '@nestjs/common'; +import { + Controller, + Get, + Post, + Put, + Delete, + Body, + Param, + Query, + ParseUUIDPipe, + HttpCode, + HttpStatus, +} from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth, ApiQuery } from '@nestjs/swagger'; import { AutomationService } from './automation.service'; import { CreateAutomationDto } from '../dto/create-automation.dto'; diff --git a/src/email-marketing/automation/automation.service.ts b/src/email-marketing/automation/automation.service.ts index bb6f81e7..c9b0fdb0 100644 --- a/src/email-marketing/automation/automation.service.ts +++ b/src/email-marketing/automation/automation.service.ts @@ -20,315 +20,328 @@ import { WorkflowStatus } from '../enums/workflow-status.enum'; */ @Injectable() export class AutomationService { - constructor( + constructor( @InjectRepository(AutomationWorkflow) - private readonly workflowRepository: Repository, + private readonly workflowRepository: Repository, @InjectRepository(AutomationTrigger) - private readonly triggerRepository: Repository, + private readonly triggerRepository: Repository, @InjectRepository(AutomationAction) - private readonly actionRepository: Repository, + private readonly actionRepository: Repository, @InjectQueue(QUEUE_NAMES.EMAIL_MARKETING) - private readonly emailQueue: Queue, private readonly eventEmitter: EventEmitter2) { } - /** - * Create a new automation workflow - */ - async create(createAutomationDto: CreateAutomationDto): Promise { - const workflow = this.workflowRepository.create({ - name: createAutomationDto.name, - description: createAutomationDto.description, - status: WorkflowStatus.DRAFT, - }); - const savedWorkflow = await this.workflowRepository.save(workflow); - // Create triggers - if (createAutomationDto.triggers?.length) { - const triggers = createAutomationDto.triggers.map((trigger) => this.triggerRepository.create({ - ...trigger, - workflowId: savedWorkflow.id, - })); - await this.triggerRepository.save(triggers); - } - // Create actions - if (createAutomationDto.actions?.length) { - const actions = createAutomationDto.actions.map((action, index) => this.actionRepository.create({ - ...action, - workflowId: savedWorkflow.id, - order: index, - })); - await this.actionRepository.save(actions); - } - return this.findOne(savedWorkflow.id); - } - /** - * Get all automation workflows - */ - async findAll(page: number = 1, limit: number = 10): Promise<{ - workflows: AutomationWorkflow[]; - total: number; - page: number; - totalPages: number; - }> { - const [workflows, total] = await this.workflowRepository.findAndCount({ - skip: (page - 1) * limit, - take: limit, - order: { createdAt: 'DESC' }, - relations: ['triggers', 'actions'], - }); - return { - workflows, - total, - page, - totalPages: Math.ceil(total / limit), - }; - } - /** - * Get a single workflow by ID - */ - async findOne(id: string): Promise { - const workflow = await this.workflowRepository.findOne({ - where: { id }, - relations: ['triggers', 'actions'], - }); - if (!workflow) { - throw new NotFoundException(`Automation workflow with ID ${id} not found`); - } - return workflow; - } - /** - * Update a workflow - */ - async update(id: string, updateAutomationDto: UpdateAutomationDto): Promise { - const workflow = await this.findOne(id); - if (workflow.status === WorkflowStatus.ACTIVE) { - throw new BadRequestException('Deactivate workflow before making changes'); - } - Object.assign(workflow, { - name: updateAutomationDto.name ?? workflow.name, - description: updateAutomationDto.description ?? workflow.description, - }); - await this.workflowRepository.save(workflow); - // Update triggers if provided - if (updateAutomationDto.triggers) { - await this.triggerRepository.softDelete({ workflowId: id }); - const triggers = updateAutomationDto.triggers.map((trigger) => this.triggerRepository.create({ - ...trigger, - workflowId: id, - })); - await this.triggerRepository.save(triggers); - } - // Update actions if provided - if (updateAutomationDto.actions) { - await this.actionRepository.softDelete({ workflowId: id }); - const actions = updateAutomationDto.actions.map((action, index) => this.actionRepository.create({ - ...action, - workflowId: id, - order: index, - })); - await this.actionRepository.save(actions); - } - return this.findOne(id); + private readonly emailQueue: Queue, + private readonly eventEmitter: EventEmitter2, + ) {} + /** + * Create a new automation workflow + */ + async create(createAutomationDto: CreateAutomationDto): Promise { + const workflow = this.workflowRepository.create({ + name: createAutomationDto.name, + description: createAutomationDto.description, + status: WorkflowStatus.DRAFT, + }); + const savedWorkflow = await this.workflowRepository.save(workflow); + // Create triggers + if (createAutomationDto.triggers?.length) { + const triggers = createAutomationDto.triggers.map((trigger) => + this.triggerRepository.create({ + ...trigger, + workflowId: savedWorkflow.id, + }), + ); + await this.triggerRepository.save(triggers); } - /** - * Delete a workflow - */ - async remove(id: string): Promise { - const workflow = await this.findOne(id); - if (workflow.status === WorkflowStatus.ACTIVE) { - throw new BadRequestException('Deactivate workflow before deleting'); - } - await this.workflowRepository.manager.transaction(async (manager) => { - await manager.getRepository(AutomationTrigger).softDelete({ workflowId: id }); - await manager.getRepository(AutomationAction).softDelete({ workflowId: id }); - await manager.getRepository(AutomationWorkflow).softDelete(id); - }); + // Create actions + if (createAutomationDto.actions?.length) { + const actions = createAutomationDto.actions.map((action, index) => + this.actionRepository.create({ + ...action, + workflowId: savedWorkflow.id, + order: index, + }), + ); + await this.actionRepository.save(actions); } - /** - * Activate a workflow - */ - async activate(id: string): Promise { - const workflow = await this.findOne(id); - if (!workflow.triggers?.length) { - throw new BadRequestException('Workflow must have at least one trigger'); - } - if (!workflow.actions?.length) { - throw new BadRequestException('Workflow must have at least one action'); - } - workflow.status = WorkflowStatus.ACTIVE; - workflow.activatedAt = new Date(); - return this.workflowRepository.save(workflow); + return this.findOne(savedWorkflow.id); + } + /** + * Get all automation workflows + */ + async findAll( + page: number = 1, + limit: number = 10, + ): Promise<{ + workflows: AutomationWorkflow[]; + total: number; + page: number; + totalPages: number; + }> { + const [workflows, total] = await this.workflowRepository.findAndCount({ + skip: (page - 1) * limit, + take: limit, + order: { createdAt: 'DESC' }, + relations: ['triggers', 'actions'], + }); + return { + workflows, + total, + page, + totalPages: Math.ceil(total / limit), + }; + } + /** + * Get a single workflow by ID + */ + async findOne(id: string): Promise { + const workflow = await this.workflowRepository.findOne({ + where: { id }, + relations: ['triggers', 'actions'], + }); + if (!workflow) { + throw new NotFoundException(`Automation workflow with ID ${id} not found`); } - /** - * Deactivate a workflow - */ - async deactivate(id: string): Promise { - const workflow = await this.findOne(id); - workflow.status = WorkflowStatus.INACTIVE; - workflow.deactivatedAt = new Date(); - return this.workflowRepository.save(workflow); + return workflow; + } + /** + * Update a workflow + */ + async update(id: string, updateAutomationDto: UpdateAutomationDto): Promise { + const workflow = await this.findOne(id); + if (workflow.status === WorkflowStatus.ACTIVE) { + throw new BadRequestException('Deactivate workflow before making changes'); } - /** - * Handle user signup event - */ - @OnEvent(APP_EVENTS.USER_SIGNUP) - async handleUserSignup(payload: { - userId: string; - email: string; - }) { - await this.executeTriggeredWorkflows(TriggerType.USER_SIGNUP, payload); + Object.assign(workflow, { + name: updateAutomationDto.name ?? workflow.name, + description: updateAutomationDto.description ?? workflow.description, + }); + await this.workflowRepository.save(workflow); + // Update triggers if provided + if (updateAutomationDto.triggers) { + await this.triggerRepository.softDelete({ workflowId: id }); + const triggers = updateAutomationDto.triggers.map((trigger) => + this.triggerRepository.create({ + ...trigger, + workflowId: id, + }), + ); + await this.triggerRepository.save(triggers); } - /** - * Handle course enrollment event - */ - @OnEvent(APP_EVENTS.COURSE_ENROLLED) - async handleCourseEnrollment(payload: { - userId: string; - courseId: string; - }) { - await this.executeTriggeredWorkflows(TriggerType.COURSE_ENROLLED, payload); + // Update actions if provided + if (updateAutomationDto.actions) { + await this.actionRepository.softDelete({ workflowId: id }); + const actions = updateAutomationDto.actions.map((action, index) => + this.actionRepository.create({ + ...action, + workflowId: id, + order: index, + }), + ); + await this.actionRepository.save(actions); } - /** - * Handle course completion event - */ - @OnEvent(APP_EVENTS.COURSE_COMPLETED) - async handleCourseCompletion(payload: { - userId: string; - courseId: string; - }) { - await this.executeTriggeredWorkflows(TriggerType.COURSE_COMPLETED, payload); + return this.findOne(id); + } + /** + * Delete a workflow + */ + async remove(id: string): Promise { + const workflow = await this.findOne(id); + if (workflow.status === WorkflowStatus.ACTIVE) { + throw new BadRequestException('Deactivate workflow before deleting'); } - /** - * Handle purchase event - */ - @OnEvent(APP_EVENTS.PAYMENT_COMPLETED) - async handlePurchase(payload: { - userId: string; - amount: number; - productId: string; - }) { - await this.executeTriggeredWorkflows(TriggerType.PURCHASE_MADE, payload); + await this.workflowRepository.manager.transaction(async (manager) => { + await manager.getRepository(AutomationTrigger).softDelete({ workflowId: id }); + await manager.getRepository(AutomationAction).softDelete({ workflowId: id }); + await manager.getRepository(AutomationWorkflow).softDelete(id); + }); + } + /** + * Activate a workflow + */ + async activate(id: string): Promise { + const workflow = await this.findOne(id); + if (!workflow.triggers?.length) { + throw new BadRequestException('Workflow must have at least one trigger'); } - /** - * Handle user inactivity (called by scheduled job) - */ - async handleUserInactivity(payload: { - userId: string; - daysSinceLastActivity: number; - }) { - await this.executeTriggeredWorkflows(TriggerType.USER_INACTIVE, payload); + if (!workflow.actions?.length) { + throw new BadRequestException('Workflow must have at least one action'); } - /** - * Execute workflows that match the trigger type - */ - private async executeTriggeredWorkflows(triggerType: TriggerType, payload: Record): Promise { - // Find all active workflows with matching trigger - const triggers = await this.triggerRepository.find({ - where: { type: triggerType }, - relations: ['workflow', 'workflow.actions'], - }); - for (const trigger of triggers) { - if (trigger.workflow.status !== WorkflowStatus.ACTIVE) { - continue; - } - // Check trigger conditions - if (this.evaluateTriggerConditions(trigger, payload)) { - await this.executeWorkflowActions(trigger.workflow, payload); - } - } + workflow.status = WorkflowStatus.ACTIVE; + workflow.activatedAt = new Date(); + return this.workflowRepository.save(workflow); + } + /** + * Deactivate a workflow + */ + async deactivate(id: string): Promise { + const workflow = await this.findOne(id); + workflow.status = WorkflowStatus.INACTIVE; + workflow.deactivatedAt = new Date(); + return this.workflowRepository.save(workflow); + } + /** + * Handle user signup event + */ + @OnEvent(APP_EVENTS.USER_SIGNUP) + async handleUserSignup(payload: { userId: string; email: string }) { + await this.executeTriggeredWorkflows(TriggerType.USER_SIGNUP, payload); + } + /** + * Handle course enrollment event + */ + @OnEvent(APP_EVENTS.COURSE_ENROLLED) + async handleCourseEnrollment(payload: { userId: string; courseId: string }) { + await this.executeTriggeredWorkflows(TriggerType.COURSE_ENROLLED, payload); + } + /** + * Handle course completion event + */ + @OnEvent(APP_EVENTS.COURSE_COMPLETED) + async handleCourseCompletion(payload: { userId: string; courseId: string }) { + await this.executeTriggeredWorkflows(TriggerType.COURSE_COMPLETED, payload); + } + /** + * Handle purchase event + */ + @OnEvent(APP_EVENTS.PAYMENT_COMPLETED) + async handlePurchase(payload: { userId: string; amount: number; productId: string }) { + await this.executeTriggeredWorkflows(TriggerType.PURCHASE_MADE, payload); + } + /** + * Handle user inactivity (called by scheduled job) + */ + async handleUserInactivity(payload: { userId: string; daysSinceLastActivity: number }) { + await this.executeTriggeredWorkflows(TriggerType.USER_INACTIVE, payload); + } + /** + * Execute workflows that match the trigger type + */ + private async executeTriggeredWorkflows( + triggerType: TriggerType, + payload: Record, + ): Promise { + // Find all active workflows with matching trigger + const triggers = await this.triggerRepository.find({ + where: { type: triggerType }, + relations: ['workflow', 'workflow.actions'], + }); + for (const trigger of triggers) { + if (trigger.workflow.status !== WorkflowStatus.ACTIVE) { + continue; + } + // Check trigger conditions + if (this.evaluateTriggerConditions(trigger, payload)) { + await this.executeWorkflowActions(trigger.workflow, payload); + } } - /** - * Evaluate trigger conditions - */ - private evaluateTriggerConditions(trigger: AutomationTrigger, payload: Record): boolean { - if (!trigger.conditions || Object.keys(trigger.conditions).length === 0) { - return true; - } - // Simple condition matching - for (const [key, value] of Object.entries(trigger.conditions)) { - if (payload[key] !== value) { - return false; - } - } - return true; + } + /** + * Evaluate trigger conditions + */ + private evaluateTriggerConditions( + trigger: AutomationTrigger, + payload: Record, + ): boolean { + if (!trigger.conditions || Object.keys(trigger.conditions).length === 0) { + return true; } - /** - * Execute workflow actions in order - */ - private async executeWorkflowActions(workflow: AutomationWorkflow, payload: Record): Promise { - const sortedActions = workflow.actions.sort((a, b) => a.order - b.order); - for (const action of sortedActions) { - await this.executeAction(action, payload); - } - // Update workflow stats - workflow.executionCount = (workflow.executionCount || 0) + 1; - workflow.lastExecutedAt = new Date(); - await this.workflowRepository.save(workflow); + // Simple condition matching + for (const [key, value] of Object.entries(trigger.conditions)) { + if (payload[key] !== value) { + return false; + } } - /** - * Execute a single action - */ - private async executeAction(action: AutomationAction, payload: Record): Promise { - switch (action.type) { - case ActionType.SEND_EMAIL: - await this.emailQueue.add(JOB_NAMES.SEND_AUTOMATION_EMAIL, { - actionId: action.id, - templateId: action.config.templateId, - userId: payload.userId, - variables: { ...payload, ...action.config.variables }, - }); - break; - case ActionType.WAIT: - await this.emailQueue.add(JOB_NAMES.CONTINUE_AUTOMATION, { - workflowId: action.workflowId, - nextActionOrder: action.order + 1, - payload, - }, { delay: action.config.delayMs || 0 }); - break; - case ActionType.ADD_TAG: - this.eventEmitter.emit(APP_EVENTS.USER_ADD_TAG, { - userId: payload.userId, - tag: action.config.tag, - }); - break; - case ActionType.REMOVE_TAG: - this.eventEmitter.emit(APP_EVENTS.USER_REMOVE_TAG, { - userId: payload.userId, - tag: action.config.tag, - }); - break; - case ActionType.ADD_TO_SEGMENT: - this.eventEmitter.emit(APP_EVENTS.SEGMENT_ADD_USER, { - userId: payload.userId, - segmentId: action.config.segmentId, - }); - break; - case ActionType.WEBHOOK: - await this.emailQueue.add(JOB_NAMES.CALL_WEBHOOK, { - url: action.config.webhookUrl, - method: action.config.method || 'POST', - payload: { ...payload, ...action.config.webhookPayload }, - }); - break; - default: - console.warn(`Unknown action type: ${action.type}`); - } + return true; + } + /** + * Execute workflow actions in order + */ + private async executeWorkflowActions( + workflow: AutomationWorkflow, + payload: Record, + ): Promise { + const sortedActions = workflow.actions.sort((a, b) => a.order - b.order); + for (const action of sortedActions) { + await this.executeAction(action, payload); } - /** - * Get workflow execution statistics - */ - async getWorkflowStats(id: string): Promise<{ - executionCount: number; - lastExecutedAt: Date | null; - emailsSent: number; - openRate: number; - clickRate: number; - }> { - const workflow = await this.findOne(id); - // TODO: Calculate email stats from analytics - return { - executionCount: workflow.executionCount || 0, - lastExecutedAt: workflow.lastExecutedAt, - emailsSent: 0, - openRate: 0, - clickRate: 0, - }; + // Update workflow stats + workflow.executionCount = (workflow.executionCount || 0) + 1; + workflow.lastExecutedAt = new Date(); + await this.workflowRepository.save(workflow); + } + /** + * Execute a single action + */ + private async executeAction( + action: AutomationAction, + payload: Record, + ): Promise { + switch (action.type) { + case ActionType.SEND_EMAIL: + await this.emailQueue.add(JOB_NAMES.SEND_AUTOMATION_EMAIL, { + actionId: action.id, + templateId: action.config.templateId, + userId: payload.userId, + variables: { ...payload, ...action.config.variables }, + }); + break; + case ActionType.WAIT: + await this.emailQueue.add( + JOB_NAMES.CONTINUE_AUTOMATION, + { + workflowId: action.workflowId, + nextActionOrder: action.order + 1, + payload, + }, + { delay: action.config.delayMs || 0 }, + ); + break; + case ActionType.ADD_TAG: + this.eventEmitter.emit(APP_EVENTS.USER_ADD_TAG, { + userId: payload.userId, + tag: action.config.tag, + }); + break; + case ActionType.REMOVE_TAG: + this.eventEmitter.emit(APP_EVENTS.USER_REMOVE_TAG, { + userId: payload.userId, + tag: action.config.tag, + }); + break; + case ActionType.ADD_TO_SEGMENT: + this.eventEmitter.emit(APP_EVENTS.SEGMENT_ADD_USER, { + userId: payload.userId, + segmentId: action.config.segmentId, + }); + break; + case ActionType.WEBHOOK: + await this.emailQueue.add(JOB_NAMES.CALL_WEBHOOK, { + url: action.config.webhookUrl, + method: action.config.method || 'POST', + payload: { ...payload, ...action.config.webhookPayload }, + }); + break; + default: + console.warn(`Unknown action type: ${action.type}`); } + } + /** + * Get workflow execution statistics + */ + async getWorkflowStats(id: string): Promise<{ + executionCount: number; + lastExecutedAt: Date | null; + emailsSent: number; + openRate: number; + clickRate: number; + }> { + const workflow = await this.findOne(id); + // TODO: Calculate email stats from analytics + return { + executionCount: workflow.executionCount || 0, + lastExecutedAt: workflow.lastExecutedAt, + emailsSent: 0, + openRate: 0, + clickRate: 0, + }; + } } diff --git a/src/email-marketing/dto/add-segment-members.dto.ts b/src/email-marketing/dto/add-segment-members.dto.ts index a143c389..aa80769e 100644 --- a/src/email-marketing/dto/add-segment-members.dto.ts +++ b/src/email-marketing/dto/add-segment-members.dto.ts @@ -5,14 +5,14 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the add Segment Members payload. */ export class AddSegmentMembersDto { - @ApiProperty({ - description: 'Array of user IDs to add to the segment', - example: ['user1', 'user2', 'user3'], - type: [String], - }) - @IsArray() - @ArrayNotEmpty() - @IsString({ each: true }) - @IsNotEmpty() - userIds: string[]; + @ApiProperty({ + description: 'Array of user IDs to add to the segment', + example: ['user1', 'user2', 'user3'], + type: [String], + }) + @IsArray() + @ArrayNotEmpty() + @IsString({ each: true }) + @IsNotEmpty() + userIds: string[]; } diff --git a/src/email-marketing/dto/create-ab-test.dto.ts b/src/email-marketing/dto/create-ab-test.dto.ts index 23df3675..832e1931 100644 --- a/src/email-marketing/dto/create-ab-test.dto.ts +++ b/src/email-marketing/dto/create-ab-test.dto.ts @@ -1,4 +1,14 @@ -import { IsString, IsArray, IsUUID, IsNotEmpty, IsNumber, IsOptional, ValidateNested, Min, Max, } from 'class-validator'; +import { + IsString, + IsArray, + IsUUID, + IsNotEmpty, + IsNumber, + IsOptional, + ValidateNested, + Min, + Max, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; @@ -6,66 +16,66 @@ import { Type } from 'class-transformer'; * Defines the create ABTest Variant payload. */ export class CreateABTestVariantDto { - @ApiPropertyOptional({ description: 'Variant name' }) - @IsString() - @IsOptional() - name?: string; - @ApiPropertyOptional({ description: 'Subject line for this variant' }) - @IsString() - @IsOptional() - subject?: string; - @ApiPropertyOptional({ description: 'Template ID for this variant' }) - @IsUUID() - @IsOptional() - @IsString() - templateId?: string; - @ApiPropertyOptional({ description: 'Sender name for this variant' }) - @IsString() - @IsOptional() - senderName?: string; - @ApiProperty({ description: 'Traffic weight (percentage)', example: 50 }) - @IsNumber() - @Min(1) - @Max(99) - @IsNotEmpty() - weight: number; + @ApiPropertyOptional({ description: 'Variant name' }) + @IsString() + @IsOptional() + name?: string; + @ApiPropertyOptional({ description: 'Subject line for this variant' }) + @IsString() + @IsOptional() + subject?: string; + @ApiPropertyOptional({ description: 'Template ID for this variant' }) + @IsUUID() + @IsOptional() + @IsString() + templateId?: string; + @ApiPropertyOptional({ description: 'Sender name for this variant' }) + @IsString() + @IsOptional() + senderName?: string; + @ApiProperty({ description: 'Traffic weight (percentage)', example: 50 }) + @IsNumber() + @Min(1) + @Max(99) + @IsNotEmpty() + weight: number; } /** * Defines the create ABTest payload. */ export class CreateABTestDto { - @ApiProperty({ description: 'Test name', example: 'Subject Line Test' }) - @IsString() - @IsNotEmpty() - name: string; - @ApiProperty({ description: 'Campaign ID to run test on' }) - @IsUUID() - @IsNotEmpty() - @IsString() - campaignId: string; - @ApiProperty({ description: 'Field to test', example: 'subject' }) - @IsString() - @IsNotEmpty() - testField: string; - @ApiPropertyOptional({ - description: 'Winner criteria', - enum: ['open_rate', 'click_rate'], - default: 'open_rate', - }) - @IsString() - @IsOptional() - winnerCriteria?: string; - @ApiPropertyOptional({ description: 'Sample size percentage', default: 20 }) - @IsNumber() - @Min(5) - @Max(50) - @IsOptional() - sampleSize?: number; - @ApiProperty({ type: [CreateABTestVariantDto], description: 'Test variants (min 2)' }) - @IsArray() - @ValidateNested({ each: true }) - @Type(() => CreateABTestVariantDto) - @IsNotEmpty() - variants: CreateABTestVariantDto[]; + @ApiProperty({ description: 'Test name', example: 'Subject Line Test' }) + @IsString() + @IsNotEmpty() + name: string; + @ApiProperty({ description: 'Campaign ID to run test on' }) + @IsUUID() + @IsNotEmpty() + @IsString() + campaignId: string; + @ApiProperty({ description: 'Field to test', example: 'subject' }) + @IsString() + @IsNotEmpty() + testField: string; + @ApiPropertyOptional({ + description: 'Winner criteria', + enum: ['open_rate', 'click_rate'], + default: 'open_rate', + }) + @IsString() + @IsOptional() + winnerCriteria?: string; + @ApiPropertyOptional({ description: 'Sample size percentage', default: 20 }) + @IsNumber() + @Min(5) + @Max(50) + @IsOptional() + sampleSize?: number; + @ApiProperty({ type: [CreateABTestVariantDto], description: 'Test variants (min 2)' }) + @IsArray() + @ValidateNested({ each: true }) + @Type(() => CreateABTestVariantDto) + @IsNotEmpty() + variants: CreateABTestVariantDto[]; } diff --git a/src/email-marketing/dto/create-automation.dto.ts b/src/email-marketing/dto/create-automation.dto.ts index 4e33f12e..d6a9f1dc 100644 --- a/src/email-marketing/dto/create-automation.dto.ts +++ b/src/email-marketing/dto/create-automation.dto.ts @@ -8,60 +8,60 @@ import { ActionType } from '../enums/action-type.enum'; * Defines the create Trigger payload. */ export class CreateTriggerDto { - @ApiProperty({ enum: TriggerType }) - @IsEnum(TriggerType) - @IsNotEmpty() - type: TriggerType; - @ApiPropertyOptional({ description: 'Trigger conditions' }) - @IsOptional() - @IsString() - conditions?: Record; - @ApiPropertyOptional() - @IsString() - @IsOptional() - description?: string; + @ApiProperty({ enum: TriggerType }) + @IsEnum(TriggerType) + @IsNotEmpty() + type: TriggerType; + @ApiPropertyOptional({ description: 'Trigger conditions' }) + @IsOptional() + @IsString() + conditions?: Record; + @ApiPropertyOptional() + @IsString() + @IsOptional() + description?: string; } /** * Defines the create Action payload. */ export class CreateActionDto { - @ApiProperty({ enum: ActionType }) - @IsEnum(ActionType) - @IsNotEmpty() - type: ActionType; - @ApiProperty({ description: 'Action configuration' }) - @IsNotEmpty() - @IsString() - config: Record; - @ApiPropertyOptional() - @IsString() - @IsOptional() - description?: string; + @ApiProperty({ enum: ActionType }) + @IsEnum(ActionType) + @IsNotEmpty() + type: ActionType; + @ApiProperty({ description: 'Action configuration' }) + @IsNotEmpty() + @IsString() + config: Record; + @ApiPropertyOptional() + @IsString() + @IsOptional() + description?: string; } /** * Defines the create Automation payload. */ export class CreateAutomationDto { - @ApiProperty({ description: 'Workflow name', example: 'Welcome Series' }) - @IsString() - @IsNotEmpty() - name: string; - @ApiPropertyOptional({ description: 'Workflow description' }) - @IsString() - @IsOptional() - description?: string; - @ApiPropertyOptional({ type: [CreateTriggerDto] }) - @IsArray() - @ValidateNested({ each: true }) - @Type(() => CreateTriggerDto) - @IsOptional() - triggers?: CreateTriggerDto[]; - @ApiPropertyOptional({ type: [CreateActionDto] }) - @IsArray() - @ValidateNested({ each: true }) - @Type(() => CreateActionDto) - @IsOptional() - actions?: CreateActionDto[]; + @ApiProperty({ description: 'Workflow name', example: 'Welcome Series' }) + @IsString() + @IsNotEmpty() + name: string; + @ApiPropertyOptional({ description: 'Workflow description' }) + @IsString() + @IsOptional() + description?: string; + @ApiPropertyOptional({ type: [CreateTriggerDto] }) + @IsArray() + @ValidateNested({ each: true }) + @Type(() => CreateTriggerDto) + @IsOptional() + triggers?: CreateTriggerDto[]; + @ApiPropertyOptional({ type: [CreateActionDto] }) + @IsArray() + @ValidateNested({ each: true }) + @Type(() => CreateActionDto) + @IsOptional() + actions?: CreateActionDto[]; } diff --git a/src/email-marketing/dto/create-campaign.dto.ts b/src/email-marketing/dto/create-campaign.dto.ts index 434bcaa8..72a4b705 100644 --- a/src/email-marketing/dto/create-campaign.dto.ts +++ b/src/email-marketing/dto/create-campaign.dto.ts @@ -5,34 +5,34 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; * Defines the create Campaign payload. */ export class CreateCampaignDto { - @ApiProperty({ description: 'Campaign name', example: 'Welcome Campaign' }) - @IsString() - @IsNotEmpty() - @MaxLength(255) - name: string; - @ApiProperty({ description: 'Email subject line', example: 'Welcome to TeachLink!' }) - @IsString() - @IsNotEmpty() - @MaxLength(255) - subject: string; - @ApiPropertyOptional({ description: 'Preview text shown in inbox' }) - @IsString() - @IsOptional() - @MaxLength(255) - previewText?: string; - @ApiPropertyOptional({ description: 'Raw HTML content (if not using template)' }) - @IsString() - @IsOptional() - content?: string; - @ApiPropertyOptional({ description: 'Template ID to use' }) - @IsUUID() - @IsOptional() - @IsString() - templateId?: string; - @ApiPropertyOptional({ description: 'Segment IDs to target', type: [String] }) - @IsArray() - @IsUUID('4', { each: true }) - @IsOptional() - @IsString() - segmentIds?: string[]; + @ApiProperty({ description: 'Campaign name', example: 'Welcome Campaign' }) + @IsString() + @IsNotEmpty() + @MaxLength(255) + name: string; + @ApiProperty({ description: 'Email subject line', example: 'Welcome to TeachLink!' }) + @IsString() + @IsNotEmpty() + @MaxLength(255) + subject: string; + @ApiPropertyOptional({ description: 'Preview text shown in inbox' }) + @IsString() + @IsOptional() + @MaxLength(255) + previewText?: string; + @ApiPropertyOptional({ description: 'Raw HTML content (if not using template)' }) + @IsString() + @IsOptional() + content?: string; + @ApiPropertyOptional({ description: 'Template ID to use' }) + @IsUUID() + @IsOptional() + @IsString() + templateId?: string; + @ApiPropertyOptional({ description: 'Segment IDs to target', type: [String] }) + @IsArray() + @IsUUID('4', { each: true }) + @IsOptional() + @IsString() + segmentIds?: string[]; } diff --git a/src/email-marketing/dto/create-segment.dto.ts b/src/email-marketing/dto/create-segment.dto.ts index 17b8ec32..bd8974f4 100644 --- a/src/email-marketing/dto/create-segment.dto.ts +++ b/src/email-marketing/dto/create-segment.dto.ts @@ -1,4 +1,12 @@ -import { IsString, IsOptional, IsArray, IsBoolean, IsNotEmpty, ValidateNested, IsEnum, } from 'class-validator'; +import { + IsString, + IsOptional, + IsArray, + IsBoolean, + IsNotEmpty, + ValidateNested, + IsEnum, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; import { SegmentRuleField } from '../enums/segment-rule-field.enum'; @@ -8,43 +16,43 @@ import { SegmentRuleOperator } from '../enums/segment-rule-operator.enum'; * Defines the create Segment Rule payload. */ export class CreateSegmentRuleDto { - @ApiProperty({ enum: SegmentRuleField, example: 'email' }) - @IsEnum(SegmentRuleField) - @IsNotEmpty() - field: SegmentRuleField; - @ApiProperty({ enum: SegmentRuleOperator, example: 'contains' }) - @IsEnum(SegmentRuleOperator) - @IsNotEmpty() - operator: SegmentRuleOperator; - @ApiProperty({ description: 'Rule value', example: 'gmail.com' }) - @IsNotEmpty() - value: unknown; - @ApiPropertyOptional({ enum: ['AND', 'OR'], default: 'AND' }) - @IsOptional() - @IsString() - logicalOperator?: 'AND' | 'OR'; + @ApiProperty({ enum: SegmentRuleField, example: 'email' }) + @IsEnum(SegmentRuleField) + @IsNotEmpty() + field: SegmentRuleField; + @ApiProperty({ enum: SegmentRuleOperator, example: 'contains' }) + @IsEnum(SegmentRuleOperator) + @IsNotEmpty() + operator: SegmentRuleOperator; + @ApiProperty({ description: 'Rule value', example: 'gmail.com' }) + @IsNotEmpty() + value: unknown; + @ApiPropertyOptional({ enum: ['AND', 'OR'], default: 'AND' }) + @IsOptional() + @IsString() + logicalOperator?: 'AND' | 'OR'; } /** * Defines the create Segment payload. */ export class CreateSegmentDto { - @ApiProperty({ description: 'Segment name', example: 'Active Users' }) - @IsString() - @IsNotEmpty() - name: string; - @ApiPropertyOptional({ description: 'Segment description' }) - @IsString() - @IsOptional() - description?: string; - @ApiPropertyOptional({ description: 'Dynamic or static segment', default: true }) - @IsBoolean() - @IsOptional() - isDynamic?: boolean; - @ApiPropertyOptional({ type: [CreateSegmentRuleDto] }) - @IsArray() - @ValidateNested({ each: true }) - @Type(() => CreateSegmentRuleDto) - @IsOptional() - rules?: CreateSegmentRuleDto[]; + @ApiProperty({ description: 'Segment name', example: 'Active Users' }) + @IsString() + @IsNotEmpty() + name: string; + @ApiPropertyOptional({ description: 'Segment description' }) + @IsString() + @IsOptional() + description?: string; + @ApiPropertyOptional({ description: 'Dynamic or static segment', default: true }) + @IsBoolean() + @IsOptional() + isDynamic?: boolean; + @ApiPropertyOptional({ type: [CreateSegmentRuleDto] }) + @IsArray() + @ValidateNested({ each: true }) + @Type(() => CreateSegmentRuleDto) + @IsOptional() + rules?: CreateSegmentRuleDto[]; } diff --git a/src/email-marketing/dto/create-template.dto.ts b/src/email-marketing/dto/create-template.dto.ts index de0d8051..bda1d9ea 100644 --- a/src/email-marketing/dto/create-template.dto.ts +++ b/src/email-marketing/dto/create-template.dto.ts @@ -5,27 +5,27 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; * Defines the create Template payload. */ export class CreateTemplateDto { - @ApiProperty({ description: 'Template name', example: 'Welcome Email' }) - @IsString() - @IsNotEmpty() - @MaxLength(255) - name: string; - @ApiProperty({ description: 'Email subject with variables', example: 'Welcome, {{firstName}}!' }) - @IsString() - @IsNotEmpty() - @MaxLength(255) - subject: string; - @ApiProperty({ description: 'HTML content with Handlebars variables' }) - @IsString() - @IsNotEmpty() - htmlContent: string; - @ApiPropertyOptional({ description: 'Plain text version' }) - @IsString() - @IsOptional() - textContent?: string; - @ApiPropertyOptional({ description: 'Category for organization' }) - @IsString() - @IsOptional() - @MaxLength(100) - category?: string; + @ApiProperty({ description: 'Template name', example: 'Welcome Email' }) + @IsString() + @IsNotEmpty() + @MaxLength(255) + name: string; + @ApiProperty({ description: 'Email subject with variables', example: 'Welcome, {{firstName}}!' }) + @IsString() + @IsNotEmpty() + @MaxLength(255) + subject: string; + @ApiProperty({ description: 'HTML content with Handlebars variables' }) + @IsString() + @IsNotEmpty() + htmlContent: string; + @ApiPropertyOptional({ description: 'Plain text version' }) + @IsString() + @IsOptional() + textContent?: string; + @ApiPropertyOptional({ description: 'Category for organization' }) + @IsString() + @IsOptional() + @MaxLength(100) + category?: string; } diff --git a/src/email-marketing/dto/schedule-campaign.dto.ts b/src/email-marketing/dto/schedule-campaign.dto.ts index 8b523bba..d88e75dd 100644 --- a/src/email-marketing/dto/schedule-campaign.dto.ts +++ b/src/email-marketing/dto/schedule-campaign.dto.ts @@ -5,9 +5,9 @@ import { ApiProperty } from '@nestjs/swagger'; * Defines the schedule Campaign payload. */ export class ScheduleCampaignDto { - @ApiProperty({ description: 'Scheduled send time (ISO 8601)', example: '2026-02-01T10:00:00Z' }) - @IsDateString() - @IsNotEmpty() - @IsString() - scheduledAt: string; + @ApiProperty({ description: 'Scheduled send time (ISO 8601)', example: '2026-02-01T10:00:00Z' }) + @IsDateString() + @IsNotEmpty() + @IsString() + scheduledAt: string; } diff --git a/src/email-marketing/enums/ab-test-status.enum.ts b/src/email-marketing/enums/ab-test-status.enum.ts index f0579455..e3881a91 100644 --- a/src/email-marketing/enums/ab-test-status.enum.ts +++ b/src/email-marketing/enums/ab-test-status.enum.ts @@ -1,6 +1,6 @@ export enum ABTestStatus { - DRAFT = 'draft', - RUNNING = 'running', - COMPLETED = 'completed', - CANCELLED = 'cancelled' + DRAFT = 'draft', + RUNNING = 'running', + COMPLETED = 'completed', + CANCELLED = 'cancelled', } diff --git a/src/email-marketing/enums/action-type.enum.ts b/src/email-marketing/enums/action-type.enum.ts index 0b70fd60..00780238 100644 --- a/src/email-marketing/enums/action-type.enum.ts +++ b/src/email-marketing/enums/action-type.enum.ts @@ -1,12 +1,12 @@ export enum ActionType { - SEND_EMAIL = 'send_email', - WAIT = 'wait', - ADD_TAG = 'add_tag', - REMOVE_TAG = 'remove_tag', - ADD_TO_SEGMENT = 'add_to_segment', - REMOVE_FROM_SEGMENT = 'remove_from_segment', - UPDATE_PROPERTY = 'update_property', - WEBHOOK = 'webhook', - SEND_SMS = 'send_sms', - SEND_PUSH_NOTIFICATION = 'send_push_notification' + SEND_EMAIL = 'send_email', + WAIT = 'wait', + ADD_TAG = 'add_tag', + REMOVE_TAG = 'remove_tag', + ADD_TO_SEGMENT = 'add_to_segment', + REMOVE_FROM_SEGMENT = 'remove_from_segment', + UPDATE_PROPERTY = 'update_property', + WEBHOOK = 'webhook', + SEND_SMS = 'send_sms', + SEND_PUSH_NOTIFICATION = 'send_push_notification', } diff --git a/src/email-marketing/enums/campaign-status.enum.ts b/src/email-marketing/enums/campaign-status.enum.ts index a356f0b9..7dd75505 100644 --- a/src/email-marketing/enums/campaign-status.enum.ts +++ b/src/email-marketing/enums/campaign-status.enum.ts @@ -1,8 +1,8 @@ export enum CampaignStatus { - DRAFT = 'draft', - SCHEDULED = 'scheduled', - SENDING = 'sending', - SENT = 'sent', - PAUSED = 'paused', - CANCELLED = 'cancelled' + DRAFT = 'draft', + SCHEDULED = 'scheduled', + SENDING = 'sending', + SENT = 'sent', + PAUSED = 'paused', + CANCELLED = 'cancelled', } diff --git a/src/email-marketing/enums/email-event-type.enum.ts b/src/email-marketing/enums/email-event-type.enum.ts index 22b9b892..4139f533 100644 --- a/src/email-marketing/enums/email-event-type.enum.ts +++ b/src/email-marketing/enums/email-event-type.enum.ts @@ -1,10 +1,10 @@ export enum EmailEventType { - SENT = 'sent', - DELIVERED = 'delivered', - OPENED = 'opened', - CLICKED = 'clicked', - BOUNCED = 'bounced', - SOFT_BOUNCED = 'soft_bounced', - COMPLAINED = 'complained', - UNSUBSCRIBED = 'unsubscribed' + SENT = 'sent', + DELIVERED = 'delivered', + OPENED = 'opened', + CLICKED = 'clicked', + BOUNCED = 'bounced', + SOFT_BOUNCED = 'soft_bounced', + COMPLAINED = 'complained', + UNSUBSCRIBED = 'unsubscribed', } diff --git a/src/email-marketing/enums/recipient-status.enum.ts b/src/email-marketing/enums/recipient-status.enum.ts index dfd00527..82ac7834 100644 --- a/src/email-marketing/enums/recipient-status.enum.ts +++ b/src/email-marketing/enums/recipient-status.enum.ts @@ -1,6 +1,6 @@ export enum RecipientStatus { - PENDING = 'pending', - SENT = 'sent', - FAILED = 'failed', - SKIPPED = 'skipped' + PENDING = 'pending', + SENT = 'sent', + FAILED = 'failed', + SKIPPED = 'skipped', } diff --git a/src/email-marketing/enums/segment-rule-field.enum.ts b/src/email-marketing/enums/segment-rule-field.enum.ts index b10d4a01..585cbd68 100644 --- a/src/email-marketing/enums/segment-rule-field.enum.ts +++ b/src/email-marketing/enums/segment-rule-field.enum.ts @@ -1,12 +1,12 @@ export enum SegmentRuleField { - EMAIL = 'email', - FIRST_NAME = 'first_name', - LAST_NAME = 'last_name', - CREATED_AT = 'created_at', - LAST_LOGIN = 'last_login', - COURSE_COUNT = 'course_count', - TOTAL_SPENT = 'total_spent', - TAG = 'tag', - COUNTRY = 'country', - SUBSCRIPTION_STATUS = 'subscription_status' + EMAIL = 'email', + FIRST_NAME = 'first_name', + LAST_NAME = 'last_name', + CREATED_AT = 'created_at', + LAST_LOGIN = 'last_login', + COURSE_COUNT = 'course_count', + TOTAL_SPENT = 'total_spent', + TAG = 'tag', + COUNTRY = 'country', + SUBSCRIPTION_STATUS = 'subscription_status', } diff --git a/src/email-marketing/enums/segment-rule-operator.enum.ts b/src/email-marketing/enums/segment-rule-operator.enum.ts index bed35553..69d75fed 100644 --- a/src/email-marketing/enums/segment-rule-operator.enum.ts +++ b/src/email-marketing/enums/segment-rule-operator.enum.ts @@ -1,19 +1,19 @@ export enum SegmentRuleOperator { - EQUALS = 'equals', - NOT_EQUALS = 'not_equals', - CONTAINS = 'contains', - NOT_CONTAINS = 'not_contains', - STARTS_WITH = 'starts_with', - ENDS_WITH = 'ends_with', - GREATER_THAN = 'greater_than', - LESS_THAN = 'less_than', - GREATER_OR_EQUAL = 'greater_or_equal', - LESS_OR_EQUAL = 'less_or_equal', - IS_SET = 'is_set', - IS_NOT_SET = 'is_not_set', - IN_LIST = 'in_list', - NOT_IN_LIST = 'not_in_list', - BEFORE = 'before', - AFTER = 'after', - BETWEEN = 'between' + EQUALS = 'equals', + NOT_EQUALS = 'not_equals', + CONTAINS = 'contains', + NOT_CONTAINS = 'not_contains', + STARTS_WITH = 'starts_with', + ENDS_WITH = 'ends_with', + GREATER_THAN = 'greater_than', + LESS_THAN = 'less_than', + GREATER_OR_EQUAL = 'greater_or_equal', + LESS_OR_EQUAL = 'less_or_equal', + IS_SET = 'is_set', + IS_NOT_SET = 'is_not_set', + IN_LIST = 'in_list', + NOT_IN_LIST = 'not_in_list', + BEFORE = 'before', + AFTER = 'after', + BETWEEN = 'between', } diff --git a/src/email-marketing/enums/trigger-type.enum.ts b/src/email-marketing/enums/trigger-type.enum.ts index 982efcb8..fd4012ad 100644 --- a/src/email-marketing/enums/trigger-type.enum.ts +++ b/src/email-marketing/enums/trigger-type.enum.ts @@ -1,14 +1,14 @@ export enum TriggerType { - USER_SIGNUP = 'user_signup', - COURSE_ENROLLED = 'course_enrolled', - COURSE_COMPLETED = 'course_completed', - PURCHASE_MADE = 'purchase_made', - USER_INACTIVE = 'user_inactive', - SUBSCRIPTION_CREATED = 'subscription_created', - SUBSCRIPTION_CANCELLED = 'subscription_cancelled', - BIRTHDAY = 'birthday', - CUSTOM_EVENT = 'custom_event', - DATE_BASED = 'date_based', - SEGMENT_ENTERED = 'segment_entered', - SEGMENT_LEFT = 'segment_left' + USER_SIGNUP = 'user_signup', + COURSE_ENROLLED = 'course_enrolled', + COURSE_COMPLETED = 'course_completed', + PURCHASE_MADE = 'purchase_made', + USER_INACTIVE = 'user_inactive', + SUBSCRIPTION_CREATED = 'subscription_created', + SUBSCRIPTION_CANCELLED = 'subscription_cancelled', + BIRTHDAY = 'birthday', + CUSTOM_EVENT = 'custom_event', + DATE_BASED = 'date_based', + SEGMENT_ENTERED = 'segment_entered', + SEGMENT_LEFT = 'segment_left', } diff --git a/src/email-marketing/enums/workflow-status.enum.ts b/src/email-marketing/enums/workflow-status.enum.ts index 758b92a4..d8179562 100644 --- a/src/email-marketing/enums/workflow-status.enum.ts +++ b/src/email-marketing/enums/workflow-status.enum.ts @@ -1,6 +1,6 @@ export enum WorkflowStatus { - DRAFT = 'draft', - ACTIVE = 'active', - INACTIVE = 'inactive', - ARCHIVED = 'archived' + DRAFT = 'draft', + ACTIVE = 'active', + INACTIVE = 'inactive', + ARCHIVED = 'archived', } diff --git a/src/email-marketing/templates/template-management.service.ts b/src/email-marketing/templates/template-management.service.ts index 7570ecaa..29c73df5 100644 --- a/src/email-marketing/templates/template-management.service.ts +++ b/src/email-marketing/templates/template-management.service.ts @@ -11,162 +11,165 @@ import { UpdateTemplateDto } from '../dto/update-template.dto'; */ @Injectable() export class TemplateManagementService { - constructor( + constructor( @InjectRepository(EmailTemplate) - private readonly templateRepository: Repository) { - this.registerHandlebarsHelpers(); + private readonly templateRepository: Repository, + ) { + this.registerHandlebarsHelpers(); + } + /** + * Create a new email template + */ + async create(createTemplateDto: CreateTemplateDto): Promise { + // Validate template syntax + this.validateTemplateSyntax(createTemplateDto.htmlContent); + if (createTemplateDto.textContent) { + this.validateTemplateSyntax(createTemplateDto.textContent); } - /** - * Create a new email template - */ - async create(createTemplateDto: CreateTemplateDto): Promise { - // Validate template syntax - this.validateTemplateSyntax(createTemplateDto.htmlContent); - if (createTemplateDto.textContent) { - this.validateTemplateSyntax(createTemplateDto.textContent); - } - const template = this.templateRepository.create({ - ...createTemplateDto, - variables: this.extractVariables(createTemplateDto.htmlContent), - }); - return this.templateRepository.save(template); + const template = this.templateRepository.create({ + ...createTemplateDto, + variables: this.extractVariables(createTemplateDto.htmlContent), + }); + return this.templateRepository.save(template); + } + /** + * Get all templates + */ + async findAll( + page = 1, + limit = 10, + ): Promise<{ + templates: EmailTemplate[]; + total: number; + page: number; + totalPages: number; + }> { + const [templates, total] = await this.templateRepository.findAndCount({ + skip: (page - 1) * limit, + take: limit, + order: { createdAt: 'DESC' }, + }); + return { templates, total, page, totalPages: Math.ceil(total / limit) }; + } + /** + * Get a single template by ID + */ + async findOne(id: string): Promise { + const template = await this.templateRepository.findOne({ where: { id } }); + if (!template) { + throw new NotFoundException(`Template with ID ${id} not found`); } - /** - * Get all templates - */ - async findAll(page = 1, limit = 10): Promise<{ - templates: EmailTemplate[]; - total: number; - page: number; - totalPages: number; - }> { - const [templates, total] = await this.templateRepository.findAndCount({ - skip: (page - 1) * limit, - take: limit, - order: { createdAt: 'DESC' }, - }); - return { templates, total, page, totalPages: Math.ceil(total / limit) }; + return template; + } + /** + * Update a template + */ + async update(id: string, updateTemplateDto: UpdateTemplateDto): Promise { + const template = await this.findOne(id); + if (updateTemplateDto.htmlContent) { + this.validateTemplateSyntax(updateTemplateDto.htmlContent); + updateTemplateDto['variables'] = this.extractVariables(updateTemplateDto.htmlContent); } - /** - * Get a single template by ID - */ - async findOne(id: string): Promise { - const template = await this.templateRepository.findOne({ where: { id } }); - if (!template) { - throw new NotFoundException(`Template with ID ${id} not found`); - } - return template; + Object.assign(template, updateTemplateDto); + return this.templateRepository.save(template); + } + /** + * Delete a template + */ + async remove(id: string): Promise { + await this.findOne(id); + await this.templateRepository.softDelete(id); + } + /** + * Duplicate a template + */ + async duplicate(id: string): Promise { + const original = await this.findOne(id); + const duplicate = this.templateRepository.create({ + name: `${original.name} (Copy)`, + subject: original.subject, + htmlContent: original.htmlContent, + textContent: original.textContent, + category: original.category, + variables: original.variables, + }); + return this.templateRepository.save(duplicate); + } + /** + * Render a template with variables + */ + async renderTemplate( + templateId: string, + variables: Record, + ): Promise<{ + html: string; + text: string; + subject: string; + }> { + const template = await this.findOne(templateId); + const htmlTemplate = Handlebars.compile(template.htmlContent); + const subjectTemplate = Handlebars.compile(template.subject); + const textTemplate = template.textContent ? Handlebars.compile(template.textContent) : null; + return { + html: htmlTemplate(variables), + text: textTemplate ? textTemplate(variables) : this.stripHtml(htmlTemplate(variables)), + subject: subjectTemplate(variables), + }; + } + /** + * Preview a template with sample data + */ + async previewTemplate(id: string, sampleData?: Record) { + const template = await this.findOne(id); + const defaultData = this.generateSampleData(template.variables || []); + const data = { ...defaultData, ...sampleData }; + return this.renderTemplate(id, data); + } + // Private helper methods + private validateTemplateSyntax(content: string): void { + try { + Handlebars.compile(content); + } catch (error) { + throw new BadRequestException(`Invalid template syntax: ${error.message}`); } - /** - * Update a template - */ - async update(id: string, updateTemplateDto: UpdateTemplateDto): Promise { - const template = await this.findOne(id); - if (updateTemplateDto.htmlContent) { - this.validateTemplateSyntax(updateTemplateDto.htmlContent); - updateTemplateDto['variables'] = this.extractVariables(updateTemplateDto.htmlContent); - } - Object.assign(template, updateTemplateDto); - return this.templateRepository.save(template); + } + private extractVariables(content: string): string[] { + const regex = /\{\{([^}]+)\}\}/g; + const variables = new Set(); + let match; + while ((match = regex.exec(content)) !== null) { + const variable = match[1].trim().split(' ')[0]; + if (!variable.startsWith('#') && !variable.startsWith('/')) { + variables.add(variable); + } } - /** - * Delete a template - */ - async remove(id: string): Promise { - await this.findOne(id); - await this.templateRepository.softDelete(id); - } - /** - * Duplicate a template - */ - async duplicate(id: string): Promise { - const original = await this.findOne(id); - const duplicate = this.templateRepository.create({ - name: `${original.name} (Copy)`, - subject: original.subject, - htmlContent: original.htmlContent, - textContent: original.textContent, - category: original.category, - variables: original.variables, - }); - return this.templateRepository.save(duplicate); - } - /** - * Render a template with variables - */ - async renderTemplate(templateId: string, variables: Record): Promise<{ - html: string; - text: string; - subject: string; - }> { - const template = await this.findOne(templateId); - const htmlTemplate = Handlebars.compile(template.htmlContent); - const subjectTemplate = Handlebars.compile(template.subject); - const textTemplate = template.textContent ? Handlebars.compile(template.textContent) : null; - return { - html: htmlTemplate(variables), - text: textTemplate ? textTemplate(variables) : this.stripHtml(htmlTemplate(variables)), - subject: subjectTemplate(variables), - }; - } - /** - * Preview a template with sample data - */ - async previewTemplate(id: string, sampleData?: Record) { - const template = await this.findOne(id); - const defaultData = this.generateSampleData(template.variables || []); - const data = { ...defaultData, ...sampleData }; - return this.renderTemplate(id, data); - } - // Private helper methods - private validateTemplateSyntax(content: string): void { - try { - Handlebars.compile(content); - } - catch (error) { - throw new BadRequestException(`Invalid template syntax: ${error.message}`); - } - } - private extractVariables(content: string): string[] { - const regex = /\{\{([^}]+)\}\}/g; - const variables = new Set(); - let match; - while ((match = regex.exec(content)) !== null) { - const variable = match[1].trim().split(' ')[0]; - if (!variable.startsWith('#') && !variable.startsWith('/')) { - variables.add(variable); - } - } - return Array.from(variables); - } - private generateSampleData(variables: string[]): Record { - const sampleData: Record = {}; - for (const variable of variables) { - if (variable.includes('name')) - sampleData[variable] = 'John Doe'; - else if (variable.includes('email')) - sampleData[variable] = 'john@example.com'; - else if (variable.includes('url') || variable.includes('link')) { - sampleData[variable] = 'https://example.com'; - } - else { - sampleData[variable] = `[${variable}]`; - } - } - return sampleData; - } - private stripHtml(html: string): string { - return html - .replace(/<[^>]*>/g, '') - .replace(/\s+/g, ' ') - .trim(); - } - private registerHandlebarsHelpers(): void { - Handlebars.registerHelper('uppercase', (str) => str?.toUpperCase()); - Handlebars.registerHelper('lowercase', (str) => str?.toLowerCase()); - Handlebars.registerHelper('formatDate', (date) => new Date(date).toLocaleDateString()); - Handlebars.registerHelper('ifEquals', function (a, b, options) { - return a === b ? options.fn(this) : options.inverse(this); - }); + return Array.from(variables); + } + private generateSampleData(variables: string[]): Record { + const sampleData: Record = {}; + for (const variable of variables) { + if (variable.includes('name')) sampleData[variable] = 'John Doe'; + else if (variable.includes('email')) sampleData[variable] = 'john@example.com'; + else if (variable.includes('url') || variable.includes('link')) { + sampleData[variable] = 'https://example.com'; + } else { + sampleData[variable] = `[${variable}]`; + } } + return sampleData; + } + private stripHtml(html: string): string { + return html + .replace(/<[^>]*>/g, '') + .replace(/\s+/g, ' ') + .trim(); + } + private registerHandlebarsHelpers(): void { + Handlebars.registerHelper('uppercase', (str) => str?.toUpperCase()); + Handlebars.registerHelper('lowercase', (str) => str?.toLowerCase()); + Handlebars.registerHelper('formatDate', (date) => new Date(date).toLocaleDateString()); + Handlebars.registerHelper('ifEquals', function (a, b, options) { + return a === b ? options.fn(this) : options.inverse(this); + }); + } } diff --git a/src/email-marketing/templates/template.controller.ts b/src/email-marketing/templates/template.controller.ts index c2b31b85..69d82bec 100644 --- a/src/email-marketing/templates/template.controller.ts +++ b/src/email-marketing/templates/template.controller.ts @@ -1,4 +1,16 @@ -import { Controller, Get, Post, Put, Delete, Body, Param, Query, ParseUUIDPipe, HttpCode, HttpStatus, } from '@nestjs/common'; +import { + Controller, + Get, + Post, + Put, + Delete, + Body, + Param, + Query, + ParseUUIDPipe, + HttpCode, + HttpStatus, +} from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth, ApiQuery } from '@nestjs/swagger'; import { TemplateManagementService } from './template-management.service'; import { CreateTemplateDto } from '../dto/create-template.dto'; diff --git a/src/feature-flags/interfaces/index.ts b/src/feature-flags/interfaces/index.ts index 2adbaa1c..a05870df 100644 --- a/src/feature-flags/interfaces/index.ts +++ b/src/feature-flags/interfaces/index.ts @@ -1,6 +1,28 @@ export type FlagValueType = boolean | string | number; -export type EvaluationReason = 'FLAG_DISABLED' | 'PREREQUISITE_FAILED' | 'TARGETING_MATCH' | 'ROLLOUT' | 'EXPERIMENT' | 'DEFAULT' | 'ERROR'; -export type ConditionOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'greaterThan' | 'greaterThanOrEqual' | 'lessThan' | 'lessThanOrEqual' | 'in' | 'notIn' | 'regex' | 'exists' | 'notExists'; +export type EvaluationReason = + | 'FLAG_DISABLED' + | 'PREREQUISITE_FAILED' + | 'TARGETING_MATCH' + | 'ROLLOUT' + | 'EXPERIMENT' + | 'DEFAULT' + | 'ERROR'; +export type ConditionOperator = + | 'equals' + | 'notEquals' + | 'contains' + | 'notContains' + | 'startsWith' + | 'endsWith' + | 'greaterThan' + | 'greaterThanOrEqual' + | 'lessThan' + | 'lessThanOrEqual' + | 'in' + | 'notIn' + | 'regex' + | 'exists' + | 'notExists'; export type FlagType = 'boolean' | 'string' | 'number'; export type ExperimentStatus = 'draft' | 'running' | 'paused' | 'completed'; diff --git a/src/gamification/badges/badges.service.ts b/src/gamification/badges/badges.service.ts index 7d0731c1..fcc38fe8 100644 --- a/src/gamification/badges/badges.service.ts +++ b/src/gamification/badges/badges.service.ts @@ -10,31 +10,32 @@ import { User } from '../../users/entities/user.entity'; */ @Injectable() export class BadgesService { - constructor( + constructor( @InjectRepository(Badge) - private badgeRepository: Repository, + private badgeRepository: Repository, @InjectRepository(UserBadge) - private userBadgeRepository: Repository) { } - async awardBadge(userId: string, badgeId: string): Promise { - const existingBadge = await this.userBadgeRepository.findOne({ - where: { user: { id: userId }, badge: { id: badgeId } }, - }); - if (existingBadge) { - return existingBadge; - } - const userBadge = this.userBadgeRepository.create({ - user: { id: userId } as User, - badge: { id: badgeId } as Badge, - }); - return await this.userBadgeRepository.save(userBadge); - } - async getUserBadges(userId: string): Promise { - return await this.userBadgeRepository.find({ - where: { user: { id: userId } }, - relations: ['badge'], - }); - } - async getAllBadges(): Promise { - return await this.badgeRepository.find(); + private userBadgeRepository: Repository, + ) {} + async awardBadge(userId: string, badgeId: string): Promise { + const existingBadge = await this.userBadgeRepository.findOne({ + where: { user: { id: userId }, badge: { id: badgeId } }, + }); + if (existingBadge) { + return existingBadge; } + const userBadge = this.userBadgeRepository.create({ + user: { id: userId } as User, + badge: { id: badgeId } as Badge, + }); + return await this.userBadgeRepository.save(userBadge); + } + async getUserBadges(userId: string): Promise { + return await this.userBadgeRepository.find({ + where: { user: { id: userId } }, + relations: ['badge'], + }); + } + async getAllBadges(): Promise { + return await this.badgeRepository.find(); + } } diff --git a/src/gamification/leaderboards/leaderboards.service.ts b/src/gamification/leaderboards/leaderboards.service.ts index 9656e4ad..8dc02d69 100644 --- a/src/gamification/leaderboards/leaderboards.service.ts +++ b/src/gamification/leaderboards/leaderboards.service.ts @@ -8,21 +8,22 @@ import { UserProgress } from '../entities/user-progress.entity'; */ @Injectable() export class LeaderboardService { - constructor( + constructor( @InjectRepository(UserProgress) - private userProgressRepository: Repository) { } - async getTopPlayers(limit: number = 10): Promise { - return await this.userProgressRepository.find({ - order: { totalPoints: 'DESC' }, - take: limit, - relations: ['user'], - }); - } - async getUserRank(userId: string): Promise { - const allProgress = await this.userProgressRepository.find({ - order: { totalPoints: 'DESC' }, - }); - const rank = allProgress.findIndex((p) => p.user?.id === userId) + 1; - return rank > 0 ? rank : null; - } + private userProgressRepository: Repository, + ) {} + async getTopPlayers(limit: number = 10): Promise { + return await this.userProgressRepository.find({ + order: { totalPoints: 'DESC' }, + take: limit, + relations: ['user'], + }); + } + async getUserRank(userId: string): Promise { + const allProgress = await this.userProgressRepository.find({ + order: { totalPoints: 'DESC' }, + }); + const rank = allProgress.findIndex((p) => p.user?.id === userId) + 1; + return rank > 0 ? rank : null; + } } diff --git a/src/gamification/points/points.service.ts b/src/gamification/points/points.service.ts index 911244a9..74fa090f 100644 --- a/src/gamification/points/points.service.ts +++ b/src/gamification/points/points.service.ts @@ -10,44 +10,45 @@ import { User } from '../../users/entities/user.entity'; */ @Injectable() export class PointsService { - constructor( + constructor( @InjectRepository(UserProgress) - private userProgressRepository: Repository, + private userProgressRepository: Repository, @InjectRepository(PointTransaction) - private pointTransactionRepository: Repository) { } - async addPoints(userId: string, points: number, activityType: string): Promise { - // Log the transaction - const transaction = this.pointTransactionRepository.create({ - user: { id: userId } as User, - points, - activityType, - }); - await this.pointTransactionRepository.save(transaction); - // Update user progress - let progress = await this.userProgressRepository.findOne({ - where: { user: { id: userId } }, - }); - if (!progress) { - progress = this.userProgressRepository.create({ - user: { id: userId } as User, - totalPoints: 0, - level: 1, - xp: 0, - }); - } - progress.totalPoints += points; - progress.xp += points; - // Basic level progression logic: level up every 1000 XP - const newLevel = Math.floor(progress.xp / 1000) + 1; - if (newLevel > progress.level) { - progress.level = newLevel; - // TODO: Emit level up event - } - return await this.userProgressRepository.save(progress); + private pointTransactionRepository: Repository, + ) {} + async addPoints(userId: string, points: number, activityType: string): Promise { + // Log the transaction + const transaction = this.pointTransactionRepository.create({ + user: { id: userId } as User, + points, + activityType, + }); + await this.pointTransactionRepository.save(transaction); + // Update user progress + let progress = await this.userProgressRepository.findOne({ + where: { user: { id: userId } }, + }); + if (!progress) { + progress = this.userProgressRepository.create({ + user: { id: userId } as User, + totalPoints: 0, + level: 1, + xp: 0, + }); } - async getUserProgress(userId: string): Promise { - return await this.userProgressRepository.findOne({ - where: { user: { id: userId } }, - }); + progress.totalPoints += points; + progress.xp += points; + // Basic level progression logic: level up every 1000 XP + const newLevel = Math.floor(progress.xp / 1000) + 1; + if (newLevel > progress.level) { + progress.level = newLevel; + // TODO: Emit level up event } + return await this.userProgressRepository.save(progress); + } + async getUserProgress(userId: string): Promise { + return await this.userProgressRepository.findOne({ + where: { user: { id: userId } }, + }); + } } diff --git a/src/graphql/inputs/assessment.input.ts b/src/graphql/inputs/assessment.input.ts index 7650eb48..2ccf6efe 100644 --- a/src/graphql/inputs/assessment.input.ts +++ b/src/graphql/inputs/assessment.input.ts @@ -6,24 +6,24 @@ import { IsString, IsNumber, IsOptional, IsArray, Min } from 'class-validator'; */ @InputType() export class QuestionInput { - @Field() - @IsString() - prompt: string; - @Field() - @IsString() - type: string; - @Field(() => [String], { nullable: true }) - @IsOptional() - @IsArray() - options?: string[]; - @Field({ nullable: true }) - @IsOptional() - @IsString() - correctAnswer?: string; - @Field(() => Int) - @IsNumber() - @Min(1) - points: number; + @Field() + @IsString() + prompt: string; + @Field() + @IsString() + type: string; + @Field(() => [String], { nullable: true }) + @IsOptional() + @IsArray() + options?: string[]; + @Field({ nullable: true }) + @IsOptional() + @IsString() + correctAnswer?: string; + @Field(() => Int) + @IsNumber() + @Min(1) + points: number; } /** @@ -31,20 +31,20 @@ export class QuestionInput { */ @InputType() export class CreateAssessmentInput { - @Field() - @IsString() - title: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - description?: string; - @Field(() => Int) - @IsNumber() - @Min(1) - durationMinutes: number; - @Field(() => [QuestionInput]) - @IsArray() - questions: QuestionInput[]; + @Field() + @IsString() + title: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + description?: string; + @Field(() => Int) + @IsNumber() + @Min(1) + durationMinutes: number; + @Field(() => [QuestionInput]) + @IsArray() + questions: QuestionInput[]; } /** @@ -52,17 +52,17 @@ export class CreateAssessmentInput { */ @InputType() export class UpdateAssessmentInput { - @Field({ nullable: true }) - @IsOptional() - @IsString() - title?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - description?: string; - @Field(() => Int, { nullable: true }) - @IsOptional() - @IsNumber() - @Min(1) - durationMinutes?: number; + @Field({ nullable: true }) + @IsOptional() + @IsString() + title?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + description?: string; + @Field(() => Int, { nullable: true }) + @IsOptional() + @IsNumber() + @Min(1) + durationMinutes?: number; } diff --git a/src/graphql/inputs/course.input.ts b/src/graphql/inputs/course.input.ts index 7a835d54..2480824f 100644 --- a/src/graphql/inputs/course.input.ts +++ b/src/graphql/inputs/course.input.ts @@ -6,23 +6,23 @@ import { IsString, IsNumber, IsOptional, Min } from 'class-validator'; */ @InputType() export class CreateCourseInput { - @Field() - @IsString() - title: string; - @Field() - @IsString() - description: string; - @Field(() => Float) - @IsNumber() - @Min(0) - price: number; - @Field({ nullable: true }) - @IsOptional() - @IsString() - thumbnailUrl?: string; - @Field() - @IsString() - instructorId: string; + @Field() + @IsString() + title: string; + @Field() + @IsString() + description: string; + @Field(() => Float) + @IsNumber() + @Min(0) + price: number; + @Field({ nullable: true }) + @IsOptional() + @IsString() + thumbnailUrl?: string; + @Field() + @IsString() + instructorId: string; } /** @@ -30,27 +30,27 @@ export class CreateCourseInput { */ @InputType() export class UpdateCourseInput { - @Field({ nullable: true }) - @IsOptional() - @IsString() - title?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - description?: string; - @Field(() => Float, { nullable: true }) - @IsOptional() - @IsNumber() - @Min(0) - price?: number; - @Field({ nullable: true }) - @IsOptional() - @IsString() - status?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - thumbnailUrl?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + title?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + description?: string; + @Field(() => Float, { nullable: true }) + @IsOptional() + @IsNumber() + @Min(0) + price?: number; + @Field({ nullable: true }) + @IsOptional() + @IsString() + status?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + thumbnailUrl?: string; } /** @@ -58,16 +58,16 @@ export class UpdateCourseInput { */ @InputType() export class CourseFilterInput { - @Field({ nullable: true }) - @IsOptional() - @IsString() - status?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - instructorId?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - search?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + status?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + instructorId?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + search?: string; } diff --git a/src/graphql/inputs/user.input.ts b/src/graphql/inputs/user.input.ts index e8d75560..b623d759 100644 --- a/src/graphql/inputs/user.input.ts +++ b/src/graphql/inputs/user.input.ts @@ -7,27 +7,27 @@ import { UserRole, UserStatus } from '../../users/entities/user.entity'; */ @InputType() export class CreateUserInput { - @Field() - @IsEmail() - email: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - username?: string; - @Field() - @IsString() - @MinLength(8) - password: string; - @Field() - @IsString() - firstName: string; - @Field() - @IsString() - lastName: string; - @Field(() => UserRole, { nullable: true }) - @IsOptional() - @IsEnum(UserRole) - role?: UserRole; + @Field() + @IsEmail() + email: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + username?: string; + @Field() + @IsString() + @MinLength(8) + password: string; + @Field() + @IsString() + firstName: string; + @Field() + @IsString() + lastName: string; + @Field(() => UserRole, { nullable: true }) + @IsOptional() + @IsEnum(UserRole) + role?: UserRole; } /** @@ -35,26 +35,26 @@ export class CreateUserInput { */ @InputType() export class UpdateUserInput { - @Field({ nullable: true }) - @IsOptional() - @IsString() - username?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - firstName?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - lastName?: string; - @Field({ nullable: true }) - @IsOptional() - @IsString() - profilePicture?: string; - @Field(() => UserStatus, { nullable: true }) - @IsOptional() - @IsEnum(UserStatus) - status?: UserStatus; + @Field({ nullable: true }) + @IsOptional() + @IsString() + username?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + firstName?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + lastName?: string; + @Field({ nullable: true }) + @IsOptional() + @IsString() + profilePicture?: string; + @Field(() => UserStatus, { nullable: true }) + @IsOptional() + @IsEnum(UserStatus) + status?: UserStatus; } /** @@ -62,16 +62,16 @@ export class UpdateUserInput { */ @InputType() export class UserFilterInput { - @Field({ nullable: true }) - @IsOptional() - @IsEnum(UserRole) - role?: UserRole; - @Field({ nullable: true }) - @IsOptional() - @IsEnum(UserStatus) - status?: UserStatus; - @Field({ nullable: true }) - @IsOptional() - @IsString() - search?: string; + @Field({ nullable: true }) + @IsOptional() + @IsEnum(UserRole) + role?: UserRole; + @Field({ nullable: true }) + @IsOptional() + @IsEnum(UserStatus) + status?: UserStatus; + @Field({ nullable: true }) + @IsOptional() + @IsString() + search?: string; } diff --git a/src/graphql/types/assessment.type.ts b/src/graphql/types/assessment.type.ts index 6de83ae9..4be7f0a8 100644 --- a/src/graphql/types/assessment.type.ts +++ b/src/graphql/types/assessment.type.ts @@ -5,18 +5,18 @@ import { ObjectType, Field, ID, Int } from '@nestjs/graphql'; */ @ObjectType() export class QuestionType { - @Field(() => ID) - id: string; - @Field() - prompt: string; - @Field() - type: string; - @Field(() => [String], { nullable: 'itemsAndList' }) - options?: string[]; - @Field({ nullable: true }) - correctAnswer?: string; - @Field(() => Int) - points: number; + @Field(() => ID) + id: string; + @Field() + prompt: string; + @Field() + type: string; + @Field(() => [String], { nullable: 'itemsAndList' }) + options?: string[]; + @Field({ nullable: true }) + correctAnswer?: string; + @Field(() => Int) + points: number; } /** @@ -24,16 +24,16 @@ export class QuestionType { */ @ObjectType() export class AssessmentType { - @Field(() => ID) - id: string; - @Field() - title: string; - @Field({ nullable: true }) - description?: string; - @Field(() => Int) - durationMinutes: number; - @Field(() => [QuestionType], { nullable: 'itemsAndList' }) - questions?: QuestionType[]; - @Field() - createdAt: Date; + @Field(() => ID) + id: string; + @Field() + title: string; + @Field({ nullable: true }) + description?: string; + @Field(() => Int) + durationMinutes: number; + @Field(() => [QuestionType], { nullable: 'itemsAndList' }) + questions?: QuestionType[]; + @Field() + createdAt: Date; } diff --git a/src/graphql/types/course.type.ts b/src/graphql/types/course.type.ts index f7f0ead1..7b5f3ac6 100644 --- a/src/graphql/types/course.type.ts +++ b/src/graphql/types/course.type.ts @@ -6,22 +6,22 @@ import { UserType } from './user.type'; */ @ObjectType() export class CourseType { - @Field(() => ID) - id: string; - @Field() - title: string; - @Field() - description: string; - @Field(() => Float) - price: number; - @Field() - status: string; - @Field({ nullable: true }) - thumbnailUrl?: string; - @Field(() => UserType, { nullable: true }) - instructor?: UserType; - @Field() - createdAt: Date; - @Field() - updatedAt: Date; + @Field(() => ID) + id: string; + @Field() + title: string; + @Field() + description: string; + @Field(() => Float) + price: number; + @Field() + status: string; + @Field({ nullable: true }) + thumbnailUrl?: string; + @Field(() => UserType, { nullable: true }) + instructor?: UserType; + @Field() + createdAt: Date; + @Field() + updatedAt: Date; } diff --git a/src/graphql/types/user.type.ts b/src/graphql/types/user.type.ts index 71050043..b3f6bcab 100644 --- a/src/graphql/types/user.type.ts +++ b/src/graphql/types/user.type.ts @@ -2,12 +2,12 @@ import { ObjectType, Field, ID, registerEnumType } from '@nestjs/graphql'; import { UserRole, UserStatus } from '../../users/entities/user.entity'; import { CourseType } from './course.type'; registerEnumType(UserRole, { - name: 'UserRole', - description: 'User role in the system', + name: 'UserRole', + description: 'User role in the system', }); registerEnumType(UserStatus, { - name: 'UserStatus', - description: 'User account status', + name: 'UserStatus', + description: 'User account status', }); /** @@ -15,32 +15,32 @@ registerEnumType(UserStatus, { */ @ObjectType() export class UserType { - @Field(() => ID) - id: string; - @Field() - email: string; - @Field({ nullable: true }) - username?: string; - @Field() - firstName: string; - @Field() - lastName: string; - @Field(() => UserRole) - role: UserRole; - @Field(() => UserStatus) - status: UserStatus; - @Field({ nullable: true }) - tenantId?: string; - @Field({ nullable: true }) - profilePicture?: string; - @Field() - isEmailVerified: boolean; - @Field({ nullable: true }) - lastLoginAt?: Date; - @Field(() => [CourseType], { nullable: 'itemsAndList' }) - courses?: CourseType[]; - @Field() - createdAt: Date; - @Field() - updatedAt: Date; + @Field(() => ID) + id: string; + @Field() + email: string; + @Field({ nullable: true }) + username?: string; + @Field() + firstName: string; + @Field() + lastName: string; + @Field(() => UserRole) + role: UserRole; + @Field(() => UserStatus) + status: UserStatus; + @Field({ nullable: true }) + tenantId?: string; + @Field({ nullable: true }) + profilePicture?: string; + @Field() + isEmailVerified: boolean; + @Field({ nullable: true }) + lastLoginAt?: Date; + @Field(() => [CourseType], { nullable: 'itemsAndList' }) + courses?: CourseType[]; + @Field() + createdAt: Date; + @Field() + updatedAt: Date; } diff --git a/src/localization/dto/bundle-query.dto.ts b/src/localization/dto/bundle-query.dto.ts index 31c713a2..4b9e472c 100644 --- a/src/localization/dto/bundle-query.dto.ts +++ b/src/localization/dto/bundle-query.dto.ts @@ -5,17 +5,17 @@ import { IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator'; * Defines the bundle Query payload. */ export class BundleQueryDto { - @ApiProperty({ example: 'errors' }) - @IsString() - @IsNotEmpty() - @MaxLength(128) - namespace: string; - @ApiPropertyOptional({ - example: 'en', - description: 'If omitted, uses detected language from middleware / Accept-Language', - }) - @IsOptional() - @IsString() - @MaxLength(32) - locale?: string; + @ApiProperty({ example: 'errors' }) + @IsString() + @IsNotEmpty() + @MaxLength(128) + namespace: string; + @ApiPropertyOptional({ + example: 'en', + description: 'If omitted, uses detected language from middleware / Accept-Language', + }) + @IsOptional() + @IsString() + @MaxLength(32) + locale?: string; } diff --git a/src/localization/dto/create-translation.dto.ts b/src/localization/dto/create-translation.dto.ts index 26861c09..77ed707e 100644 --- a/src/localization/dto/create-translation.dto.ts +++ b/src/localization/dto/create-translation.dto.ts @@ -5,23 +5,23 @@ import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; * Defines the create Translation payload. */ export class CreateTranslationDto { - @ApiProperty({ example: 'errors' }) - @IsString() - @IsNotEmpty() - @MaxLength(128) - namespace: string; - @ApiProperty({ example: 'not_found' }) - @IsString() - @IsNotEmpty() - @MaxLength(512) - key: string; - @ApiProperty({ example: 'en' }) - @IsString() - @IsNotEmpty() - @MaxLength(32) - locale: string; - @ApiProperty({ example: 'Resource was not found.' }) - @IsString() - @IsNotEmpty() - value: string; + @ApiProperty({ example: 'errors' }) + @IsString() + @IsNotEmpty() + @MaxLength(128) + namespace: string; + @ApiProperty({ example: 'not_found' }) + @IsString() + @IsNotEmpty() + @MaxLength(512) + key: string; + @ApiProperty({ example: 'en' }) + @IsString() + @IsNotEmpty() + @MaxLength(32) + locale: string; + @ApiProperty({ example: 'Resource was not found.' }) + @IsString() + @IsNotEmpty() + value: string; } diff --git a/src/localization/dto/export-query.dto.ts b/src/localization/dto/export-query.dto.ts index 38d611ea..96399ac5 100644 --- a/src/localization/dto/export-query.dto.ts +++ b/src/localization/dto/export-query.dto.ts @@ -5,19 +5,19 @@ import { IsIn, IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validat * Defines the export Query payload. */ export class ExportQueryDto { - @ApiProperty({ example: 'errors' }) - @IsString() - @IsNotEmpty() - @MaxLength(128) - namespace: string; - @ApiPropertyOptional({ example: 'en' }) - @IsOptional() - @IsString() - @MaxLength(32) - locale?: string; - @ApiPropertyOptional({ enum: ['json', 'csv'], default: 'json' }) - @IsOptional() - @IsString() - @IsIn(['json', 'csv']) - format?: 'json' | 'csv' = 'json'; + @ApiProperty({ example: 'errors' }) + @IsString() + @IsNotEmpty() + @MaxLength(128) + namespace: string; + @ApiPropertyOptional({ example: 'en' }) + @IsOptional() + @IsString() + @MaxLength(32) + locale?: string; + @ApiPropertyOptional({ enum: ['json', 'csv'], default: 'json' }) + @IsOptional() + @IsString() + @IsIn(['json', 'csv']) + format?: 'json' | 'csv' = 'json'; } diff --git a/src/localization/dto/import-translations.dto.ts b/src/localization/dto/import-translations.dto.ts index dc780319..61c3fce0 100644 --- a/src/localization/dto/import-translations.dto.ts +++ b/src/localization/dto/import-translations.dto.ts @@ -13,38 +13,38 @@ import { * Defines the translation Import Row payload. */ export class TranslationImportRowDto { - @ApiProperty({ example: 'errors' }) - @IsString() - @IsNotEmpty() - @MaxLength(128) - namespace: string; - @ApiProperty({ example: 'not_found' }) - @IsString() - @IsNotEmpty() - @MaxLength(512) - key: string; - @ApiProperty({ example: 'en' }) - @IsString() - @IsNotEmpty() - @MaxLength(32) - locale: string; - @ApiProperty({ example: 'Not found.' }) - @IsString() - @IsNotEmpty() - value: string; + @ApiProperty({ example: 'errors' }) + @IsString() + @IsNotEmpty() + @MaxLength(128) + namespace: string; + @ApiProperty({ example: 'not_found' }) + @IsString() + @IsNotEmpty() + @MaxLength(512) + key: string; + @ApiProperty({ example: 'en' }) + @IsString() + @IsNotEmpty() + @MaxLength(32) + locale: string; + @ApiProperty({ example: 'Not found.' }) + @IsString() + @IsNotEmpty() + value: string; } /** Body: `{ "translations": [...] }` or `{ "rows": [...] }` (alias). */ export class ImportTranslationsDto { - @ApiPropertyOptional({ type: [TranslationImportRowDto] }) - @IsOptional() - @IsArray() - @ValidateNested({ each: true }) - @Type(() => TranslationImportRowDto) - translations?: TranslationImportRowDto[]; - @ApiPropertyOptional({ type: [TranslationImportRowDto], description: 'Alias of translations' }) - @IsOptional() - @IsArray() - @ValidateNested({ each: true }) - @Type(() => TranslationImportRowDto) - rows?: TranslationImportRowDto[]; + @ApiPropertyOptional({ type: [TranslationImportRowDto] }) + @IsOptional() + @IsArray() + @ValidateNested({ each: true }) + @Type(() => TranslationImportRowDto) + translations?: TranslationImportRowDto[]; + @ApiPropertyOptional({ type: [TranslationImportRowDto], description: 'Alias of translations' }) + @IsOptional() + @IsArray() + @ValidateNested({ each: true }) + @Type(() => TranslationImportRowDto) + rows?: TranslationImportRowDto[]; } diff --git a/src/localization/dto/list-translations-query.dto.ts b/src/localization/dto/list-translations-query.dto.ts index 8c07dee0..d3359b83 100644 --- a/src/localization/dto/list-translations-query.dto.ts +++ b/src/localization/dto/list-translations-query.dto.ts @@ -6,32 +6,32 @@ import { IsInt, IsOptional, IsString, Max, MaxLength, Min } from 'class-validato * Defines the list Translations Query payload. */ export class ListTranslationsQueryDto { - @ApiPropertyOptional({ example: 'errors' }) - @IsOptional() - @IsString() - @MaxLength(128) - namespace?: string; - @ApiPropertyOptional({ example: 'en' }) - @IsOptional() - @IsString() - @MaxLength(32) - locale?: string; - @ApiPropertyOptional({ description: 'Search substring in key or value' }) - @IsOptional() - @IsString() - @MaxLength(256) - search?: string; - @ApiPropertyOptional({ default: 1 }) - @IsOptional() - @Type(() => Number) - @IsInt() - @Min(1) - page?: number = 1; - @ApiPropertyOptional({ default: 20 }) - @IsOptional() - @Type(() => Number) - @IsInt() - @Min(1) - @Max(100) - limit?: number = 20; + @ApiPropertyOptional({ example: 'errors' }) + @IsOptional() + @IsString() + @MaxLength(128) + namespace?: string; + @ApiPropertyOptional({ example: 'en' }) + @IsOptional() + @IsString() + @MaxLength(32) + locale?: string; + @ApiPropertyOptional({ description: 'Search substring in key or value' }) + @IsOptional() + @IsString() + @MaxLength(256) + search?: string; + @ApiPropertyOptional({ default: 1 }) + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + page?: number = 1; + @ApiPropertyOptional({ default: 20 }) + @IsOptional() + @Type(() => Number) + @IsInt() + @Min(1) + @Max(100) + limit?: number = 20; } diff --git a/src/localization/dto/update-translation.dto.ts b/src/localization/dto/update-translation.dto.ts index e246b61d..81a91f7e 100644 --- a/src/localization/dto/update-translation.dto.ts +++ b/src/localization/dto/update-translation.dto.ts @@ -5,23 +5,23 @@ import { IsOptional, IsString, MaxLength } from 'class-validator'; * Defines the update Translation payload. */ export class UpdateTranslationDto { - @ApiPropertyOptional({ example: 'errors' }) - @IsOptional() - @IsString() - @MaxLength(128) - namespace?: string; - @ApiPropertyOptional({ example: 'not_found' }) - @IsOptional() - @IsString() - @MaxLength(512) - key?: string; - @ApiPropertyOptional({ example: 'en' }) - @IsOptional() - @IsString() - @MaxLength(32) - locale?: string; - @ApiPropertyOptional() - @IsOptional() - @IsString() - value?: string; + @ApiPropertyOptional({ example: 'errors' }) + @IsOptional() + @IsString() + @MaxLength(128) + namespace?: string; + @ApiPropertyOptional({ example: 'not_found' }) + @IsOptional() + @IsString() + @MaxLength(512) + key?: string; + @ApiPropertyOptional({ example: 'en' }) + @IsOptional() + @IsString() + @MaxLength(32) + locale?: string; + @ApiPropertyOptional() + @IsOptional() + @IsString() + value?: string; } diff --git a/src/localization/localization.constants.ts b/src/localization/localization.constants.ts index c55c2dba..f69b3b56 100644 --- a/src/localization/localization.constants.ts +++ b/src/localization/localization.constants.ts @@ -7,5 +7,5 @@ export const I18N_CACHE_KEY_PREFIX = 'i18n:ns:'; * @returns The resulting string value. */ export function bundleCacheKey(namespace: string, locale: string): string { - return `${I18N_CACHE_KEY_PREFIX}${namespace}:${locale}`; + return `${I18N_CACHE_KEY_PREFIX}${namespace}:${locale}`; } diff --git a/src/main.ts b/src/main.ts index 8b03debc..190ba9fe 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,15 +8,7 @@ import session, { type Session, type SessionData } from 'express-session'; import { RedisStore } from 'connect-redis'; import Redis from 'ioredis'; import { AppModule } from './app.module'; -import { GlobalExceptionFilter } from './common/interceptors/global-exception.filter'; -import { ResponseTransformInterceptor } from './common/interceptors/response-transform.interceptor'; import { correlationMiddleware } from './common/utils/correlation.utils'; -import { - API_VERSION_HEADER, - DEFAULT_API_VERSION, - SUPPORTED_API_VERSIONS, -} from './common/interceptors/api-version.interceptor'; -import { API_VERSIONING_DOCUMENTATION } from './common/modules/api-versioning.module'; import { sessionConfig } from './config/cache.config'; import { SESSION_REDIS_CLIENT } from './session/session.constants'; import helmet from 'helmet'; @@ -25,6 +17,10 @@ import { ShutdownStateService } from './common/services/shutdown-state.service'; import { TIME, BYTES } from './common/constants/time.constants'; import { DecompressionMiddleware } from './common/middleware/decompression.middleware'; +const API_VERSION_HEADER = 'X-API-Version'; +const DEFAULT_API_VERSION = '1'; +const SUPPORTED_API_VERSIONS = ['1']; + type SessionRequest = Request & { session?: Session & Partial & { userAgent?: string }; }; @@ -38,7 +34,7 @@ async function bootstrapWorker(): Promise { 10, ); - const app = await NestFactory.create(await AppModule.forRoot(), { rawBody: true }); + const app = await NestFactory.create(AppModule, { rawBody: true }); const shutdownState = app.get(ShutdownStateService); app.enableVersioning({ @@ -144,12 +140,11 @@ async function bootstrapWorker(): Promise { } res.status(401).json({ message: 'Session invalidation due to fixation protection' }); }); + return; } next(); }); - app.useGlobalFilters(new GlobalExceptionFilter()); - app.useGlobalInterceptors(new ResponseTransformInterceptor()); app.enableCors(corsConfig); app.useGlobalPipes( @@ -168,9 +163,7 @@ async function bootstrapWorker(): Promise { const config = new DocumentBuilder() .setTitle('TeachLink API') - .setDescription( - `The TeachLink API documentation - Unified System. ${API_VERSIONING_DOCUMENTATION}`, - ) + .setDescription('The TeachLink API documentation - Unified System.') .setVersion('1.0') .addBearerAuth() .addTag('gamification', 'Gamification and user rewards') @@ -180,6 +173,9 @@ async function bootstrapWorker(): Promise { .addTag('Email Marketing - Segments', 'Audience segmentation') .addTag('Email Marketing - A/B Testing', 'A/B testing for campaigns') .addTag('Email Marketing - Analytics', 'Campaign analytics and reporting') + .addTag('App') + .addTag('Quota') + .addTag('Quota Management') .build(); const document = SwaggerModule.createDocument(app, config); diff --git a/src/media/validation/file-validation.constants.ts b/src/media/validation/file-validation.constants.ts index dbeca814..584cbe84 100644 --- a/src/media/validation/file-validation.constants.ts +++ b/src/media/validation/file-validation.constants.ts @@ -1,136 +1,142 @@ export const ALLOWED_FILE_TYPES = { - // Images - IMAGES: [ - 'image/jpeg', - 'image/jpg', - 'image/png', - 'image/gif', - 'image/webp', - 'image/svg+xml', - 'image/bmp', - 'image/tiff', - 'image/avif', - ], - // Videos - VIDEOS: [ - 'video/mp4', - 'video/webm', - 'video/ogg', - 'video/quicktime', - 'video/x-msvideo', - 'video/x-matroska', - 'video/mpeg', - ], - // Documents - DOCUMENTS: [ - 'application/pdf', - 'application/msword', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/vnd.ms-excel', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'application/vnd.ms-powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'text/plain', - 'text/csv', - 'application/rtf', - ], - // Audio - AUDIO: [ - 'audio/mpeg', - 'audio/mp3', - 'audio/wav', - 'audio/ogg', - 'audio/aac', - 'audio/webm', - 'audio/flac', - ], - // Archives (limited) - ARCHIVES: ['application/zip', 'application/x-zip-compressed'], + // Images + IMAGES: [ + 'image/jpeg', + 'image/jpg', + 'image/png', + 'image/gif', + 'image/webp', + 'image/svg+xml', + 'image/bmp', + 'image/tiff', + 'image/avif', + ], + // Videos + VIDEOS: [ + 'video/mp4', + 'video/webm', + 'video/ogg', + 'video/quicktime', + 'video/x-msvideo', + 'video/x-matroska', + 'video/mpeg', + ], + // Documents + DOCUMENTS: [ + 'application/pdf', + 'application/msword', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.ms-excel', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/vnd.ms-powerpoint', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'text/plain', + 'text/csv', + 'application/rtf', + ], + // Audio + AUDIO: [ + 'audio/mpeg', + 'audio/mp3', + 'audio/wav', + 'audio/ogg', + 'audio/aac', + 'audio/webm', + 'audio/flac', + ], + // Archives (limited) + ARCHIVES: ['application/zip', 'application/x-zip-compressed'], } as const; export const ALLOWED_EXTENSIONS = { - IMAGES: ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp', '.tiff', '.avif'], - VIDEOS: ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv', '.mpeg'], - DOCUMENTS: ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.txt', '.csv', '.rtf'], - AUDIO: ['.mp3', '.wav', '.ogg', '.aac', '.webm', '.flac'], - ARCHIVES: ['.zip'], + IMAGES: ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp', '.tiff', '.avif'], + VIDEOS: ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv', '.mpeg'], + DOCUMENTS: ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.txt', '.csv', '.rtf'], + AUDIO: ['.mp3', '.wav', '.ogg', '.aac', '.webm', '.flac'], + ARCHIVES: ['.zip'], } as const; export const FILE_SIZE_LIMITS = { - // Images: 20MB - IMAGE_MAX_SIZE: 20 * 1024 * 1024, - // Videos: 500MB - VIDEO_MAX_SIZE: 500 * 1024 * 1024, - // Documents: 50MB - DOCUMENT_MAX_SIZE: 50 * 1024 * 1024, - // Audio: 100MB - AUDIO_MAX_SIZE: 100 * 1024 * 1024, - // Archives: 100MB - ARCHIVE_MAX_SIZE: 100 * 1024 * 1024, - // Default: 10MB - DEFAULT_MAX_SIZE: 10 * 1024 * 1024, + // Images: 20MB + IMAGE_MAX_SIZE: 20 * 1024 * 1024, + // Videos: 500MB + VIDEO_MAX_SIZE: 500 * 1024 * 1024, + // Documents: 50MB + DOCUMENT_MAX_SIZE: 50 * 1024 * 1024, + // Audio: 100MB + AUDIO_MAX_SIZE: 100 * 1024 * 1024, + // Archives: 100MB + ARCHIVE_MAX_SIZE: 100 * 1024 * 1024, + // Default: 10MB + DEFAULT_MAX_SIZE: 10 * 1024 * 1024, } as const; export const ALL_ALLOWED_FILE_TYPES = Object.values(ALLOWED_FILE_TYPES).flat(); -export const MAX_UPLOAD_FILE_SIZE = Math.max(FILE_SIZE_LIMITS.IMAGE_MAX_SIZE, FILE_SIZE_LIMITS.VIDEO_MAX_SIZE, FILE_SIZE_LIMITS.DOCUMENT_MAX_SIZE, FILE_SIZE_LIMITS.AUDIO_MAX_SIZE, FILE_SIZE_LIMITS.ARCHIVE_MAX_SIZE); +export const MAX_UPLOAD_FILE_SIZE = Math.max( + FILE_SIZE_LIMITS.IMAGE_MAX_SIZE, + FILE_SIZE_LIMITS.VIDEO_MAX_SIZE, + FILE_SIZE_LIMITS.DOCUMENT_MAX_SIZE, + FILE_SIZE_LIMITS.AUDIO_MAX_SIZE, + FILE_SIZE_LIMITS.ARCHIVE_MAX_SIZE, +); export const IMAGE_DIMENSION_LIMITS = { - MIN_WIDTH: 1, - MIN_HEIGHT: 1, - MAX_WIDTH: 16384, - MAX_HEIGHT: 16384, - MAX_PIXELS: 100000000, // 100 megapixels + MIN_WIDTH: 1, + MIN_HEIGHT: 1, + MAX_WIDTH: 16384, + MAX_HEIGHT: 16384, + MAX_PIXELS: 100000000, // 100 megapixels } as const; export const THUMBNAIL_CONFIG = { - SIZES: [ - { name: 'thumbnail', width: 150, height: 150 }, - { name: 'small', width: 300, height: 300 }, - { name: 'medium', width: 600, height: 600 }, - { name: 'large', width: 1200, height: 1200 }, - ], - DEFAULT_FORMAT: 'webp' as const, - DEFAULT_QUALITY: 80, + SIZES: [ + { name: 'thumbnail', width: 150, height: 150 }, + { name: 'small', width: 300, height: 300 }, + { name: 'medium', width: 600, height: 600 }, + { name: 'large', width: 1200, height: 1200 }, + ], + DEFAULT_FORMAT: 'webp' as const, + DEFAULT_QUALITY: 80, } as const; export const COMPRESSION_CONFIG = { - JPEG_QUALITY: 85, - PNG_COMPRESSION_LEVEL: 9, - WEBP_QUALITY: 85, - AVIF_QUALITY: 80, - MAX_DIMENSION: 4096, + JPEG_QUALITY: 85, + PNG_COMPRESSION_LEVEL: 9, + WEBP_QUALITY: 85, + AVIF_QUALITY: 80, + MAX_DIMENSION: 4096, } as const; export const MALWARE_SCAN_CONFIG = { - MAX_FILE_SIZE_FOR_SCAN: 100 * 1024 * 1024, // 100MB - TIMEOUT_MS: 30000, // 30 seconds - RETRY_ATTEMPTS: 3, + MAX_FILE_SIZE_FOR_SCAN: 100 * 1024 * 1024, // 100MB + TIMEOUT_MS: 30000, // 30 seconds + RETRY_ATTEMPTS: 3, } as const; export const UPLOAD_PROGRESS_CONFIG = { - REDIS_KEY_PREFIX: 'upload:progress:', - EXPIRY_SECONDS: 3600, // 1 hour - UPDATE_INTERVAL_MS: 500, // Update every 500ms + REDIS_KEY_PREFIX: 'upload:progress:', + EXPIRY_SECONDS: 3600, // 1 hour + UPDATE_INTERVAL_MS: 500, // Update every 500ms } as const; export const MAGIC_NUMBERS: Record = { - // Images - 'image/jpeg': [Buffer.from([0xff, 0xd8, 0xff])], - 'image/png': [Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])], - 'image/gif': [ - Buffer.from([0x47, 0x49, 0x46, 0x38, 0x37, 0x61]), - Buffer.from([0x47, 0x49, 0x46, 0x38, 0x39, 0x61]), - ], - 'image/webp': [Buffer.from([0x52, 0x49, 0x46, 0x46])], // RIFF header - 'image/bmp': [Buffer.from([0x42, 0x4d])], // BM - 'image/tiff': [Buffer.from([0x49, 0x49, 0x2a, 0x00]), Buffer.from([0x4d, 0x4d, 0x00, 0x2a])], - // PDF - 'application/pdf': [Buffer.from([0x25, 0x50, 0x44, 0x46])], // %PDF - // ZIP (also for docx, xlsx, pptx) - 'application/zip': [Buffer.from([0x50, 0x4b, 0x03, 0x04])], - // MP4 - 'video/mp4': [ - Buffer.from([0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70]), - Buffer.from([0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70]), - ], - // MP3 - 'audio/mpeg': [ - Buffer.from([0xff, 0xfb]), - Buffer.from([0xff, 0xf3]), - Buffer.from([0xff, 0xf2]), - Buffer.from([0x49, 0x44, 0x33]), - ], - // WAV - 'audio/wav': [Buffer.from([0x52, 0x49, 0x46, 0x46])], // RIFF + // Images + 'image/jpeg': [Buffer.from([0xff, 0xd8, 0xff])], + 'image/png': [Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])], + 'image/gif': [ + Buffer.from([0x47, 0x49, 0x46, 0x38, 0x37, 0x61]), + Buffer.from([0x47, 0x49, 0x46, 0x38, 0x39, 0x61]), + ], + 'image/webp': [Buffer.from([0x52, 0x49, 0x46, 0x46])], // RIFF header + 'image/bmp': [Buffer.from([0x42, 0x4d])], // BM + 'image/tiff': [Buffer.from([0x49, 0x49, 0x2a, 0x00]), Buffer.from([0x4d, 0x4d, 0x00, 0x2a])], + // PDF + 'application/pdf': [Buffer.from([0x25, 0x50, 0x44, 0x46])], // %PDF + // ZIP (also for docx, xlsx, pptx) + 'application/zip': [Buffer.from([0x50, 0x4b, 0x03, 0x04])], + // MP4 + 'video/mp4': [ + Buffer.from([0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70]), + Buffer.from([0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70]), + ], + // MP3 + 'audio/mpeg': [ + Buffer.from([0xff, 0xfb]), + Buffer.from([0xff, 0xf3]), + Buffer.from([0xff, 0xf2]), + Buffer.from([0x49, 0x44, 0x33]), + ], + // WAV + 'audio/wav': [Buffer.from([0x52, 0x49, 0x46, 0x46])], // RIFF } as const; diff --git a/src/media/validation/upload-validation.util.ts b/src/media/validation/upload-validation.util.ts index 86b07167..cac180da 100644 --- a/src/media/validation/upload-validation.util.ts +++ b/src/media/validation/upload-validation.util.ts @@ -49,9 +49,9 @@ export const MEDIA_UPLOAD_INTERCEPTOR_OPTIONS = { * @returns The operation result. */ export function buildUploadValidationDetails() { - return { - allowedTypes: ALL_ALLOWED_FILE_TYPES, - sizeLimits: FILE_SIZE_LIMITS, - maxUploadSize: MAX_UPLOAD_FILE_SIZE, - }; + return { + allowedTypes: ALL_ALLOWED_FILE_TYPES, + sizeLimits: FILE_SIZE_LIMITS, + maxUploadSize: MAX_UPLOAD_FILE_SIZE, + }; } diff --git a/src/messaging/messaging.service.ts b/src/messaging/messaging.service.ts index 5e7384f9..82b56d0c 100644 --- a/src/messaging/messaging.service.ts +++ b/src/messaging/messaging.service.ts @@ -9,8 +9,8 @@ import { TracingService } from './tracing/tracing.service'; */ @Injectable() export class MessagingService { - private readonly logger = new Logger(MessagingService.name); - constructor( + private readonly logger = new Logger(MessagingService.name); + constructor( @InjectQueue(QUEUE_NAMES.MESSAGE_QUEUE) private readonly messageQueue: Queue, private readonly tracingService: TracingService, diff --git a/src/middleware/throttle/throttle.middleware.ts b/src/middleware/throttle/throttle.middleware.ts index ea75ebd1..99ea0a9e 100644 --- a/src/middleware/throttle/throttle.middleware.ts +++ b/src/middleware/throttle/throttle.middleware.ts @@ -8,7 +8,8 @@ const WINDOW_MS = 60_000; @Injectable() export class ThrottleMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction): void { - const key = (req.headers['x-forwarded-for'] as string)?.split(',')[0].trim() ?? req.ip ?? 'unknown'; + const key = + (req.headers['x-forwarded-for'] as string)?.split(',')[0].trim() ?? req.ip ?? 'unknown'; const now = Date.now(); const entry = hits.get(key); if (!entry || now > entry.reset) { @@ -22,4 +23,4 @@ export class ThrottleMiddleware implements NestMiddleware { entry.count++; next(); } -} \ No newline at end of file +} diff --git a/src/migrations/entities/migration.entity.ts b/src/migrations/entities/migration.entity.ts index 64408305..2e8851cf 100644 --- a/src/migrations/entities/migration.entity.ts +++ b/src/migrations/entities/migration.entity.ts @@ -8,10 +8,10 @@ import { } from 'typeorm'; export enum MigrationStatus { - PENDING = 'pending', - COMPLETED = 'completed', - FAILED = 'failed', - ROLLED_BACK = 'rolled_back' + PENDING = 'pending', + COMPLETED = 'completed', + FAILED = 'failed', + ROLLED_BACK = 'rolled_back', } /** diff --git a/src/moderation/analytics/moderation-analytics.service.ts b/src/moderation/analytics/moderation-analytics.service.ts index f632952d..89ddc777 100644 --- a/src/moderation/analytics/moderation-analytics.service.ts +++ b/src/moderation/analytics/moderation-analytics.service.ts @@ -8,7 +8,7 @@ import { ModerationEvent } from './moderation-event.entity'; */ @Injectable() export class ModerationAnalyticsService { - constructor( + constructor( @InjectRepository(ModerationEvent) private readonly eventRepo: Repository, ) {} diff --git a/src/moderation/manual/manual-review.service.ts b/src/moderation/manual/manual-review.service.ts index ebfa9df0..8c0c3324 100644 --- a/src/moderation/manual/manual-review.service.ts +++ b/src/moderation/manual/manual-review.service.ts @@ -8,7 +8,7 @@ import { ReviewItem } from './review-item.entity'; */ @Injectable() export class ManualReviewService { - constructor( + constructor( @InjectRepository(ReviewItem) private readonly reviewRepo: Repository, ) {} diff --git a/src/monitoring/cloud/aws-cost-collector.service.ts b/src/monitoring/cloud/aws-cost-collector.service.ts index 0527d955..b2b15325 100644 --- a/src/monitoring/cloud/aws-cost-collector.service.ts +++ b/src/monitoring/cloud/aws-cost-collector.service.ts @@ -17,7 +17,10 @@ export class AwsCostCollectorService { // Try to lazily load the AWS Cost Explorer client try { // eslint-disable-next-line @typescript-eslint/no-var-requires - const { CostExplorerClient, GetCostAndUsageCommand } = require('@aws-sdk/client-cost-explorer'); + const { + CostExplorerClient, + GetCostAndUsageCommand, + } = require('@aws-sdk/client-cost-explorer'); const region = process.env.AWS_REGION || 'us-east-1'; this.client = new CostExplorerClient({ region }); this.enabled = true; diff --git a/src/monitoring/cost-tracking.service.ts b/src/monitoring/cost-tracking.service.ts index 93584ec7..fee11f91 100644 --- a/src/monitoring/cost-tracking.service.ts +++ b/src/monitoring/cost-tracking.service.ts @@ -38,7 +38,11 @@ export class CostTrackingService { // eslint-disable-next-line @typescript-eslint/no-var-requires const prom = require('prom-client'); const Gauge = prom.Gauge; - new Gauge({ name: gaugeName, help: 'Hourly infrastructure cost in USD', registers: [registry] }).set(latest); + new Gauge({ + name: gaugeName, + help: 'Hourly infrastructure cost in USD', + registers: [registry], + }).set(latest); } } catch (err) { this.logger.error('Failed to record cost metric', err as Error); diff --git a/src/notifications/dto/notification.dto.ts b/src/notifications/dto/notification.dto.ts index d9a9a3b9..4513f694 100644 --- a/src/notifications/dto/notification.dto.ts +++ b/src/notifications/dto/notification.dto.ts @@ -1,69 +1,77 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; -import { IsEnum, IsNotEmpty, IsOptional, IsString, IsUUID, IsBoolean, IsObject, } from 'class-validator'; +import { + IsEnum, + IsNotEmpty, + IsOptional, + IsString, + IsUUID, + IsBoolean, + IsObject, +} from 'class-validator'; import { NotificationType, NotificationPriority } from '../entities/notification.entity'; /** * Defines the create Notification payload. */ export class CreateNotificationDto { - @ApiProperty({ description: 'The ID of the user the notification is for' }) - @IsUUID() - @IsNotEmpty() - userId: string; - @ApiProperty({ description: 'The title of the notification' }) - @IsString() - @IsNotEmpty() - title: string; - @ApiProperty({ description: 'The content of the notification' }) - @IsString() - @IsNotEmpty() - content: string; - @ApiProperty({ enum: NotificationType, description: 'The type of the notification' }) - @IsEnum(NotificationType) - @IsOptional() - type?: NotificationType; - @ApiProperty({ enum: NotificationPriority, description: 'The priority of the notification' }) - @IsEnum(NotificationPriority) - @IsOptional() - priority?: NotificationPriority; - @ApiPropertyOptional({ description: 'Additional metadata for the notification' }) - @IsObject() - @IsOptional() - metadata?: Record; + @ApiProperty({ description: 'The ID of the user the notification is for' }) + @IsUUID() + @IsNotEmpty() + userId: string; + @ApiProperty({ description: 'The title of the notification' }) + @IsString() + @IsNotEmpty() + title: string; + @ApiProperty({ description: 'The content of the notification' }) + @IsString() + @IsNotEmpty() + content: string; + @ApiProperty({ enum: NotificationType, description: 'The type of the notification' }) + @IsEnum(NotificationType) + @IsOptional() + type?: NotificationType; + @ApiProperty({ enum: NotificationPriority, description: 'The priority of the notification' }) + @IsEnum(NotificationPriority) + @IsOptional() + priority?: NotificationPriority; + @ApiPropertyOptional({ description: 'Additional metadata for the notification' }) + @IsObject() + @IsOptional() + metadata?: Record; } /** * Defines the update Notification payload. */ export class UpdateNotificationDto { - @ApiPropertyOptional({ description: 'Mark as read or unread' }) - @IsBoolean() - @IsOptional() - isRead?: boolean; + @ApiPropertyOptional({ description: 'Mark as read or unread' }) + @IsBoolean() + @IsOptional() + isRead?: boolean; } /** * Defines the notification Response payload. */ export class NotificationResponseDto { - @ApiProperty() - id: string; - @ApiProperty() - userId: string; - @ApiProperty() - title: string; - @ApiProperty() - content: string; - @ApiProperty({ enum: NotificationType }) - type: NotificationType; - @ApiProperty({ enum: NotificationPriority }) - priority: NotificationPriority; - @ApiProperty() - isRead: boolean; - @ApiPropertyOptional() - readAt?: Date; - @ApiProperty() - createdAt: Date; + @ApiProperty() + id: string; + @ApiProperty() + userId: string; + @ApiProperty() + title: string; + @ApiProperty() + content: string; + @ApiProperty({ enum: NotificationType }) + type: NotificationType; + @ApiProperty({ enum: NotificationPriority }) + priority: NotificationPriority; + @ApiProperty() + isRead: boolean; + @ApiPropertyOptional() + readAt?: Date; + @ApiProperty() + createdAt: Date; } export class BulkOperationDto { diff --git a/src/notifications/entities/notification.entity.ts b/src/notifications/entities/notification.entity.ts index 60d9a420..d4870620 100644 --- a/src/notifications/entities/notification.entity.ts +++ b/src/notifications/entities/notification.entity.ts @@ -11,16 +11,16 @@ import { } from 'typeorm'; import { User } from '../../users/entities/user.entity'; export enum NotificationType { - EMAIL = 'email', - PUSH = 'push', - IN_APP = 'in_app', - SMS = 'sms' + EMAIL = 'email', + PUSH = 'push', + IN_APP = 'in_app', + SMS = 'sms', } export enum NotificationPriority { - LOW = 'low', - MEDIUM = 'medium', - HIGH = 'high', - URGENT = 'urgent' + LOW = 'low', + MEDIUM = 'medium', + HIGH = 'high', + URGENT = 'urgent', } export enum NotificationStatus { @@ -101,4 +101,3 @@ export class Notification { @DeleteDateColumn() deletedAt?: Date; } - diff --git a/src/notifications/notifications.queue.ts b/src/notifications/notifications.queue.ts index 56a084da..3df7ebfe 100644 --- a/src/notifications/notifications.queue.ts +++ b/src/notifications/notifications.queue.ts @@ -1,6 +1,11 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { SQSClient, SendMessageCommand, ReceiveMessageCommand, DeleteMessageCommand } from '@aws-sdk/client-sqs'; +import { + SQSClient, + SendMessageCommand, + ReceiveMessageCommand, + DeleteMessageCommand, +} from '@aws-sdk/client-sqs'; import { SNSClient, PublishCommand } from '@aws-sdk/client-sns'; import { NotificationStatus } from './entities/notification.entity'; import { InjectRepository } from '@nestjs/typeorm'; @@ -50,7 +55,7 @@ export class NotificationsQueueService { await this.snsClient.send(command); this.logger.log(`Notification ${notification.id} published to SNS topic`); - + await this.notificationRepository.update(notification.id, { status: NotificationStatus.SENT, lastAttemptAt: new Date(), @@ -75,11 +80,13 @@ export class NotificationsQueueService { failureReason: `Max attempts reached. Last error: ${reason}`, lastAttemptAt: new Date(), }); - this.logger.error(`Notification ${notification.id} permanently failed after ${maxAttempts} attempts`); + this.logger.error( + `Notification ${notification.id} permanently failed after ${maxAttempts} attempts`, + ); } else { // Calculate backoff: 2^attempt * 1000ms const delaySeconds = Math.pow(2, nextAttempt); - + await this.notificationRepository.update(notification.id, { status: NotificationStatus.RETRYING, failureReason: reason, @@ -89,8 +96,10 @@ export class NotificationsQueueService { // In a real SQS setup, we would send this back to the queue with a delay await this.enqueueWithDelay(notification, delaySeconds); - - this.logger.warn(`Notification ${notification.id} scheduled for retry in ${delaySeconds}s (Attempt ${nextAttempt})`); + + this.logger.warn( + `Notification ${notification.id} scheduled for retry in ${delaySeconds}s (Attempt ${nextAttempt})`, + ); } } diff --git a/src/notifications/preferences/preferences.service.ts b/src/notifications/preferences/preferences.service.ts index 40f34c91..140502a8 100644 --- a/src/notifications/preferences/preferences.service.ts +++ b/src/notifications/preferences/preferences.service.ts @@ -8,43 +8,53 @@ import { NotificationPreferences } from '../entities/notification-preferences.en */ @Injectable() export class PreferencesService { - private readonly logger = new Logger(PreferencesService.name); - constructor( + private readonly logger = new Logger(PreferencesService.name); + constructor( @InjectRepository(NotificationPreferences) - private readonly preferencesRepository: Repository) { } - /** - * Get user preferences or create default if not exists - */ - async getPreferences(userId: string): Promise { - let preferences = await this.preferencesRepository.findOne({ where: { userId } }); - if (!preferences) { - this.logger.debug(`Creating default preferences for user ${userId}`); - preferences = this.preferencesRepository.create({ userId }); - preferences = await this.preferencesRepository.save(preferences); - } - return preferences; - } - /** - * Update user preferences - */ - async updatePreferences(userId: string, updateDto: Partial): Promise { - const preferences = await this.getPreferences(userId); - Object.assign(preferences, updateDto); - return this.preferencesRepository.save(preferences); - } - /** - * Check if a specific channel is enabled for a user - */ - async isChannelEnabled(userId: string, channel: 'emailEnabled' | 'pushEnabled' | 'inAppEnabled' | 'smsEnabled'): Promise { - const preferences = await this.getPreferences(userId); - return !!preferences[channel]; - } - /** - * Toggle a specific channel for a user - */ - async toggleChannel(userId: string, channel: 'emailEnabled' | 'pushEnabled' | 'inAppEnabled' | 'smsEnabled'): Promise { - const preferences = await this.getPreferences(userId); - preferences[channel] = !preferences[channel]; - await this.preferencesRepository.save(preferences); + private readonly preferencesRepository: Repository, + ) {} + /** + * Get user preferences or create default if not exists + */ + async getPreferences(userId: string): Promise { + let preferences = await this.preferencesRepository.findOne({ where: { userId } }); + if (!preferences) { + this.logger.debug(`Creating default preferences for user ${userId}`); + preferences = this.preferencesRepository.create({ userId }); + preferences = await this.preferencesRepository.save(preferences); } + return preferences; + } + /** + * Update user preferences + */ + async updatePreferences( + userId: string, + updateDto: Partial, + ): Promise { + const preferences = await this.getPreferences(userId); + Object.assign(preferences, updateDto); + return this.preferencesRepository.save(preferences); + } + /** + * Check if a specific channel is enabled for a user + */ + async isChannelEnabled( + userId: string, + channel: 'emailEnabled' | 'pushEnabled' | 'inAppEnabled' | 'smsEnabled', + ): Promise { + const preferences = await this.getPreferences(userId); + return !!preferences[channel]; + } + /** + * Toggle a specific channel for a user + */ + async toggleChannel( + userId: string, + channel: 'emailEnabled' | 'pushEnabled' | 'inAppEnabled' | 'smsEnabled', + ): Promise { + const preferences = await this.getPreferences(userId); + preferences[channel] = !preferences[channel]; + await this.preferencesRepository.save(preferences); + } } diff --git a/src/observability/interfaces/observability.interfaces.ts b/src/observability/interfaces/observability.interfaces.ts index cee25634..b61bb0f9 100644 --- a/src/observability/interfaces/observability.interfaces.ts +++ b/src/observability/interfaces/observability.interfaces.ts @@ -27,11 +27,11 @@ export interface IErrorDetails { statusCode?: number; } export enum LogLevel { - DEBUG = 'debug', - INFO = 'info', - WARN = 'warn', - ERROR = 'error', - FATAL = 'fatal' + DEBUG = 'debug', + INFO = 'info', + WARN = 'warn', + ERROR = 'error', + FATAL = 'fatal', } export interface IMetricData { @@ -42,10 +42,10 @@ export interface IMetricData { timestamp: Date; } export enum MetricType { - COUNTER = 'counter', - GAUGE = 'gauge', - HISTOGRAM = 'histogram', - SUMMARY = 'summary' + COUNTER = 'counter', + GAUGE = 'gauge', + HISTOGRAM = 'histogram', + SUMMARY = 'summary', } export interface ITraceSpan { @@ -61,9 +61,9 @@ export interface ITraceSpan { events: ISpanEvent[]; } export enum SpanStatus { - OK = 'ok', - ERROR = 'error', - UNSET = 'unset' + OK = 'ok', + ERROR = 'error', + UNSET = 'unset', } export interface ISpanEvent { diff --git a/src/onboarding/dto/onboarding-step.dto.ts b/src/onboarding/dto/onboarding-step.dto.ts index 6b1ddd85..98e363fb 100644 --- a/src/onboarding/dto/onboarding-step.dto.ts +++ b/src/onboarding/dto/onboarding-step.dto.ts @@ -1,4 +1,13 @@ -import { IsString, IsOptional, IsNumber, IsEnum, IsBoolean, IsObject, Min, Max } from 'class-validator'; +import { + IsString, + IsOptional, + IsNumber, + IsEnum, + IsBoolean, + IsObject, + Min, + Max, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { OnboardingStepType, OnboardingStepStatus } from '../entities/onboarding-step.entity'; diff --git a/src/orchestration/discovery/service-boundaries.ts b/src/orchestration/discovery/service-boundaries.ts index 769ec94a..2f1dffa7 100644 --- a/src/orchestration/discovery/service-boundaries.ts +++ b/src/orchestration/discovery/service-boundaries.ts @@ -104,8 +104,8 @@ export function findBoundaryByRoute( return ( methodMatches && - boundary.routePrefixes.some((prefix) => - normalizedPath === prefix || normalizedPath.startsWith(`${prefix}/`), + boundary.routePrefixes.some( + (prefix) => normalizedPath === prefix || normalizedPath.startsWith(`${prefix}/`), ) ); }); diff --git a/src/payments/dto/create-payment.dto.ts b/src/payments/dto/create-payment.dto.ts index 9ebff954..18d194f4 100644 --- a/src/payments/dto/create-payment.dto.ts +++ b/src/payments/dto/create-payment.dto.ts @@ -1,26 +1,35 @@ -import { IsString, IsNumber, IsOptional, IsEnum, IsPositive, IsUUID, Min, Max, } from 'class-validator'; +import { + IsString, + IsNumber, + IsOptional, + IsEnum, + IsPositive, + IsUUID, + Min, + Max, +} from 'class-validator'; import { PaymentMethod } from '../entities/payment.entity'; /** * Defines the create Payment payload. */ export class CreatePaymentDto { - @IsUUID('4', { message: 'courseId must be a valid UUID v4' }) - courseId: string; - @IsNumber({}, { message: 'Amount must be a numeric value' }) - @IsPositive({ message: 'Amount must be strictly positive' }) - @Min(0.5, { message: 'Minimum checkout amount is 0.5' }) - @Max(1000000, { message: 'Amount exceeds maximum limit' }) - amount: number; - @IsString({ message: 'Currency must be a string code' }) - @IsOptional() - currency?: string = 'USD'; - @IsEnum(PaymentMethod, { message: 'Invalid payment method selected' }) - @IsOptional() - method?: PaymentMethod; - @IsString() - @IsOptional() - provider?: string = 'stripe'; - @IsOptional() - metadata?: Record; + @IsUUID('4', { message: 'courseId must be a valid UUID v4' }) + courseId: string; + @IsNumber({}, { message: 'Amount must be a numeric value' }) + @IsPositive({ message: 'Amount must be strictly positive' }) + @Min(0.5, { message: 'Minimum checkout amount is 0.5' }) + @Max(1000000, { message: 'Amount exceeds maximum limit' }) + amount: number; + @IsString({ message: 'Currency must be a string code' }) + @IsOptional() + currency?: string = 'USD'; + @IsEnum(PaymentMethod, { message: 'Invalid payment method selected' }) + @IsOptional() + method?: PaymentMethod; + @IsString() + @IsOptional() + provider?: string = 'stripe'; + @IsOptional() + metadata?: Record; } diff --git a/src/payments/dto/create-subscription.dto.ts b/src/payments/dto/create-subscription.dto.ts index 431a6709..b872306c 100644 --- a/src/payments/dto/create-subscription.dto.ts +++ b/src/payments/dto/create-subscription.dto.ts @@ -6,21 +6,21 @@ import { SubscriptionInterval } from '../entities/subscription.entity'; * Defines the create Subscription payload. */ export class CreateSubscriptionDto { - @IsString() - @IsNotEmpty() - @IsUUID() - courseId: string; - @IsEnum(SubscriptionInterval) - @IsNotEmpty() - interval: SubscriptionInterval; - @IsEnum(PaymentMethod) - @IsNotEmpty() - provider: PaymentMethod; - @IsString() - @IsNotEmpty() - @IsUUID() - priceId: string; - @IsOptional() - @IsString() - metadata?: Record; + @IsString() + @IsNotEmpty() + @IsUUID() + courseId: string; + @IsEnum(SubscriptionInterval) + @IsNotEmpty() + interval: SubscriptionInterval; + @IsEnum(PaymentMethod) + @IsNotEmpty() + provider: PaymentMethod; + @IsString() + @IsNotEmpty() + @IsUUID() + priceId: string; + @IsOptional() + @IsString() + metadata?: Record; } diff --git a/src/payments/dto/refund.dto.ts b/src/payments/dto/refund.dto.ts index 01c705ca..ac03afe0 100644 --- a/src/payments/dto/refund.dto.ts +++ b/src/payments/dto/refund.dto.ts @@ -1,28 +1,37 @@ -import { IsString, IsNumber, IsOptional, IsDateString, IsEnum, IsNotEmpty, IsUUID, IsDate, } from 'class-validator'; +import { + IsString, + IsNumber, + IsOptional, + IsDateString, + IsEnum, + IsNotEmpty, + IsUUID, + IsDate, +} from 'class-validator'; import { RefundStatus } from '../entities/refund.entity'; /** * Defines the refund payload. */ export class RefundDto { - @IsString() - @IsNotEmpty() - @IsUUID() - paymentId: string; - @IsString() - @IsNotEmpty() - reason: string; - @IsNumber() - @IsOptional() - amount?: number; - @IsString() - @IsOptional() - refundMethod?: string; - @IsOptional() - @IsDateString() - @IsDate() - refundDate?: Date; - @IsEnum(RefundStatus) - @IsOptional() - status?: RefundStatus; + @IsString() + @IsNotEmpty() + @IsUUID() + paymentId: string; + @IsString() + @IsNotEmpty() + reason: string; + @IsNumber() + @IsOptional() + amount?: number; + @IsString() + @IsOptional() + refundMethod?: string; + @IsOptional() + @IsDateString() + @IsDate() + refundDate?: Date; + @IsEnum(RefundStatus) + @IsOptional() + status?: RefundStatus; } diff --git a/src/payments/entities/invoice.entity.ts b/src/payments/entities/invoice.entity.ts index c7750291..6c062bc6 100644 --- a/src/payments/entities/invoice.entity.ts +++ b/src/payments/entities/invoice.entity.ts @@ -12,17 +12,17 @@ import { import { Payment } from './payment.entity'; import { User } from '../../users/entities/user.entity'; export enum InvoiceStatus { - DRAFT = 'draft', - SENT = 'sent', - PAID = 'paid', - OVERDUE = 'overdue', - CANCELLED = 'cancelled' + DRAFT = 'draft', + SENT = 'sent', + PAID = 'paid', + OVERDUE = 'overdue', + CANCELLED = 'cancelled', } interface InvoiceItem { - description: string; - amount: number; - quantity: number; - taxRate?: number; + description: string; + amount: number; + quantity: number; + taxRate?: number; } /** diff --git a/src/payments/entities/payment.entity.ts b/src/payments/entities/payment.entity.ts index 535d0f31..c17b46a1 100644 --- a/src/payments/entities/payment.entity.ts +++ b/src/payments/entities/payment.entity.ts @@ -12,19 +12,19 @@ import { import { User } from '../../users/entities/user.entity'; import { Course } from '../../courses/entities/course.entity'; export enum PaymentStatus { - PENDING = 'pending', - PROCESSING = 'processing', - COMPLETED = 'completed', - FAILED = 'failed', - REFUNDED = 'refunded', - CANCELLED = 'cancelled' + PENDING = 'pending', + PROCESSING = 'processing', + COMPLETED = 'completed', + FAILED = 'failed', + REFUNDED = 'refunded', + CANCELLED = 'cancelled', } export enum PaymentMethod { - CREDIT_CARD = 'credit_card', - BANK_TRANSFER = 'bank_transfer', - PAYPAL = 'paypal', - CRYPTO = 'crypto', - WALLET = 'wallet' + CREDIT_CARD = 'credit_card', + BANK_TRANSFER = 'bank_transfer', + PAYPAL = 'paypal', + CRYPTO = 'crypto', + WALLET = 'wallet', } /** diff --git a/src/payments/entities/refund.entity.ts b/src/payments/entities/refund.entity.ts index c6e8b63b..02db529b 100644 --- a/src/payments/entities/refund.entity.ts +++ b/src/payments/entities/refund.entity.ts @@ -11,11 +11,11 @@ import { } from 'typeorm'; import { Payment } from './payment.entity'; export enum RefundStatus { - PENDING = 'pending', - APPROVED = 'approved', - REJECTED = 'rejected', - PROCESSED = 'processed', - FAILED = 'failed' + PENDING = 'pending', + APPROVED = 'approved', + REJECTED = 'rejected', + PROCESSED = 'processed', + FAILED = 'failed', } /** diff --git a/src/payments/entities/subscription.entity.ts b/src/payments/entities/subscription.entity.ts index e2d2748f..02db0012 100644 --- a/src/payments/entities/subscription.entity.ts +++ b/src/payments/entities/subscription.entity.ts @@ -11,18 +11,18 @@ import { } from 'typeorm'; import { User } from '../../users/entities/user.entity'; export enum SubscriptionStatus { - ACTIVE = 'active', - CANCELLED = 'cancelled', - PAST_DUE = 'past_due', - UNPAID = 'unpaid', - TRIALING = 'trialing', - INCOMPLETE = 'incomplete' + ACTIVE = 'active', + CANCELLED = 'cancelled', + PAST_DUE = 'past_due', + UNPAID = 'unpaid', + TRIALING = 'trialing', + INCOMPLETE = 'incomplete', } export enum SubscriptionInterval { - MONTHLY = 'monthly', - YEARLY = 'yearly', - QUARTERLY = 'quarterly', - WEEKLY = 'weekly' + MONTHLY = 'monthly', + YEARLY = 'yearly', + QUARTERLY = 'quarterly', + WEEKLY = 'weekly', } /** diff --git a/src/payments/subscriptions/subscription-job.processor.ts b/src/payments/subscriptions/subscription-job.processor.ts index 067a0d34..cfd09f6e 100644 --- a/src/payments/subscriptions/subscription-job.processor.ts +++ b/src/payments/subscriptions/subscription-job.processor.ts @@ -4,11 +4,11 @@ import { Logger } from '@nestjs/common'; import { QUEUE_NAMES, JOB_NAMES } from '../../common/constants/queue.constants'; @Processor(QUEUE_NAMES.SUBSCRIPTIONS) export class SubscriptionJobProcessor { - private readonly logger = new Logger(SubscriptionJobProcessor.name); - @Process(JOB_NAMES.PROCESS_SUBSCRIPTION) - async handleSubscription(job: Job): Promise { - // Process subscription job - this.logger.log('Processing subscription job:', job.data); - return { success: true }; - } + private readonly logger = new Logger(SubscriptionJobProcessor.name); + @Process(JOB_NAMES.PROCESS_SUBSCRIPTION) + async handleSubscription(job: Job): Promise { + // Process subscription job + this.logger.log('Processing subscription job:', job.data); + return { success: true }; + } } diff --git a/src/payments/subscriptions/subscriptions.service.ts b/src/payments/subscriptions/subscriptions.service.ts index 38fccf67..c9fd5862 100644 --- a/src/payments/subscriptions/subscriptions.service.ts +++ b/src/payments/subscriptions/subscriptions.service.ts @@ -5,9 +5,9 @@ import { Injectable } from '@nestjs/common'; */ @Injectable() export class SubscriptionsService { - // Placeholder implementation - async processSubscription(): Promise { - // Logic to process subscription payments - return { success: true }; - } + // Placeholder implementation + async processSubscription(): Promise { + // Logic to process subscription payments + return { success: true }; + } } diff --git a/src/payments/webhooks/dto/webhook-retry.dto.ts b/src/payments/webhooks/dto/webhook-retry.dto.ts index f51df1d1..c16aa1c7 100644 --- a/src/payments/webhooks/dto/webhook-retry.dto.ts +++ b/src/payments/webhooks/dto/webhook-retry.dto.ts @@ -6,62 +6,62 @@ import { WebhookStatus, WebhookProvider } from '../entities/webhook-retry.entity * Defines the webhook Retry payload. */ export class WebhookRetryDto { - @ApiProperty({ description: 'Webhook retry ID' }) - @IsUUID() - id: string; - @ApiProperty({ enum: WebhookProvider, description: 'Payment provider' }) - @IsEnum(WebhookProvider) - provider: WebhookProvider; - @ApiProperty({ description: 'External event ID from provider' }) - externalEventId: string; - @ApiProperty({ enum: WebhookStatus, description: 'Current webhook status' }) - @IsEnum(WebhookStatus) - status: WebhookStatus; - @ApiProperty({ description: 'Number of retry attempts' }) - @IsInt() - retryCount: number; - @ApiProperty({ description: 'Maximum number of retries' }) - @IsInt() - maxRetries: number; - @ApiPropertyOptional({ description: 'Timestamp of next retry' }) - @IsOptional() - @IsDateString() - nextRetryTime?: Date; - @ApiPropertyOptional({ description: 'Last error message' }) - @IsOptional() - lastError?: string; - @ApiPropertyOptional({ description: 'Error details (stack trace, etc.)' }) - @IsOptional() - @IsObject() - errorDetails?: Record; - @ApiProperty({ description: 'Webhook creation timestamp' }) - @IsDateString() - createdAt: Date; - @ApiProperty({ description: 'Webhook last update timestamp' }) - @IsDateString() - updatedAt: Date; - @ApiPropertyOptional({ description: 'Webhook processing completion timestamp' }) - @IsOptional() - @IsDateString() - processedAt?: Date; + @ApiProperty({ description: 'Webhook retry ID' }) + @IsUUID() + id: string; + @ApiProperty({ enum: WebhookProvider, description: 'Payment provider' }) + @IsEnum(WebhookProvider) + provider: WebhookProvider; + @ApiProperty({ description: 'External event ID from provider' }) + externalEventId: string; + @ApiProperty({ enum: WebhookStatus, description: 'Current webhook status' }) + @IsEnum(WebhookStatus) + status: WebhookStatus; + @ApiProperty({ description: 'Number of retry attempts' }) + @IsInt() + retryCount: number; + @ApiProperty({ description: 'Maximum number of retries' }) + @IsInt() + maxRetries: number; + @ApiPropertyOptional({ description: 'Timestamp of next retry' }) + @IsOptional() + @IsDateString() + nextRetryTime?: Date; + @ApiPropertyOptional({ description: 'Last error message' }) + @IsOptional() + lastError?: string; + @ApiPropertyOptional({ description: 'Error details (stack trace, etc.)' }) + @IsOptional() + @IsObject() + errorDetails?: Record; + @ApiProperty({ description: 'Webhook creation timestamp' }) + @IsDateString() + createdAt: Date; + @ApiProperty({ description: 'Webhook last update timestamp' }) + @IsDateString() + updatedAt: Date; + @ApiPropertyOptional({ description: 'Webhook processing completion timestamp' }) + @IsOptional() + @IsDateString() + processedAt?: Date; } /** * Defines the webhook Retry Response payload. */ export class WebhookRetryResponseDto { - @ApiProperty({ description: 'Success status' }) - success: boolean; - @ApiPropertyOptional({ description: 'Webhook retry ID' }) - webhookRetryId?: string; - @ApiPropertyOptional({ description: 'Error message if failed' }) - error?: string; + @ApiProperty({ description: 'Success status' }) + success: boolean; + @ApiPropertyOptional({ description: 'Webhook retry ID' }) + webhookRetryId?: string; + @ApiPropertyOptional({ description: 'Error message if failed' }) + error?: string; } /** * Defines the dead Letter Webhook payload. */ export class DeadLetterWebhookDto extends WebhookRetryDto { - @ApiProperty({ description: 'Indicates this is a dead letter webhook' }) - isDead: boolean = true; + @ApiProperty({ description: 'Indicates this is a dead letter webhook' }) + isDead: boolean = true; } diff --git a/src/payments/webhooks/entities/webhook-retry.entity.ts b/src/payments/webhooks/entities/webhook-retry.entity.ts index c07c1ccb..d43ef6d0 100644 --- a/src/payments/webhooks/entities/webhook-retry.entity.ts +++ b/src/payments/webhooks/entities/webhook-retry.entity.ts @@ -9,15 +9,15 @@ import { } from 'typeorm'; export enum WebhookStatus { - PENDING = 'pending', - PROCESSING = 'processing', - SUCCEEDED = 'succeeded', - FAILED = 'failed', - DEAD_LETTER = 'dead_letter' + PENDING = 'pending', + PROCESSING = 'processing', + SUCCEEDED = 'succeeded', + FAILED = 'failed', + DEAD_LETTER = 'dead_letter', } export enum WebhookProvider { - STRIPE = 'stripe', - PAYPAL = 'paypal' + STRIPE = 'stripe', + PAYPAL = 'paypal', } /** diff --git a/src/payments/webhooks/migration-helper.ts b/src/payments/webhooks/migration-helper.ts index 909006cd..2c66f01a 100644 --- a/src/payments/webhooks/migration-helper.ts +++ b/src/payments/webhooks/migration-helper.ts @@ -130,8 +130,8 @@ export class CreateWebhookRetriesTable1681234567890 implements MigrationInterfac `; // Database cleanup and maintenance queries export const maintenanceQueries = { - // Get dead letter queue stats - getDeadLetterStats: ` + // Get dead letter queue stats + getDeadLetterStats: ` SELECT COUNT(*) as total_dead_letters, COUNT(DISTINCT provider) as providers, @@ -140,8 +140,8 @@ export const maintenanceQueries = { FROM webhook_retries WHERE status = 'dead_letter'; `, - // Get retry statistics - getRetryStats: ` + // Get retry statistics + getRetryStats: ` SELECT status, COUNT(*) as count, @@ -151,8 +151,8 @@ export const maintenanceQueries = { FROM webhook_retries GROUP BY status; `, - // Get webhooks pending processing - getPending: ` + // Get webhooks pending processing + getPending: ` SELECT id, provider, "externalEventId", "nextRetryTime", "retryCount" FROM webhook_retries WHERE status = 'pending' @@ -160,14 +160,14 @@ export const maintenanceQueries = { ORDER BY "nextRetryTime" ASC LIMIT 100; `, - // Archive old succeeded webhooks (cleanup) - archiveSuccessful: ` + // Archive old succeeded webhooks (cleanup) + archiveSuccessful: ` DELETE FROM webhook_retries WHERE status = 'succeeded' AND "processedAt" < NOW() - INTERVAL '30 days'; `, - // Archive old dead letter webhooks (after review period) - archiveDeadLetter: ` + // Archive old dead letter webhooks (after review period) + archiveDeadLetter: ` DELETE FROM webhook_retries WHERE status = 'dead_letter' AND "createdAt" < NOW() - INTERVAL '90 days'; diff --git a/src/queues/dto/queue.dto.ts b/src/queues/dto/queue.dto.ts index 968579e7..2aac426c 100644 --- a/src/queues/dto/queue.dto.ts +++ b/src/queues/dto/queue.dto.ts @@ -1,193 +1,206 @@ -import { IsString, IsOptional, IsObject, IsNumber, IsDateString, IsEnum, IsArray, IsBoolean, Min, Max, ValidateNested, IsNotEmpty, } from 'class-validator'; +import { + IsString, + IsOptional, + IsObject, + IsNumber, + IsDateString, + IsEnum, + IsArray, + IsBoolean, + Min, + Max, + ValidateNested, + IsNotEmpty, +} from 'class-validator'; import { Type } from 'class-transformer'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { JobPriority } from '../enums/job-priority.enum'; // ── Sub-DTOs ───────────────────────────────────────────────────────────────── export class BackoffOptionsDto { - @ApiProperty({ enum: ['fixed', 'exponential'] }) - @IsEnum(['fixed', 'exponential']) - type: 'fixed' | 'exponential'; - @ApiProperty({ minimum: 0 }) - @IsNumber() - @Min(0) - delay: number; + @ApiProperty({ enum: ['fixed', 'exponential'] }) + @IsEnum(['fixed', 'exponential']) + type: 'fixed' | 'exponential'; + @ApiProperty({ minimum: 0 }) + @IsNumber() + @Min(0) + delay: number; } export class JobOptionsDto { - @ApiPropertyOptional({ enum: JobPriority }) - @IsOptional() - @IsEnum(JobPriority) - priority?: JobPriority; - @ApiPropertyOptional({ minimum: 1, maximum: 20 }) - @IsOptional() - @IsNumber() - @Min(1) - @Max(20) - attempts?: number; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => BackoffOptionsDto) - backoff?: BackoffOptionsDto; - @ApiPropertyOptional({ minimum: 0 }) - @IsOptional() - @IsNumber() - @Min(0) - delay?: number; - @ApiPropertyOptional({ minimum: 1000 }) - @IsOptional() - @IsNumber() - @Min(1000) - timeout?: number; - @ApiPropertyOptional() - @IsOptional() - @IsBoolean() - removeOnComplete?: boolean; - @ApiPropertyOptional() - @IsOptional() - @IsBoolean() - removeOnFail?: boolean; + @ApiPropertyOptional({ enum: JobPriority }) + @IsOptional() + @IsEnum(JobPriority) + priority?: JobPriority; + @ApiPropertyOptional({ minimum: 1, maximum: 20 }) + @IsOptional() + @IsNumber() + @Min(1) + @Max(20) + attempts?: number; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => BackoffOptionsDto) + backoff?: BackoffOptionsDto; + @ApiPropertyOptional({ minimum: 0 }) + @IsOptional() + @IsNumber() + @Min(0) + delay?: number; + @ApiPropertyOptional({ minimum: 1000 }) + @IsOptional() + @IsNumber() + @Min(1000) + timeout?: number; + @ApiPropertyOptional() + @IsOptional() + @IsBoolean() + removeOnComplete?: boolean; + @ApiPropertyOptional() + @IsOptional() + @IsBoolean() + removeOnFail?: boolean; } export class PriorityFactorsDto { - @ApiPropertyOptional({ enum: ['premium', 'pro', 'basic', 'free'] }) - @IsOptional() - @IsEnum(['premium', 'pro', 'basic', 'free']) - userTier?: 'premium' | 'pro' | 'basic' | 'free'; - @ApiPropertyOptional({ enum: ['critical', 'high', 'medium', 'low'] }) - @IsOptional() - @IsEnum(['critical', 'high', 'medium', 'low']) - urgency?: 'critical' | 'high' | 'medium' | 'low'; + @ApiPropertyOptional({ enum: ['premium', 'pro', 'basic', 'free'] }) + @IsOptional() + @IsEnum(['premium', 'pro', 'basic', 'free']) + userTier?: 'premium' | 'pro' | 'basic' | 'free'; + @ApiPropertyOptional({ enum: ['critical', 'high', 'medium', 'low'] }) + @IsOptional() + @IsEnum(['critical', 'high', 'medium', 'low']) + urgency?: 'critical' | 'high' | 'medium' | 'low'; } // ── Request DTOs ────────────────────────────────────────────────────────────── export class AddJobDto { - @ApiProperty({ description: 'Job type / processor name' }) - @IsString() - @IsNotEmpty() - name: string; - @ApiProperty({ description: 'Arbitrary job payload' }) - @IsObject() - data: Record; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => JobOptionsDto) - options?: JobOptionsDto; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => PriorityFactorsDto) - priorityFactors?: PriorityFactorsDto; + @ApiProperty({ description: 'Job type / processor name' }) + @IsString() + @IsNotEmpty() + name: string; + @ApiProperty({ description: 'Arbitrary job payload' }) + @IsObject() + data: Record; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => JobOptionsDto) + options?: JobOptionsDto; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => PriorityFactorsDto) + priorityFactors?: PriorityFactorsDto; } export class BulkJobItemDto { - @ApiProperty() - @IsString() - @IsNotEmpty() - name: string; - @ApiProperty() - @IsObject() - data: Record; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => JobOptionsDto) - options?: JobOptionsDto; + @ApiProperty() + @IsString() + @IsNotEmpty() + name: string; + @ApiProperty() + @IsObject() + data: Record; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => JobOptionsDto) + options?: JobOptionsDto; } export class AddBulkJobsDto { - @ApiProperty({ type: [BulkJobItemDto] }) - @IsArray() - @ValidateNested({ each: true }) - @Type(() => BulkJobItemDto) - jobs: BulkJobItemDto[]; + @ApiProperty({ type: [BulkJobItemDto] }) + @IsArray() + @ValidateNested({ each: true }) + @Type(() => BulkJobItemDto) + jobs: BulkJobItemDto[]; } export class ScheduleJobDto { - @ApiProperty() - @IsString() - @IsNotEmpty() - name: string; - @ApiProperty() - @IsObject() - data: Record; - @ApiProperty({ description: 'ISO-8601 datetime string (must be in the future)' }) - @IsDateString() - scheduledTime: string; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => JobOptionsDto) - options?: JobOptionsDto; + @ApiProperty() + @IsString() + @IsNotEmpty() + name: string; + @ApiProperty() + @IsObject() + data: Record; + @ApiProperty({ description: 'ISO-8601 datetime string (must be in the future)' }) + @IsDateString() + scheduledTime: string; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => JobOptionsDto) + options?: JobOptionsDto; } export class ScheduleDelayedJobDto { - @ApiProperty() - @IsString() - @IsNotEmpty() - name: string; - @ApiProperty() - @IsObject() - data: Record; - @ApiProperty({ description: 'Delay in milliseconds', minimum: 0 }) - @IsNumber() - @Min(0) - delayMs: number; - @ApiPropertyOptional() - @IsOptional() - @ValidateNested() - @Type(() => JobOptionsDto) - options?: JobOptionsDto; + @ApiProperty() + @IsString() + @IsNotEmpty() + name: string; + @ApiProperty() + @IsObject() + data: Record; + @ApiProperty({ description: 'Delay in milliseconds', minimum: 0 }) + @IsNumber() + @Min(0) + delayMs: number; + @ApiPropertyOptional() + @IsOptional() + @ValidateNested() + @Type(() => JobOptionsDto) + options?: JobOptionsDto; } export class CleanQueueDto { - @ApiPropertyOptional({ description: 'Grace period in ms (default 5000)', minimum: 0 }) - @IsOptional() - @IsNumber() - @Min(0) - grace?: number; - @ApiPropertyOptional({ enum: ['completed', 'failed'] }) - @IsOptional() - @IsEnum(['completed', 'failed']) - status?: 'completed' | 'failed'; + @ApiPropertyOptional({ description: 'Grace period in ms (default 5000)', minimum: 0 }) + @IsOptional() + @IsNumber() + @Min(0) + grace?: number; + @ApiPropertyOptional({ enum: ['completed', 'failed'] }) + @IsOptional() + @IsEnum(['completed', 'failed']) + status?: 'completed' | 'failed'; } export class FailedJobsQueryDto { - @ApiPropertyOptional({ - description: 'Maximum number of jobs to return', - minimum: 1, - maximum: 200, - }) - @IsOptional() - @Type(() => Number) - @IsNumber() - @Min(1) - @Max(200) - limit?: number; - @ApiPropertyOptional({ description: 'Page offset (0-based)', minimum: 0 }) - @IsOptional() - @Type(() => Number) - @IsNumber() - @Min(0) - offset?: number; - @ApiPropertyOptional({ description: 'Filter by job name / type' }) - @IsOptional() - @IsString() - jobName?: string; + @ApiPropertyOptional({ + description: 'Maximum number of jobs to return', + minimum: 1, + maximum: 200, + }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + @Max(200) + limit?: number; + @ApiPropertyOptional({ description: 'Page offset (0-based)', minimum: 0 }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(0) + offset?: number; + @ApiPropertyOptional({ description: 'Filter by job name / type' }) + @IsOptional() + @IsString() + jobName?: string; } export class StuckJobsQueryDto { - @ApiPropertyOptional({ - description: 'Threshold in ms — jobs active longer are considered stuck', - minimum: 5000, - }) - @IsOptional() - @Type(() => Number) - @IsNumber() - @Min(5000) - threshold?: number; + @ApiPropertyOptional({ + description: 'Threshold in ms — jobs active longer are considered stuck', + minimum: 5000, + }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(5000) + threshold?: number; } export class AnalyticsQueryDto { - @ApiPropertyOptional({ - description: 'Lookback window in minutes (default: 60)', - minimum: 1, - maximum: 1440, - }) - @IsOptional() - @Type(() => Number) - @IsNumber() - @Min(1) - @Max(1440) - windowMinutes?: number; + @ApiPropertyOptional({ + description: 'Lookback window in minutes (default: 60)', + minimum: 1, + maximum: 1440, + }) + @IsOptional() + @Type(() => Number) + @IsNumber() + @Min(1) + @Max(1440) + windowMinutes?: number; } diff --git a/src/queues/enums/job-priority.enum.ts b/src/queues/enums/job-priority.enum.ts index e07a71dd..90e606a3 100644 --- a/src/queues/enums/job-priority.enum.ts +++ b/src/queues/enums/job-priority.enum.ts @@ -1,15 +1,15 @@ export enum JobPriority { - CRITICAL = 1, - HIGH = 2, - NORMAL = 3, - LOW = 4, - BACKGROUND = 5 + CRITICAL = 1, + HIGH = 2, + NORMAL = 3, + LOW = 4, + BACKGROUND = 5, } export enum JobStatus { - WAITING = 'waiting', - ACTIVE = 'active', - COMPLETED = 'completed', - FAILED = 'failed', - DELAYED = 'delayed', - PAUSED = 'paused' + WAITING = 'waiting', + ACTIVE = 'active', + COMPLETED = 'completed', + FAILED = 'failed', + DELAYED = 'delayed', + PAUSED = 'paused', } diff --git a/src/rate-limiting/controllers/quota.controller.ts b/src/rate-limiting/controllers/quota.controller.ts new file mode 100644 index 00000000..7e5da4fc --- /dev/null +++ b/src/rate-limiting/controllers/quota.controller.ts @@ -0,0 +1,110 @@ +import { + Controller, + Get, + Post, + Patch, + Delete, + Body, + Param, + ParseUUIDPipe, + HttpCode, + HttpStatus, +} from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiResponse, ApiParam } from '@nestjs/swagger'; +import { QuotaDefinitionService } from '../services/quota-definition.service'; +import { QuotaTrackingService } from '../services/quota-tracking.service'; +import { + CreateQuotaDefinitionDto, + UpdateQuotaDefinitionDto, + ResetUserQuotaDto, + QuotaStatusDto, +} from '../dto/quota.dto'; +import { UserTier } from '../rate-limiting.constants'; +import { SkipQuota } from '../decorators/quota.decorator'; + +@ApiTags('Quota Management') +@SkipQuota() // Admin endpoints are exempt from quota checks +@Controller('admin/quota') +export class QuotaController { + constructor( + private readonly definitions: QuotaDefinitionService, + private readonly tracking: QuotaTrackingService, + ) {} + + // ─── Quota Definitions ──────────────────────────────────────────────────── + + @Post('definitions') + @ApiOperation({ summary: 'Create a quota definition (tier or per-user override)' }) + @ApiResponse({ status: 201, description: 'Quota definition created' }) + create(@Body() dto: CreateQuotaDefinitionDto) { + return this.definitions.create(dto); + } + + @Get('definitions') + @ApiOperation({ summary: 'List all quota definitions' }) + findAll() { + return this.definitions.findAll(); + } + + @Get('definitions/:id') + @ApiOperation({ summary: 'Get a single quota definition' }) + @ApiParam({ name: 'id', type: String }) + findOne(@Param('id', ParseUUIDPipe) id: string) { + return this.definitions.findOne(id); + } + + @Patch('definitions/:id') + @ApiOperation({ summary: 'Update a quota definition' }) + @ApiParam({ name: 'id', type: String }) + update(@Param('id', ParseUUIDPipe) id: string, @Body() dto: UpdateQuotaDefinitionDto) { + return this.definitions.update(id, dto); + } + + @Delete('definitions/:id') + @HttpCode(HttpStatus.NO_CONTENT) + @ApiOperation({ summary: 'Delete a quota definition' }) + @ApiParam({ name: 'id', type: String }) + remove(@Param('id', ParseUUIDPipe) id: string) { + return this.definitions.remove(id); + } + + // ─── User Quota Status & Management ────────────────────────────────────── + + @Get('users/:userId/status') + @ApiOperation({ summary: "Get a user's current quota status across all windows" }) + @ApiParam({ name: 'userId', type: String }) + @ApiResponse({ status: 200, type: QuotaStatusDto }) + async getUserStatus(@Param('userId') userId: string): Promise { + // Default to FREE; in a real setup resolve the user's tier from the users service + return this.tracking.getStatus(userId, UserTier.FREE); + } + + @Post('users/reset') + @ApiOperation({ summary: 'Manually reset quota for a specific user' }) + @ApiResponse({ status: 200, description: 'Quota reset successfully' }) + async resetUser(@Body() dto: ResetUserQuotaDto) { + await this.tracking.resetUser(dto.userId, dto.period); + return { message: `Quota reset for user ${dto.userId}`, period: dto.period ?? 'ALL' }; + } + + @Post('reset/minutely') + @ApiOperation({ summary: 'Trigger minutely quota window reset (all users)' }) + async triggerMinutelyReset() { + const count = await this.tracking.resetExpiredWindows('MINUTELY'); + return { reset: count, period: 'MINUTELY' }; + } + + @Post('reset/hourly') + @ApiOperation({ summary: 'Trigger hourly quota window reset (all users)' }) + async triggerHourlyReset() { + const count = await this.tracking.resetExpiredWindows('HOURLY'); + return { reset: count, period: 'HOURLY' }; + } + + @Post('reset/daily') + @ApiOperation({ summary: 'Trigger daily quota window reset (all users)' }) + async triggerDailyReset() { + const count = await this.tracking.resetExpiredWindows('DAILY'); + return { reset: count, period: 'DAILY' }; + } +} diff --git a/src/rate-limiting/controllers/user-quota.controller.ts b/src/rate-limiting/controllers/user-quota.controller.ts new file mode 100644 index 00000000..c1f8e194 --- /dev/null +++ b/src/rate-limiting/controllers/user-quota.controller.ts @@ -0,0 +1,41 @@ +import { Controller, Get, Req } from '@nestjs/common'; +import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; +import { Request } from 'express'; +import { QuotaManagementService } from '../services/quota.service'; +import { QuotaStatusDto } from '../dto/quota.dto'; +import { SkipQuota } from '../decorators/quota.decorator'; +import { UserTier } from '../rate-limiting.constants'; + +@ApiTags('Quota') +@SkipQuota() +@Controller('quota') +export class UserQuotaController { + constructor(private readonly quotas: QuotaManagementService) {} + + @Get('status') + @ApiOperation({ summary: 'Get current quota usage for the caller' }) + @ApiResponse({ status: 200, type: QuotaStatusDto }) + getStatus(@Req() req: Request & { user?: Record }): Promise { + const userId = this.resolveUserId(req); + const tier = this.resolveTier(req.user); + return this.quotas.getStatus(userId, tier); + } + + private resolveUserId(req: Request & { user?: Record }): string { + const user = req.user; + if (user?.id) return String(user.id); + if (user?.sub) return String(user.sub); + + const forwarded = req.headers['x-forwarded-for']; + if (typeof forwarded === 'string') { + return `ip:${forwarded.split(',')[0].trim()}`; + } + return `ip:${req.ip ?? req.socket?.remoteAddress ?? 'unknown'}`; + } + + private resolveTier(user?: Record): UserTier { + if (!user) return UserTier.FREE; + const raw = String(user.tier ?? user.plan ?? 'FREE').toUpperCase(); + return (UserTier[raw as keyof typeof UserTier] as UserTier | undefined) ?? UserTier.FREE; + } +} diff --git a/src/rate-limiting/decorators/quota.decorator.ts b/src/rate-limiting/decorators/quota.decorator.ts new file mode 100644 index 00000000..86007cc7 --- /dev/null +++ b/src/rate-limiting/decorators/quota.decorator.ts @@ -0,0 +1,30 @@ +import { SetMetadata } from '@nestjs/common'; +import { UserTier } from '../rate-limiting.constants'; + +export const QUOTA_KEY = 'quota_options'; + +export interface QuotaOptions { + /** Skip quota check for this route (e.g. health checks). */ + skip?: boolean; + /** Override the tier for this route only. */ + tier?: UserTier; +} + +/** + * Apply to a controller or handler to enforce per-user quota. + * + * @example + * // On a controller — applies to all routes + * @UseQuota() + * export class CoursesController {} + * + * // On a single route with options + * @UseQuota({ skip: true }) + * @Get('health') + * health() {} + */ +export const UseQuota = (options: QuotaOptions = {}): MethodDecorator & ClassDecorator => + SetMetadata(QUOTA_KEY, options); + +/** Explicitly skip quota enforcement on a handler. */ +export const SkipQuota = () => UseQuota({ skip: true }); diff --git a/src/rate-limiting/dto/create-rate-limiting.dto.ts b/src/rate-limiting/dto/create-rate-limiting.dto.ts index 94b8408a..11494f9f 100644 --- a/src/rate-limiting/dto/create-rate-limiting.dto.ts +++ b/src/rate-limiting/dto/create-rate-limiting.dto.ts @@ -1,83 +1,92 @@ -import { IsString, IsNotEmpty, IsOptional, IsNumber, IsEnum, Min, Max, IsObject, } from 'class-validator'; +import { + IsString, + IsNotEmpty, + IsOptional, + IsNumber, + IsEnum, + Min, + Max, + IsObject, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; export enum RateLimitType { - IP = 'ip', - USER = 'user', - ENDPOINT = 'endpoint', - GLOBAL = 'global' + IP = 'ip', + USER = 'user', + ENDPOINT = 'endpoint', + GLOBAL = 'global', } /** * Defines the create Rate Limiting payload. */ export class CreateRateLimitingDto { - @ApiProperty({ - description: 'Name of the rate limit rule', - example: 'api-login-limit', - }) - @IsString({ message: 'Name must be a string' }) - @IsNotEmpty({ message: 'Name is required' }) - name: string; - @ApiProperty({ - description: 'Type of rate limiting', - enum: RateLimitType, - example: RateLimitType.USER, - }) - @IsEnum(RateLimitType, { message: 'Type must be a valid rate limit type' }) - type: RateLimitType; - @ApiProperty({ - description: 'Maximum number of requests allowed', - example: 100, - minimum: 1, - maximum: 1000000, - }) - @IsNumber({}, { message: 'Limit must be a number' }) - @Min(1, { message: 'Limit must be at least 1' }) - @Max(1000000, { message: 'Limit cannot exceed 1,000,000' }) - limit: number; - @ApiProperty({ - description: 'Time window in seconds', - example: 3600, - minimum: 1, - maximum: 86400, - }) - @IsNumber({}, { message: 'Window must be a number' }) - @Min(1, { message: 'Window must be at least 1 second' }) - @Max(86400, { message: 'Window cannot exceed 24 hours' }) - windowSeconds: number; - @ApiPropertyOptional({ - description: 'Specific endpoint to limit', - example: '/api/auth/login', - }) - @IsOptional() - @IsString({ message: 'Endpoint must be a string' }) - endpoint?: string; - @ApiPropertyOptional({ - description: 'Priority of this rule (higher = more important)', - example: 1, - minimum: 1, - maximum: 100, - }) - @IsOptional() - @IsNumber({}, { message: 'Priority must be a number' }) - @Min(1, { message: 'Priority must be at least 1' }) - @Max(100, { message: 'Priority cannot exceed 100' }) - priority?: number; - @ApiPropertyOptional({ - description: 'Whether this rule is enabled', - default: true, - }) - @IsOptional() - @IsEnum([true, false], { message: 'Enabled must be a boolean' }) - enabled?: boolean; - @ApiPropertyOptional({ - description: 'Additional metadata for the rule', - example: { - description: 'Limit login attempts per user', - tags: ['auth', 'security'], - }, - }) - @IsOptional() - @IsObject({ message: 'Metadata must be an object' }) - metadata?: Record; + @ApiProperty({ + description: 'Name of the rate limit rule', + example: 'api-login-limit', + }) + @IsString({ message: 'Name must be a string' }) + @IsNotEmpty({ message: 'Name is required' }) + name: string; + @ApiProperty({ + description: 'Type of rate limiting', + enum: RateLimitType, + example: RateLimitType.USER, + }) + @IsEnum(RateLimitType, { message: 'Type must be a valid rate limit type' }) + type: RateLimitType; + @ApiProperty({ + description: 'Maximum number of requests allowed', + example: 100, + minimum: 1, + maximum: 1000000, + }) + @IsNumber({}, { message: 'Limit must be a number' }) + @Min(1, { message: 'Limit must be at least 1' }) + @Max(1000000, { message: 'Limit cannot exceed 1,000,000' }) + limit: number; + @ApiProperty({ + description: 'Time window in seconds', + example: 3600, + minimum: 1, + maximum: 86400, + }) + @IsNumber({}, { message: 'Window must be a number' }) + @Min(1, { message: 'Window must be at least 1 second' }) + @Max(86400, { message: 'Window cannot exceed 24 hours' }) + windowSeconds: number; + @ApiPropertyOptional({ + description: 'Specific endpoint to limit', + example: '/api/auth/login', + }) + @IsOptional() + @IsString({ message: 'Endpoint must be a string' }) + endpoint?: string; + @ApiPropertyOptional({ + description: 'Priority of this rule (higher = more important)', + example: 1, + minimum: 1, + maximum: 100, + }) + @IsOptional() + @IsNumber({}, { message: 'Priority must be a number' }) + @Min(1, { message: 'Priority must be at least 1' }) + @Max(100, { message: 'Priority cannot exceed 100' }) + priority?: number; + @ApiPropertyOptional({ + description: 'Whether this rule is enabled', + default: true, + }) + @IsOptional() + @IsEnum([true, false], { message: 'Enabled must be a boolean' }) + enabled?: boolean; + @ApiPropertyOptional({ + description: 'Additional metadata for the rule', + example: { + description: 'Limit login attempts per user', + tags: ['auth', 'security'], + }, + }) + @IsOptional() + @IsObject({ message: 'Metadata must be an object' }) + metadata?: Record; } diff --git a/src/rate-limiting/dto/quota.dto.ts b/src/rate-limiting/dto/quota.dto.ts new file mode 100644 index 00000000..01225812 --- /dev/null +++ b/src/rate-limiting/dto/quota.dto.ts @@ -0,0 +1,78 @@ +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { IsEnum, IsInt, IsOptional, IsString, IsUUID, Min } from 'class-validator'; +import { UserTier } from '../rate-limiting.constants'; + +export class CreateQuotaDefinitionDto { + @ApiPropertyOptional({ enum: UserTier, description: 'Tier this rule applies to' }) + @IsOptional() + @IsEnum(UserTier) + tier?: UserTier; + + @ApiPropertyOptional({ description: 'User-specific override (UUID)' }) + @IsOptional() + @IsUUID() + userId?: string; + + @ApiProperty({ example: 10, description: 'Max requests per minute' }) + @IsInt() + @Min(1) + requestsPerMinute: number; + + @ApiProperty({ example: 100, description: 'Max requests per hour' }) + @IsInt() + @Min(1) + requestsPerHour: number; + + @ApiProperty({ example: 500, description: 'Max requests per day' }) + @IsInt() + @Min(1) + requestsPerDay: number; +} + +export class UpdateQuotaDefinitionDto { + @ApiPropertyOptional({ example: 20 }) + @IsOptional() + @IsInt() + @Min(1) + requestsPerMinute?: number; + + @ApiPropertyOptional({ example: 200 }) + @IsOptional() + @IsInt() + @Min(1) + requestsPerHour?: number; + + @ApiPropertyOptional({ example: 1000 }) + @IsOptional() + @IsInt() + @Min(1) + requestsPerDay?: number; + + @ApiPropertyOptional() + @IsOptional() + isActive?: boolean; +} + +export class QuotaStatusDto { + @ApiProperty() userId: string; + @ApiProperty({ enum: UserTier }) tier: UserTier; + @ApiProperty() minuteUsed: number; + @ApiProperty() minuteLimit: number; + @ApiProperty() hourUsed: number; + @ApiProperty() hourLimit: number; + @ApiProperty() dayUsed: number; + @ApiProperty() dayLimit: number; + @ApiProperty() isBlocked: boolean; + @ApiProperty() nextResetAt: Date; +} + +export class ResetUserQuotaDto { + @ApiProperty({ description: 'User ID to reset quota for' }) + @IsUUID() + userId: string; + + @ApiPropertyOptional({ enum: ['MINUTELY', 'HOURLY', 'DAILY'] }) + @IsOptional() + @IsString() + period?: 'MINUTELY' | 'HOURLY' | 'DAILY'; +} diff --git a/src/rate-limiting/entities/quota-definition.entity.ts b/src/rate-limiting/entities/quota-definition.entity.ts new file mode 100644 index 00000000..7f6d36d0 --- /dev/null +++ b/src/rate-limiting/entities/quota-definition.entity.ts @@ -0,0 +1,47 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + Index, +} from 'typeorm'; +import { UserTier } from '../rate-limiting.constants'; + +/** + * Stores configurable quota rules. + * One row per tier (or per-user override when userId is set). + * Admin API can update these without a deployment. + */ +@Entity('quota_definitions') +@Index(['tier', 'isActive']) +export class QuotaDefinition { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ type: 'enum', enum: UserTier, nullable: true }) + tier: UserTier | null; + + /** When set, this row is a per-user override and takes precedence over the tier row. */ + @Column({ nullable: true }) + @Index() + userId: string | null; + + @Column({ type: 'int' }) + requestsPerMinute: number; + + @Column({ type: 'int' }) + requestsPerHour: number; + + @Column({ type: 'int' }) + requestsPerDay: number; + + @Column({ default: true }) + isActive: boolean; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/rate-limiting/entities/user-quota-usage.entity.ts b/src/rate-limiting/entities/user-quota-usage.entity.ts new file mode 100644 index 00000000..bf877a7f --- /dev/null +++ b/src/rate-limiting/entities/user-quota-usage.entity.ts @@ -0,0 +1,53 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + Index, +} from 'typeorm'; +import { UserTier, QuotaResetPeriod } from '../rate-limiting.constants'; + +/** + * Tracks real-time request consumption per user per reset window. + * One row per (userId, period) combination; reset by the scheduler. + */ +@Entity('user_quota_usage') +@Index(['userId', 'period'], { unique: true }) +export class UserQuotaUsage { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column() + @Index() + userId: string; + + @Column({ type: 'enum', enum: UserTier, default: UserTier.FREE }) + tier: UserTier; + + /** MINUTELY | HOURLY | DAILY */ + @Column() + period: QuotaResetPeriod; + + /** Current consumption for this window */ + @Column({ type: 'int', default: 0 }) + count: number; + + /** When the current window started */ + @Column({ type: 'timestamp' }) + windowStart: Date; + + /** When the current window ends (for quick comparisons) */ + @Column({ type: 'timestamp' }) + windowEnd: Date; + + /** Whether this user is currently blocked due to overage */ + @Column({ default: false }) + isBlocked: boolean; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/rate-limiting/guards/quota.guard.ts b/src/rate-limiting/guards/quota.guard.ts new file mode 100644 index 00000000..734486fa --- /dev/null +++ b/src/rate-limiting/guards/quota.guard.ts @@ -0,0 +1,97 @@ +import { + Injectable, + CanActivate, + ExecutionContext, + HttpException, + HttpStatus, + Logger, +} from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { Request, Response } from 'express'; +import { QuotaTrackingService } from '../services/quota-tracking.service'; +import { QUOTA_KEY, QuotaOptions } from '../decorators/quota.decorator'; +import { UserTier } from '../rate-limiting.constants'; + +/** + * Global quota guard — checks per-user consumption before each request. + * + * Resolution order for userId/tier: + * 1. request.user (JWT-populated by AuthGuard) + * 2. Falls back to IP-based tracking with FREE tier if unauthenticated + * + * Injects standard rate-limit headers on every response so clients can + * observe their remaining quota without hitting 429s. + */ +@Injectable() +export class QuotaGuard implements CanActivate { + private readonly logger = new Logger(QuotaGuard.name); + + constructor( + private readonly reflector: Reflector, + private readonly tracking: QuotaTrackingService, + ) {} + + async canActivate(context: ExecutionContext): Promise { + // Check for @SkipQuota or @UseQuota({ skip: true }) + const options = this.reflector.getAllAndOverride(QUOTA_KEY, [ + context.getHandler(), + context.getClass(), + ]); + if (options?.skip) return true; + + const req = context.switchToHttp().getRequest(); + const res = context.switchToHttp().getResponse(); + + // Resolve identity — authenticated user or fall back to IP + const userId: string = req.user?.id ?? req.user?.sub ?? this.resolveIp(req); + const tier: UserTier = options?.tier ?? this.resolveTier(req.user); + + const result = await this.tracking.checkAndIncrement(userId, tier); + + // Always inject quota headers + res.setHeader('X-RateLimit-Limit-Minute', result.limit.minute); + res.setHeader('X-RateLimit-Limit-Hour', result.limit.hour); + res.setHeader('X-RateLimit-Limit-Day', result.limit.day); + res.setHeader('X-RateLimit-Remaining-Minute', result.remaining.minute); + res.setHeader('X-RateLimit-Remaining-Hour', result.remaining.hour); + res.setHeader('X-RateLimit-Remaining-Day', result.remaining.day); + + if (!result.allowed) { + res.setHeader('Retry-After', result.retryAfter ?? 60); + + this.logger.warn( + `Quota exceeded userId=${userId} tier=${tier} retryAfter=${result.retryAfter}s`, + ); + + throw new HttpException( + { + statusCode: HttpStatus.TOO_MANY_REQUESTS, + error: 'Quota Exceeded', + message: 'You have exceeded your API quota. Please wait before retrying.', + retryAfterSeconds: result.retryAfter, + quota: { + minuteRemaining: result.remaining.minute, + hourRemaining: result.remaining.hour, + dayRemaining: result.remaining.day, + }, + }, + HttpStatus.TOO_MANY_REQUESTS, + ); + } + + return true; + } + + private resolveTier(user?: any): UserTier { + if (!user) return UserTier.FREE; + // Map user.tier or user.plan field; default to FREE + const raw = (user.tier ?? user.plan ?? 'FREE').toString().toUpperCase(); + return UserTier[raw as keyof typeof UserTier] ?? UserTier.FREE; + } + + private resolveIp(req: Request): string { + const forwarded = req.headers['x-forwarded-for']; + if (typeof forwarded === 'string') return `ip:${forwarded.split(',')[0].trim()}`; + return `ip:${req.ip ?? req.socket?.remoteAddress ?? 'unknown'}`; + } +} diff --git a/src/rate-limiting/index.ts b/src/rate-limiting/index.ts new file mode 100644 index 00000000..5cedc3f5 --- /dev/null +++ b/src/rate-limiting/index.ts @@ -0,0 +1,9 @@ +// Re-export all rate-limiting public surface +export { QuotaDefinition } from './entities/quota-definition.entity'; +export { UserQuotaUsage } from './entities/user-quota-usage.entity'; +export { QuotaManagementService, UserTier } from './services/quota.service'; +export { QuotaGuard } from './guards/quota.guard'; +export { UseQuota, SkipQuota, QUOTA_KEY } from './decorators/quota.decorator'; +export { QUOTA_LIMITS, QUOTA_RESET_PERIODS } from './rate-limiting.constants'; +export { RateLimitingModule } from './rate-limiting.module'; +export { QuotaStatusDto, CreateQuotaDefinitionDto } from './dto/quota.dto'; diff --git a/src/rate-limiting/rate-limiting.constants.ts b/src/rate-limiting/rate-limiting.constants.ts index 148433a2..3397a4cc 100644 --- a/src/rate-limiting/rate-limiting.constants.ts +++ b/src/rate-limiting/rate-limiting.constants.ts @@ -1,6 +1,31 @@ -export const QUOTA_LIMITS = { - FREE: { limit: 100, window: 60 }, - PRO: { limit: 500, window: 60 }, - PREMIUM: { limit: Infinity, window: 60 }, - DEFAULT: { limit: 50, window: 60 }, +export enum UserTier { + FREE = 'FREE', + PRO = 'PRO', + PREMIUM = 'PREMIUM', + ENTERPRISE = 'ENTERPRISE', +} + +export const QUOTA_LIMITS: Record< + UserTier, + { requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number } +> = { + [UserTier.FREE]: { requestsPerMinute: 10, requestsPerHour: 100, requestsPerDay: 500 }, + [UserTier.PRO]: { requestsPerMinute: 60, requestsPerHour: 1_000, requestsPerDay: 10_000 }, + [UserTier.PREMIUM]: { requestsPerMinute: 200, requestsPerHour: 5_000, requestsPerDay: 50_000 }, + [UserTier.ENTERPRISE]: { + requestsPerMinute: 1_000, + requestsPerHour: 50_000, + requestsPerDay: 500_000, + }, +}; + +export const QUOTA_RESET_PERIODS = { + MINUTELY: 'MINUTELY', + HOURLY: 'HOURLY', + DAILY: 'DAILY', } as const; + +export type QuotaResetPeriod = keyof typeof QUOTA_RESET_PERIODS; + +/** DI token for the quota storage strategy */ +export const QUOTA_STORAGE = Symbol('QUOTA_STORAGE'); diff --git a/src/rate-limiting/rate-limiting.module.ts b/src/rate-limiting/rate-limiting.module.ts new file mode 100644 index 00000000..325d1857 --- /dev/null +++ b/src/rate-limiting/rate-limiting.module.ts @@ -0,0 +1,42 @@ +import { Module, OnModuleInit } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +// Entities +import { QuotaDefinition } from './entities/quota-definition.entity'; +import { UserQuotaUsage } from './entities/user-quota-usage.entity'; + +// Services +import { QuotaManagementService } from './services/quota.service'; +import { QuotaDefinitionService } from './services/quota-definition.service'; +import { QuotaTrackingService } from './services/quota-tracking.service'; +import { QuotaResetScheduler } from './services/quota-reset.scheduler'; +import { AdaptiveRateLimitingService } from './services/adaptive-rate-limiting.service'; + +// Guard & Decorator +import { QuotaGuard } from './guards/quota.guard'; + +// Controller +import { QuotaController } from './controllers/quota.controller'; +import { UserQuotaController } from './controllers/user-quota.controller'; + +@Module({ + imports: [TypeOrmModule.forFeature([QuotaDefinition, UserQuotaUsage])], + controllers: [QuotaController, UserQuotaController], + providers: [ + QuotaDefinitionService, + QuotaTrackingService, + QuotaManagementService, + QuotaResetScheduler, + AdaptiveRateLimitingService, + QuotaGuard, + ], + exports: [QuotaManagementService, QuotaDefinitionService, QuotaTrackingService, QuotaGuard], +}) +export class RateLimitingModule implements OnModuleInit { + constructor(private readonly definitions: QuotaDefinitionService) {} + + /** Seed default quota definitions on first boot. */ + async onModuleInit(): Promise { + await this.definitions.seedDefaults(); + } +} diff --git a/src/rate-limiting/services/quota-definition.service.ts b/src/rate-limiting/services/quota-definition.service.ts new file mode 100644 index 00000000..5532126e --- /dev/null +++ b/src/rate-limiting/services/quota-definition.service.ts @@ -0,0 +1,91 @@ +import { Injectable, Logger, NotFoundException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { QuotaDefinition } from '../entities/quota-definition.entity'; +import { QUOTA_LIMITS, UserTier } from '../rate-limiting.constants'; +import { CreateQuotaDefinitionDto, UpdateQuotaDefinitionDto } from '../dto/quota.dto'; + +/** + * Manages quota rule definitions (CRUD). + * Seeded from QUOTA_LIMITS constants on first boot; overrideable via admin API. + */ +@Injectable() +export class QuotaDefinitionService { + private readonly logger = new Logger(QuotaDefinitionService.name); + + constructor( + @InjectRepository(QuotaDefinition) + private readonly repo: Repository, + ) {} + + /** Seed default tier quotas if not already present. Called from module onModuleInit. */ + async seedDefaults(): Promise { + for (const tier of Object.values(UserTier)) { + const exists = await this.repo.findOne({ + where: { tier, userId: null, isActive: true }, + }); + if (!exists) { + const limits = QUOTA_LIMITS[tier]; + await this.repo.save(this.repo.create({ tier, userId: null, ...limits, isActive: true })); + this.logger.log(`Seeded default quota for tier ${tier}`); + } + } + } + + async create(dto: CreateQuotaDefinitionDto): Promise { + const definition = this.repo.create({ + tier: dto.tier ?? null, + userId: dto.userId ?? null, + requestsPerMinute: dto.requestsPerMinute, + requestsPerHour: dto.requestsPerHour, + requestsPerDay: dto.requestsPerDay, + isActive: true, + }); + return this.repo.save(definition); + } + + async findAll(): Promise { + return this.repo.find({ order: { createdAt: 'DESC' } }); + } + + async findOne(id: string): Promise { + const def = await this.repo.findOne({ where: { id } }); + if (!def) throw new NotFoundException(`Quota definition ${id} not found`); + return def; + } + + async update(id: string, dto: UpdateQuotaDefinitionDto): Promise { + const def = await this.findOne(id); + Object.assign(def, dto); + return this.repo.save(def); + } + + async remove(id: string): Promise { + const def = await this.findOne(id); + await this.repo.remove(def); + } + + /** + * Resolve the effective quota for a user. + * Priority: per-user override > tier rule > hardcoded constant fallback. + */ + async resolveForUser( + userId: string, + tier: UserTier, + ): Promise<{ requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number }> { + // 1. Per-user override + const userOverride = await this.repo.findOne({ + where: { userId, isActive: true }, + }); + if (userOverride) return userOverride; + + // 2. Tier-level rule from DB + const tierRule = await this.repo.findOne({ + where: { tier, userId: null, isActive: true }, + }); + if (tierRule) return tierRule; + + // 3. Fallback to in-memory constants + return QUOTA_LIMITS[tier] ?? QUOTA_LIMITS[UserTier.FREE]; + } +} diff --git a/src/rate-limiting/services/quota-reset.scheduler.ts b/src/rate-limiting/services/quota-reset.scheduler.ts new file mode 100644 index 00000000..0c385759 --- /dev/null +++ b/src/rate-limiting/services/quota-reset.scheduler.ts @@ -0,0 +1,35 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Cron, CronExpression } from '@nestjs/schedule'; +import { QuotaTrackingService } from './quota-tracking.service'; + +/** + * Scheduled jobs that reset expired quota windows. + * Each job only deletes rows whose windowEnd has passed — no data loss risk. + */ +@Injectable() +export class QuotaResetScheduler { + private readonly logger = new Logger(QuotaResetScheduler.name); + + constructor(private readonly tracking: QuotaTrackingService) {} + + /** Run every minute — cleans up expired per-minute windows */ + @Cron(CronExpression.EVERY_MINUTE) + async resetMinutelyWindows(): Promise { + const count = await this.tracking.resetExpiredWindows('MINUTELY'); + if (count > 0) this.logger.debug(`Cleared ${count} expired MINUTELY quota windows`); + } + + /** Run every hour — cleans up expired per-hour windows */ + @Cron(CronExpression.EVERY_HOUR) + async resetHourlyWindows(): Promise { + const count = await this.tracking.resetExpiredWindows('HOURLY'); + if (count > 0) this.logger.log(`Cleared ${count} expired HOURLY quota windows`); + } + + /** Run every day at midnight — cleans up expired per-day windows */ + @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT) + async resetDailyWindows(): Promise { + const count = await this.tracking.resetExpiredWindows('DAILY'); + this.logger.log(`Daily quota reset complete — cleared ${count} windows`); + } +} diff --git a/src/rate-limiting/services/quota-tracking.service.spec.ts b/src/rate-limiting/services/quota-tracking.service.spec.ts new file mode 100644 index 00000000..793bf047 --- /dev/null +++ b/src/rate-limiting/services/quota-tracking.service.spec.ts @@ -0,0 +1,143 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { getRepositoryToken } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { QuotaTrackingService } from './quota-tracking.service'; +import { QuotaDefinitionService } from './quota-definition.service'; +import { AdaptiveRateLimitingService } from './adaptive-rate-limiting.service'; +import { UserQuotaUsage } from '../entities/user-quota-usage.entity'; +import { UserTier } from '../rate-limiting.constants'; + +const mockLimits = { requestsPerMinute: 5, requestsPerHour: 20, requestsPerDay: 100 }; + +const makeUsage = (overrides: Partial = {}): UserQuotaUsage => ({ + id: 'uuid-1', + userId: 'user-1', + tier: UserTier.FREE, + period: 'MINUTELY', + count: 0, + windowStart: new Date(), + windowEnd: new Date(Date.now() + 60_000), + isBlocked: false, + createdAt: new Date(), + updatedAt: new Date(), + ...overrides, +}); + +describe('QuotaTrackingService', () => { + let service: QuotaTrackingService; + let repo: jest.Mocked>; + + beforeEach(async () => { + const repoMock = { + findOne: jest.fn(), + save: jest.fn(), + delete: jest.fn(), + create: jest.fn((dto) => ({ ...dto })), + increment: jest.fn(), + update: jest.fn(), + }; + + const module: TestingModule = await Test.createTestingModule({ + providers: [ + QuotaTrackingService, + { provide: getRepositoryToken(UserQuotaUsage), useValue: repoMock }, + { + provide: QuotaDefinitionService, + useValue: { resolveForUser: jest.fn().mockResolvedValue(mockLimits) }, + }, + { + provide: AdaptiveRateLimitingService, + useValue: { adjustLimit: (value: number) => value }, + }, + ], + }).compile(); + + service = module.get(QuotaTrackingService); + repo = module.get(getRepositoryToken(UserQuotaUsage)); + }); + + describe('checkAndIncrement', () => { + it('allows request when under quota', async () => { + const usage = makeUsage({ count: 2 }); + repo.findOne.mockResolvedValue(usage); + repo.increment.mockResolvedValue({ affected: 1 } as never); + + const result = await service.checkAndIncrement('user-1', UserTier.FREE); + + expect(result.allowed).toBe(true); + expect(result.remaining.minute).toBe(2); + expect(repo.increment).toHaveBeenCalledTimes(3); + }); + + it('blocks request when minute quota is exhausted and marks overage', async () => { + repo.findOne + .mockResolvedValueOnce(makeUsage({ id: 'm', count: 5, period: 'MINUTELY' })) + .mockResolvedValueOnce(makeUsage({ id: 'h', count: 10, period: 'HOURLY' })) + .mockResolvedValueOnce(makeUsage({ id: 'd', count: 50, period: 'DAILY' })); + repo.update.mockResolvedValue({ affected: 1 } as never); + + const result = await service.checkAndIncrement('user-1', UserTier.FREE); + + expect(result.allowed).toBe(false); + expect(result.remaining.minute).toBe(0); + expect(result.retryAfter).toBeGreaterThan(0); + expect(repo.increment).not.toHaveBeenCalled(); + expect(repo.update).toHaveBeenCalled(); + }); + + it('blocks immediately when a window is marked blocked', async () => { + repo.findOne + .mockResolvedValueOnce(makeUsage({ isBlocked: true, count: 1 })) + .mockResolvedValueOnce(makeUsage({ id: 'h', count: 1, period: 'HOURLY' })) + .mockResolvedValueOnce(makeUsage({ id: 'd', count: 1, period: 'DAILY' })); + + const result = await service.checkAndIncrement('user-1', UserTier.FREE); + + expect(result.allowed).toBe(false); + expect(repo.increment).not.toHaveBeenCalled(); + }); + + it('creates a fresh window when existing window has expired', async () => { + const expired = makeUsage({ windowEnd: new Date(Date.now() - 1000) }); + repo.findOne.mockResolvedValue(expired); + repo.delete.mockResolvedValue({ affected: 1 } as never); + repo.save.mockImplementation( + async (entity) => ({ ...entity, id: 'new-uuid' }) as UserQuotaUsage, + ); + repo.increment.mockResolvedValue({ affected: 1 } as never); + + const result = await service.checkAndIncrement('user-1', UserTier.FREE); + + expect(repo.delete).toHaveBeenCalled(); + expect(repo.save).toHaveBeenCalled(); + expect(result.allowed).toBe(true); + }); + }); + + describe('resetUser', () => { + it('deletes all usage rows for a user', async () => { + repo.delete.mockResolvedValue({ affected: 3 } as never); + await service.resetUser('user-1'); + expect(repo.delete).toHaveBeenCalledWith({ userId: 'user-1' }); + }); + + it('deletes only the specified period', async () => { + repo.delete.mockResolvedValue({ affected: 1 } as never); + await service.resetUser('user-1', 'DAILY'); + expect(repo.delete).toHaveBeenCalledWith({ userId: 'user-1', period: 'DAILY' }); + }); + }); + + describe('getStatus', () => { + it('returns correct quota status without incrementing', async () => { + repo.findOne.mockResolvedValue(makeUsage({ count: 3 })); + + const status = await service.getStatus('user-1', UserTier.FREE); + + expect(status.userId).toBe('user-1'); + expect(status.minuteUsed).toBe(3); + expect(status.minuteLimit).toBe(5); + expect(repo.increment).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/src/rate-limiting/services/quota-tracking.service.ts b/src/rate-limiting/services/quota-tracking.service.ts new file mode 100644 index 00000000..5ed76bca --- /dev/null +++ b/src/rate-limiting/services/quota-tracking.service.ts @@ -0,0 +1,247 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { In, LessThan, Repository } from 'typeorm'; +import { UserQuotaUsage } from '../entities/user-quota-usage.entity'; +import { QuotaDefinitionService } from './quota-definition.service'; +import { AdaptiveRateLimitingService } from './adaptive-rate-limiting.service'; +import { UserTier, QuotaResetPeriod } from '../rate-limiting.constants'; +import { QuotaStatusDto } from '../dto/quota.dto'; + +export interface QuotaCheckResult { + allowed: boolean; + remaining: { minute: number; hour: number; day: number }; + limit: { minute: number; hour: number; day: number }; + retryAfter?: number; +} + +@Injectable() +export class QuotaTrackingService { + private readonly logger = new Logger(QuotaTrackingService.name); + + constructor( + @InjectRepository(UserQuotaUsage) + private readonly usageRepo: Repository, + private readonly definitionService: QuotaDefinitionService, + private readonly adaptive: AdaptiveRateLimitingService, + ) {} + + /** + * Atomically increment the user's counters and check if they are within quota. + * Returns allowed=false if any window is exhausted or the user is blocked from overage. + */ + async checkAndIncrement(userId: string, tier: UserTier): Promise { + const baseLimits = await this.definitionService.resolveForUser(userId, tier); + const limits = { + requestsPerMinute: this.adaptive.adjustLimit(baseLimits.requestsPerMinute), + requestsPerHour: this.adaptive.adjustLimit(baseLimits.requestsPerHour), + requestsPerDay: this.adaptive.adjustLimit(baseLimits.requestsPerDay), + }; + const now = new Date(); + + const minute = await this.getOrCreateUsage(userId, tier, 'MINUTELY', now); + const hour = await this.getOrCreateUsage(userId, tier, 'HOURLY', now); + const day = await this.getOrCreateUsage(userId, tier, 'DAILY', now); + + if (this.isBlockedInWindow(minute, hour, day, now)) { + return this.buildDeniedResult(minute, hour, day, limits, now); + } + + const withinMinute = minute.count < limits.requestsPerMinute; + const withinHour = hour.count < limits.requestsPerHour; + const withinDay = day.count < limits.requestsPerDay; + const allowed = withinMinute && withinHour && withinDay; + + if (allowed) { + await Promise.all([ + this.usageRepo.increment({ id: minute.id }, 'count', 1), + this.usageRepo.increment({ id: hour.id }, 'count', 1), + this.usageRepo.increment({ id: day.id }, 'count', 1), + ]); + } else { + await this.markOverage({ minute, hour, day }, { withinMinute, withinHour, withinDay }); + this.logger.warn( + `Quota exceeded userId=${userId} tier=${tier} ` + + `min=${minute.count}/${limits.requestsPerMinute} ` + + `hr=${hour.count}/${limits.requestsPerHour} ` + + `day=${day.count}/${limits.requestsPerDay}`, + ); + return this.buildDeniedResult(minute, hour, day, limits, now); + } + + return { + allowed: true, + remaining: { + minute: Math.max(0, limits.requestsPerMinute - minute.count - 1), + hour: Math.max(0, limits.requestsPerHour - hour.count - 1), + day: Math.max(0, limits.requestsPerDay - day.count - 1), + }, + limit: { + minute: limits.requestsPerMinute, + hour: limits.requestsPerHour, + day: limits.requestsPerDay, + }, + }; + } + + /** Get quota status without incrementing (for status endpoint). */ + async getStatus(userId: string, tier: UserTier): Promise { + const baseLimits = await this.definitionService.resolveForUser(userId, tier); + const limits = { + requestsPerMinute: this.adaptive.adjustLimit(baseLimits.requestsPerMinute), + requestsPerHour: this.adaptive.adjustLimit(baseLimits.requestsPerHour), + requestsPerDay: this.adaptive.adjustLimit(baseLimits.requestsPerDay), + }; + const now = new Date(); + + const minute = await this.getOrCreateUsage(userId, tier, 'MINUTELY', now); + const hour = await this.getOrCreateUsage(userId, tier, 'HOURLY', now); + const day = await this.getOrCreateUsage(userId, tier, 'DAILY', now); + + return { + userId, + tier, + minuteUsed: minute.count, + minuteLimit: limits.requestsPerMinute, + hourUsed: hour.count, + hourLimit: limits.requestsPerHour, + dayUsed: day.count, + dayLimit: limits.requestsPerDay, + isBlocked: this.isBlockedInWindow(minute, hour, day, now), + nextResetAt: this.earliestReset(minute, hour, day), + }; + } + + /** Reset all usage rows for a user (or a specific period). */ + async resetUser(userId: string, period?: QuotaResetPeriod): Promise { + const where = period ? { userId, period } : { userId }; + await this.usageRepo.delete(where); + this.logger.log(`Quota reset for userId=${userId} period=${period ?? 'ALL'}`); + } + + /** Called by the scheduler — deletes expired windows so they're recreated fresh. */ + async resetExpiredWindows(period: QuotaResetPeriod): Promise { + const result = await this.usageRepo.delete({ + period, + windowEnd: LessThan(new Date()), + }); + const deleted = result.affected ?? 0; + if (deleted > 0) { + this.logger.log(`Reset ${deleted} expired ${period} quota windows`); + } + return deleted; + } + + // ─── Private helpers ────────────────────────────────────────────────────── + + private isBlockedInWindow( + minute: UserQuotaUsage, + hour: UserQuotaUsage, + day: UserQuotaUsage, + now: Date, + ): boolean { + return [minute, hour, day].some((window) => window.isBlocked && window.windowEnd > now); + } + + private async markOverage( + windows: { minute: UserQuotaUsage; hour: UserQuotaUsage; day: UserQuotaUsage }, + within: { withinMinute: boolean; withinHour: boolean; withinDay: boolean }, + ): Promise { + const ids: string[] = []; + if (!within.withinMinute) ids.push(windows.minute.id); + if (!within.withinHour) ids.push(windows.hour.id); + if (!within.withinDay) ids.push(windows.day.id); + + if (ids.length === 0) return; + await this.usageRepo.update({ id: In(ids) }, { isBlocked: true }); + } + + private buildDeniedResult( + minute: UserQuotaUsage, + hour: UserQuotaUsage, + day: UserQuotaUsage, + limits: { requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number }, + now: Date, + ): QuotaCheckResult { + const withinMinute = minute.count < limits.requestsPerMinute; + const withinHour = hour.count < limits.requestsPerHour; + const withinDay = day.count < limits.requestsPerDay; + + const exhausted: Date[] = []; + if (!withinMinute || minute.isBlocked) exhausted.push(minute.windowEnd); + if (!withinHour || hour.isBlocked) exhausted.push(hour.windowEnd); + if (!withinDay || day.isBlocked) exhausted.push(day.windowEnd); + const earliest = exhausted.sort((a, b) => a.getTime() - b.getTime())[0]; + const retryAfter = Math.max(1, Math.ceil((earliest.getTime() - now.getTime()) / 1000)); + + return { + allowed: false, + remaining: { + minute: Math.max(0, limits.requestsPerMinute - minute.count), + hour: Math.max(0, limits.requestsPerHour - hour.count), + day: Math.max(0, limits.requestsPerDay - day.count), + }, + limit: { + minute: limits.requestsPerMinute, + hour: limits.requestsPerHour, + day: limits.requestsPerDay, + }, + retryAfter, + }; + } + + private earliestReset(...windows: UserQuotaUsage[]): Date { + const earliestMs = Math.min(...windows.map((window) => window.windowEnd.getTime())); + return new Date(earliestMs); + } + + private async getOrCreateUsage( + userId: string, + tier: UserTier, + period: QuotaResetPeriod, + now: Date, + ): Promise { + const existing = await this.usageRepo.findOne({ where: { userId, period } }); + + if (existing && existing.windowEnd > now) { + return existing; + } + + if (existing) { + await this.usageRepo.delete({ id: existing.id }); + } + + const { windowStart, windowEnd } = this.computeWindow(period, now); + const usage = this.usageRepo.create({ + userId, + tier, + period, + count: 0, + windowStart, + windowEnd, + isBlocked: false, + }); + return this.usageRepo.save(usage); + } + + private computeWindow( + period: QuotaResetPeriod, + now: Date, + ): { windowStart: Date; windowEnd: Date } { + const windowStart = new Date(now); + const windowEnd = new Date(now); + + if (period === 'MINUTELY') { + windowStart.setSeconds(0, 0); + windowEnd.setMinutes(windowEnd.getMinutes() + 1, 0, -1); + } else if (period === 'HOURLY') { + windowStart.setMinutes(0, 0, 0); + windowEnd.setHours(windowEnd.getHours() + 1, 0, 0, -1); + } else { + windowStart.setHours(0, 0, 0, 0); + windowEnd.setDate(windowEnd.getDate() + 1); + windowEnd.setHours(0, 0, 0, -1); + } + + return { windowStart, windowEnd }; + } +} diff --git a/src/rate-limiting/services/quota.service.ts b/src/rate-limiting/services/quota.service.ts index acbe41fb..daa6a9e2 100644 --- a/src/rate-limiting/services/quota.service.ts +++ b/src/rate-limiting/services/quota.service.ts @@ -1,23 +1,45 @@ import { Injectable } from '@nestjs/common'; -import { QUOTA_LIMITS } from '../rate-limiting.constants'; +import { QUOTA_LIMITS, UserTier } from '../rate-limiting.constants'; +import { QuotaDefinitionService } from './quota-definition.service'; +import { QuotaTrackingService } from './quota-tracking.service'; +import { AdaptiveRateLimitingService } from './adaptive-rate-limiting.service'; -export enum UserTier { - FREE = 'FREE', - PRO = 'PRO', - PREMIUM = 'PREMIUM' -} +export { UserTier }; /** - * Provides quota Management operations. + * Facade service — unified entry point for quota operations. + * Combines definition lookup, tracking, and adaptive adjustment. */ @Injectable() export class QuotaManagementService { - /** - * Retrieves quota For Tier. - * @param tier The tier. - * @returns The operation result. - */ + constructor( + private readonly definitions: QuotaDefinitionService, + private readonly tracking: QuotaTrackingService, + private readonly adaptive: AdaptiveRateLimitingService, + ) {} + + /** Resolve and return the effective quota limits for a user. */ + async getQuotaForUser(userId: string, tier: UserTier) { + const base = await this.definitions.resolveForUser(userId, tier); + return { + requestsPerMinute: this.adaptive.adjustLimit(base.requestsPerMinute), + requestsPerHour: this.adaptive.adjustLimit(base.requestsPerHour), + requestsPerDay: this.adaptive.adjustLimit(base.requestsPerDay), + }; + } + + /** Legacy helper — kept for backwards compat with existing callers. */ getQuotaForTier(tier: UserTier) { - return QUOTA_LIMITS[tier] || QUOTA_LIMITS.DEFAULT; + return QUOTA_LIMITS[tier] ?? QUOTA_LIMITS[UserTier.FREE]; + } + + /** Perform a quota check + increment. Delegates to tracking service. */ + async checkAndConsume(userId: string, tier: UserTier) { + return this.tracking.checkAndIncrement(userId, tier); + } + + /** Fetch live quota status for a user. */ + async getStatus(userId: string, tier: UserTier) { + return this.tracking.getStatus(userId, tier); } } diff --git a/src/search/search.controller.ts b/src/search/search.controller.ts index 82a0e6da..295966b4 100644 --- a/src/search/search.controller.ts +++ b/src/search/search.controller.ts @@ -43,20 +43,22 @@ export class SearchController { @Get('autocomplete') async autocomplete( @Query('q') - query: string): Promise { - return this.searchService.getAutoComplete(query); + query: string, + ): Promise { + return this.searchService.getAutoComplete(query); } @Get('filters') async getFilters(): Promise { - return this.searchService.getAvailableFilters(); + return this.searchService.getAvailableFilters(); } @Get('analytics') async getAnalytics( @Query('days') - days?: string): Promise { - const parsedDays = days ? parseInt(days, 10) : 7; - return this.searchService.getAnalytics(parsedDays); + days?: string, + ): Promise { + const parsedDays = days ? parseInt(days, 10) : 7; + return this.searchService.getAnalytics(parsedDays); } } diff --git a/src/search/search.module.ts b/src/search/search.module.ts index 0689e532..c489527c 100644 --- a/src/search/search.module.ts +++ b/src/search/search.module.ts @@ -10,5 +10,4 @@ import { SearchService } from './search.service'; providers: [SearchService], exports: [SearchService], }) -export class SearchModule { -} +export class SearchModule {} diff --git a/src/search/search.service.ts b/src/search/search.service.ts index 3fb0ba66..2f8471af 100644 --- a/src/search/search.service.ts +++ b/src/search/search.service.ts @@ -26,7 +26,7 @@ export class SearchService { limit: number = SEARCH_CONSTANTS.DEFAULT_PAGE_SIZE, ): Promise { this.logger.log(`Searching for: ${query}`); - + // Return mock data for now to get server running return { results: [], diff --git a/src/security/audit/audit-logging.service.ts b/src/security/audit/audit-logging.service.ts index 5fb82ae7..ebf0dd68 100644 --- a/src/security/audit/audit-logging.service.ts +++ b/src/security/audit/audit-logging.service.ts @@ -5,21 +5,23 @@ import { Injectable, Logger } from '@nestjs/common'; */ @Injectable() export class AuditLoggingService { - private readonly logger = new Logger(AuditLoggingService.name); - log(event: string, data: Record): void { - this.logger.log(JSON.stringify({ - event, - data, - timestamp: new Date().toISOString(), - })); - } - logLogin(userId: string): void { - this.log('USER_LOGIN', { userId }); - } - logDataAccess(userId: string, resource: string): void { - this.log('DATA_ACCESS', { userId, resource }); - } - logDeletion(userId: string, resource: string): void { - this.log('DATA_DELETION', { userId, resource }); - } + private readonly logger = new Logger(AuditLoggingService.name); + log(event: string, data: Record): void { + this.logger.log( + JSON.stringify({ + event, + data, + timestamp: new Date().toISOString(), + }), + ); + } + logLogin(userId: string): void { + this.log('USER_LOGIN', { userId }); + } + logDataAccess(userId: string, resource: string): void { + this.log('DATA_ACCESS', { userId, resource }); + } + logDeletion(userId: string, resource: string): void { + this.log('DATA_DELETION', { userId, resource }); + } } diff --git a/src/security/compliance/compliance.service.ts b/src/security/compliance/compliance.service.ts index c7507432..222a4976 100644 --- a/src/security/compliance/compliance.service.ts +++ b/src/security/compliance/compliance.service.ts @@ -5,28 +5,28 @@ import { Injectable } from '@nestjs/common'; */ @Injectable() export class ComplianceService { - async exportUserData(userId: string): Promise { - // Fetch from all relevant tables - return { - userId, - profile: {}, - files: [], - activityLogs: [], - }; - } - async deleteUserData(_userId: string): Promise { - // Soft delete or anonymize - return { success: true }; - } - async anonymizeData(data: unknown): Promise> { - const base = - typeof data === 'object' && data !== null && !Array.isArray(data) - ? { ...(data as Record) } - : {}; - return { - ...base, - email: 'anonymized@domain.com', - phone: null, - }; - } + async exportUserData(userId: string): Promise { + // Fetch from all relevant tables + return { + userId, + profile: {}, + files: [], + activityLogs: [], + }; + } + async deleteUserData(_userId: string): Promise { + // Soft delete or anonymize + return { success: true }; + } + async anonymizeData(data: unknown): Promise> { + const base = + typeof data === 'object' && data !== null && !Array.isArray(data) + ? { ...(data as Record) } + : {}; + return { + ...base, + email: 'anonymized@domain.com', + phone: null, + }; + } } diff --git a/src/security/security.module.ts b/src/security/security.module.ts index 8f83a415..c6454ff8 100644 --- a/src/security/security.module.ts +++ b/src/security/security.module.ts @@ -21,5 +21,4 @@ import { SecretsModule } from './secrets/secrets.module'; ], exports: [SecurityService, EncryptionService, SecretsModule], }) -export class SecurityModule { -} +export class SecurityModule {} diff --git a/src/security/threats/threat-detection.service.ts b/src/security/threats/threat-detection.service.ts index 18ec0654..0e5605ff 100644 --- a/src/security/threats/threat-detection.service.ts +++ b/src/security/threats/threat-detection.service.ts @@ -5,18 +5,18 @@ import { Injectable, ForbiddenException } from '@nestjs/common'; */ @Injectable() export class ThreatDetectionService { - private failedAttempts = new Map(); - analyzeRequest(ip: string): void { - const attempts = this.failedAttempts.get(ip) || 0; - if (attempts > 10) { - throw new ForbiddenException('Suspicious activity detected'); - } - } - recordFailure(ip: string): void { - const attempts = this.failedAttempts.get(ip) || 0; - this.failedAttempts.set(ip, attempts + 1); - } - reset(ip: string): void { - this.failedAttempts.delete(ip); + private failedAttempts = new Map(); + analyzeRequest(ip: string): void { + const attempts = this.failedAttempts.get(ip) || 0; + if (attempts > 10) { + throw new ForbiddenException('Suspicious activity detected'); } + } + recordFailure(ip: string): void { + const attempts = this.failedAttempts.get(ip) || 0; + this.failedAttempts.set(ip, attempts + 1); + } + reset(ip: string): void { + this.failedAttempts.delete(ip); + } } diff --git a/src/session/session.module.ts b/src/session/session.module.ts index 88776de4..ca2ed7da 100644 --- a/src/session/session.module.ts +++ b/src/session/session.module.ts @@ -21,5 +21,4 @@ import { SessionService } from './session.service'; ], exports: [SESSION_REDIS_CLIENT, SessionService], }) -export class SessionModule { -} +export class SessionModule {} diff --git a/src/sync/cache/cache-invalidation.service.ts b/src/sync/cache/cache-invalidation.service.ts index c46dfbb3..8c784595 100644 --- a/src/sync/cache/cache-invalidation.service.ts +++ b/src/sync/cache/cache-invalidation.service.ts @@ -18,60 +18,61 @@ interface CacheManagerExtended extends Cache { */ @Injectable() export class CacheInvalidationService { - private readonly logger = new Logger(CacheInvalidationService.name); - constructor( + private readonly logger = new Logger(CacheInvalidationService.name); + constructor( @Inject(CACHE_MANAGER) - private cacheManager: Cache, private eventEmitter: EventEmitter2) { } - /** - * Invalidates a specific cache key. - */ - async invalidateKey(key: string): Promise { - this.logger.log(`Invalidating cache key: ${key}`); - await this.cacheManager.del(key); - this.eventEmitter.emit(APP_EVENTS.CACHE_INVALIDATED, { key, type: 'single' }); + private cacheManager: Cache, + private eventEmitter: EventEmitter2, + ) {} + /** + * Invalidates a specific cache key. + */ + async invalidateKey(key: string): Promise { + this.logger.log(`Invalidating cache key: ${key}`); + await this.cacheManager.del(key); + this.eventEmitter.emit(APP_EVENTS.CACHE_INVALIDATED, { key, type: 'single' }); + } + /** + * Invalidates multiple cache keys based on a pattern. + * Note: Standard cache-manager doesn't support pattern deletion easily with all stores, + * so this is a simplified implementation. + */ + async invalidatePattern(pattern: string): Promise { + this.logger.log(`Invalidating cache pattern: ${pattern}`); + // In a production environment with Redis, we'd use 'SCAN' and 'DEL' + // For now, we'll emit an event that other specialized listeners might handle + this.eventEmitter.emit(APP_EVENTS.CACHE_INVALIDATED, { pattern, type: 'pattern' }); + // If the store supports a store-specific method, call it here. + const store = (this.cacheManager as CacheManagerExtended).store; + if (store?.keys) { + const keys = await store.keys(pattern); + const list = Array.isArray(keys) ? keys : []; + if (list.length > 0) { + await Promise.all(list.map((key: string) => this.cacheManager.del(key))); + } } - /** - * Invalidates multiple cache keys based on a pattern. - * Note: Standard cache-manager doesn't support pattern deletion easily with all stores, - * so this is a simplified implementation. - */ - async invalidatePattern(pattern: string): Promise { - this.logger.log(`Invalidating cache pattern: ${pattern}`); - // In a production environment with Redis, we'd use 'SCAN' and 'DEL' - // For now, we'll emit an event that other specialized listeners might handle - this.eventEmitter.emit(APP_EVENTS.CACHE_INVALIDATED, { pattern, type: 'pattern' }); - // If the store supports a store-specific method, call it here. - const store = (this.cacheManager as CacheManagerExtended).store; - if (store?.keys) { - const keys = await store.keys(pattern); - const list = Array.isArray(keys) ? keys : []; - if (list.length > 0) { - await Promise.all(list.map((key: string) => this.cacheManager.del(key))); - } - } - } - /** - * Automatically invalidates cache based on data change events. - */ - async handleDataChange(entity: string, id: string): Promise { - this.logger.log(`Handling data change for ${entity}:${id}`); - const specificKey = `${entity}:${id}`; - const collectionKey = `${entity}:list:*`; - await this.invalidateKey(specificKey); - await this.invalidatePattern(collectionKey); - } - /** - * Purges the entire cache. - */ - async purgeAll(): Promise { - this.logger.warn('Purging entire cache'); - // cache-manager v5+ uses clear() instead of reset() - if (typeof this.cacheManager.clear === 'function') { - await this.cacheManager.clear(); - } - else if (typeof (this.cacheManager as CacheManagerExtended).reset === 'function') { - await (this.cacheManager as CacheManagerExtended).reset!(); - } - this.eventEmitter.emit(APP_EVENTS.CACHE_PURGED, { timestamp: new Date() }); + } + /** + * Automatically invalidates cache based on data change events. + */ + async handleDataChange(entity: string, id: string): Promise { + this.logger.log(`Handling data change for ${entity}:${id}`); + const specificKey = `${entity}:${id}`; + const collectionKey = `${entity}:list:*`; + await this.invalidateKey(specificKey); + await this.invalidatePattern(collectionKey); + } + /** + * Purges the entire cache. + */ + async purgeAll(): Promise { + this.logger.warn('Purging entire cache'); + // cache-manager v5+ uses clear() instead of reset() + if (typeof this.cacheManager.clear === 'function') { + await this.cacheManager.clear(); + } else if (typeof (this.cacheManager as CacheManagerExtended).reset === 'function') { + await (this.cacheManager as CacheManagerExtended).reset!(); } + this.eventEmitter.emit(APP_EVENTS.CACHE_PURGED, { timestamp: new Date() }); + } } diff --git a/src/sync/conflicts/conflict-resolution.service.ts b/src/sync/conflicts/conflict-resolution.service.ts index eba5af96..3c5caad5 100644 --- a/src/sync/conflicts/conflict-resolution.service.ts +++ b/src/sync/conflicts/conflict-resolution.service.ts @@ -1,8 +1,8 @@ import { Injectable, Logger } from '@nestjs/common'; export enum ConflictResolutionStrategy { - LAST_WRITE_WINS = 'LAST_WRITE_WINS', - VERSIONING = 'VERSIONING', - MANUAL_MERGE = 'MANUAL_MERGE' + LAST_WRITE_WINS = 'LAST_WRITE_WINS', + VERSIONING = 'VERSIONING', + MANUAL_MERGE = 'MANUAL_MERGE', } export interface ISyncData { diff --git a/src/sync/sync.module.ts b/src/sync/sync.module.ts index 47675697..fa410e5d 100644 --- a/src/sync/sync.module.ts +++ b/src/sync/sync.module.ts @@ -11,25 +11,24 @@ import { ReplicationService } from './replication/replication.service'; * Registers the sync module. */ @Module({ - imports: [ - BullModule.registerQueue({ - name: QUEUE_NAMES.SYNC_TASKS, - }), - ], - providers: [ - SyncService, - DataConsistencyService, - ConflictResolutionService, - CacheInvalidationService, - ReplicationService, - ], - exports: [ - SyncService, - DataConsistencyService, - ConflictResolutionService, - CacheInvalidationService, - ReplicationService, - ], + imports: [ + BullModule.registerQueue({ + name: QUEUE_NAMES.SYNC_TASKS, + }), + ], + providers: [ + SyncService, + DataConsistencyService, + ConflictResolutionService, + CacheInvalidationService, + ReplicationService, + ], + exports: [ + SyncService, + DataConsistencyService, + ConflictResolutionService, + CacheInvalidationService, + ReplicationService, + ], }) -export class SyncModule { -} +export class SyncModule {} diff --git a/src/tenancy/billing/tenant-billing.service.ts b/src/tenancy/billing/tenant-billing.service.ts index 8978c394..e594e972 100644 --- a/src/tenancy/billing/tenant-billing.service.ts +++ b/src/tenancy/billing/tenant-billing.service.ts @@ -25,37 +25,41 @@ export interface IBillingRecord { */ @Injectable() export class TenantBillingService { - constructor( + constructor( @InjectRepository(TenantBilling) - private readonly billingRepository: Repository, + private readonly billingRepository: Repository, @InjectRepository(Tenant) - private readonly tenantRepository: Repository) { } - /** - * Get billing information for a tenant - */ - async getBillingInfo(tenantId: string): Promise { - const billing = await this.billingRepository.findOne({ where: { tenantId } }); - if (!billing) { - throw new NotFoundException(`Billing info not found for tenant ${tenantId}`); - } - return billing; + private readonly tenantRepository: Repository, + ) {} + /** + * Get billing information for a tenant + */ + async getBillingInfo(tenantId: string): Promise { + const billing = await this.billingRepository.findOne({ where: { tenantId } }); + if (!billing) { + throw new NotFoundException(`Billing info not found for tenant ${tenantId}`); } - /** - * Create billing record for a tenant - */ - async createBillingRecord(tenantId: string, billingCycle: BillingCycle = BillingCycle.MONTHLY): Promise { - const tenant = await this.tenantRepository.findOne({ where: { id: tenantId } }); - if (!tenant) { - throw new NotFoundException(`Tenant ${tenantId} not found`); - } - const billing = this.billingRepository.create({ - tenantId, - billingCycle, - monthlyFee: this.calculateMonthlyFee(tenant.plan), - nextBillingDate: this.calculateNextBillingDate(billingCycle), - }); - return await this.billingRepository.save(billing); + return billing; + } + /** + * Create billing record for a tenant + */ + async createBillingRecord( + tenantId: string, + billingCycle: BillingCycle = BillingCycle.MONTHLY, + ): Promise { + const tenant = await this.tenantRepository.findOne({ where: { id: tenantId } }); + if (!tenant) { + throw new NotFoundException(`Tenant ${tenantId} not found`); } + const billing = this.billingRepository.create({ + tenantId, + billingCycle, + monthlyFee: this.calculateMonthlyFee(tenant.plan), + nextBillingDate: this.calculateNextBillingDate(billingCycle), + }); + return await this.billingRepository.save(billing); + } /** * Update usage metrics diff --git a/src/tenancy/customization/customization.service.ts b/src/tenancy/customization/customization.service.ts index 9e561c43..23fb3c39 100644 --- a/src/tenancy/customization/customization.service.ts +++ b/src/tenancy/customization/customization.service.ts @@ -9,164 +9,180 @@ import { UpdateTenantCustomizationDto } from '../dto/tenant.dto'; */ @Injectable() export class CustomizationService { - constructor( + constructor( @InjectRepository(TenantCustomization) - private readonly customizationRepository: Repository) { } - /** - * Get customization for a tenant - */ - async getCustomization(tenantId: string): Promise { - const customization = await this.customizationRepository.findOne({ where: { tenantId } }); - if (!customization) { - throw new NotFoundException(`Customization not found for tenant ${tenantId}`); - } - return customization; - } - /** - * Create default customization for a tenant - */ - async createDefaultCustomization(tenantId: string): Promise { - const customization = this.customizationRepository.create({ - tenantId, - theme: { - mode: 'light', - colors: {}, - fonts: {}, - spacing: {}, - }, - }); - return await this.customizationRepository.save(customization); - } - /** - * Update tenant customization - */ - async updateCustomization(tenantId: string, updateDto: UpdateTenantCustomizationDto): Promise { - const customization = await this.getCustomization(tenantId); - Object.assign(customization, updateDto); - return await this.customizationRepository.save(customization); - } - /** - * Update logo - */ - async updateLogo(tenantId: string, logoUrl: string): Promise { - const customization = await this.getCustomization(tenantId); - customization.logoUrl = logoUrl; - return await this.customizationRepository.save(customization); - } - /** - * Update theme colors - */ - async updateColors(tenantId: string, colors: { - primary?: string; - secondary?: string; - accent?: string; - }): Promise { - const customization = await this.getCustomization(tenantId); - if (colors.primary) - customization.primaryColor = colors.primary; - if (colors.secondary) - customization.secondaryColor = colors.secondary; - if (colors.accent) - customization.accentColor = colors.accent; - return await this.customizationRepository.save(customization); - } - /** - * Update theme configuration - */ - async updateTheme(tenantId: string, theme: Record): Promise { - const customization = await this.getCustomization(tenantId); - customization.theme = { - ...customization.theme, - ...theme, - }; - return await this.customizationRepository.save(customization); - } - /** - * Update email templates - */ - async updateEmailTemplates(tenantId: string, templates: Record): Promise { - const customization = await this.getCustomization(tenantId); - customization.emailTemplates = { - ...customization.emailTemplates, - ...templates, - }; - return await this.customizationRepository.save(customization); - } - /** - * Set custom domain - */ - async setCustomDomain(tenantId: string, domain: string): Promise { - const customization = await this.getCustomization(tenantId); - customization.customDomain = domain; - customization.customDomainVerified = false; - return await this.customizationRepository.save(customization); - } - /** - * Verify custom domain - */ - async verifyCustomDomain(tenantId: string): Promise { - const customization = await this.getCustomization(tenantId); - // TODO: Implement actual domain verification logic - customization.customDomainVerified = true; - return await this.customizationRepository.save(customization); - } - /** - * Update social links - */ - async updateSocialLinks(tenantId: string, socialLinks: Record): Promise { - const customization = await this.getCustomization(tenantId); - customization.socialLinks = { - ...customization.socialLinks, - ...socialLinks, - }; - return await this.customizationRepository.save(customization); - } - /** - * Update landing page configuration - */ - async updateLandingPage(tenantId: string, config: Record): Promise { - const customization = await this.getCustomization(tenantId); - customization.landingPageConfig = { - ...customization.landingPageConfig, - ...config, - }; - return await this.customizationRepository.save(customization); - } - /** - * Add custom CSS - */ - async addCustomCss(tenantId: string, css: string): Promise { - const customization = await this.getCustomization(tenantId); - customization.customCss = css; - return await this.customizationRepository.save(customization); - } - /** - * Add custom JavaScript - */ - async addCustomJs(tenantId: string, js: string): Promise { - const customization = await this.getCustomization(tenantId); - customization.customJs = js; - return await this.customizationRepository.save(customization); - } - /** - * Reset customization to defaults - */ - async resetToDefaults(tenantId: string): Promise { - const customization = await this.getCustomization(tenantId); - customization.logoUrl = null; - customization.faviconUrl = null; - customization.primaryColor = null; - customization.secondaryColor = null; - customization.accentColor = null; - customization.fontFamily = null; - customization.customCss = null; - customization.customJs = null; - customization.theme = { - mode: 'light', - colors: {}, - fonts: {}, - spacing: {}, - }; - return await this.customizationRepository.save(customization); + private readonly customizationRepository: Repository, + ) {} + /** + * Get customization for a tenant + */ + async getCustomization(tenantId: string): Promise { + const customization = await this.customizationRepository.findOne({ where: { tenantId } }); + if (!customization) { + throw new NotFoundException(`Customization not found for tenant ${tenantId}`); } + return customization; + } + /** + * Create default customization for a tenant + */ + async createDefaultCustomization(tenantId: string): Promise { + const customization = this.customizationRepository.create({ + tenantId, + theme: { + mode: 'light', + colors: {}, + fonts: {}, + spacing: {}, + }, + }); + return await this.customizationRepository.save(customization); + } + /** + * Update tenant customization + */ + async updateCustomization( + tenantId: string, + updateDto: UpdateTenantCustomizationDto, + ): Promise { + const customization = await this.getCustomization(tenantId); + Object.assign(customization, updateDto); + return await this.customizationRepository.save(customization); + } + /** + * Update logo + */ + async updateLogo(tenantId: string, logoUrl: string): Promise { + const customization = await this.getCustomization(tenantId); + customization.logoUrl = logoUrl; + return await this.customizationRepository.save(customization); + } + /** + * Update theme colors + */ + async updateColors( + tenantId: string, + colors: { + primary?: string; + secondary?: string; + accent?: string; + }, + ): Promise { + const customization = await this.getCustomization(tenantId); + if (colors.primary) customization.primaryColor = colors.primary; + if (colors.secondary) customization.secondaryColor = colors.secondary; + if (colors.accent) customization.accentColor = colors.accent; + return await this.customizationRepository.save(customization); + } + /** + * Update theme configuration + */ + async updateTheme( + tenantId: string, + theme: Record, + ): Promise { + const customization = await this.getCustomization(tenantId); + customization.theme = { + ...customization.theme, + ...theme, + }; + return await this.customizationRepository.save(customization); + } + /** + * Update email templates + */ + async updateEmailTemplates( + tenantId: string, + templates: Record, + ): Promise { + const customization = await this.getCustomization(tenantId); + customization.emailTemplates = { + ...customization.emailTemplates, + ...templates, + }; + return await this.customizationRepository.save(customization); + } + /** + * Set custom domain + */ + async setCustomDomain(tenantId: string, domain: string): Promise { + const customization = await this.getCustomization(tenantId); + customization.customDomain = domain; + customization.customDomainVerified = false; + return await this.customizationRepository.save(customization); + } + /** + * Verify custom domain + */ + async verifyCustomDomain(tenantId: string): Promise { + const customization = await this.getCustomization(tenantId); + // TODO: Implement actual domain verification logic + customization.customDomainVerified = true; + return await this.customizationRepository.save(customization); + } + /** + * Update social links + */ + async updateSocialLinks( + tenantId: string, + socialLinks: Record, + ): Promise { + const customization = await this.getCustomization(tenantId); + customization.socialLinks = { + ...customization.socialLinks, + ...socialLinks, + }; + return await this.customizationRepository.save(customization); + } + /** + * Update landing page configuration + */ + async updateLandingPage( + tenantId: string, + config: Record, + ): Promise { + const customization = await this.getCustomization(tenantId); + customization.landingPageConfig = { + ...customization.landingPageConfig, + ...config, + }; + return await this.customizationRepository.save(customization); + } + /** + * Add custom CSS + */ + async addCustomCss(tenantId: string, css: string): Promise { + const customization = await this.getCustomization(tenantId); + customization.customCss = css; + return await this.customizationRepository.save(customization); + } + /** + * Add custom JavaScript + */ + async addCustomJs(tenantId: string, js: string): Promise { + const customization = await this.getCustomization(tenantId); + customization.customJs = js; + return await this.customizationRepository.save(customization); + } + /** + * Reset customization to defaults + */ + async resetToDefaults(tenantId: string): Promise { + const customization = await this.getCustomization(tenantId); + customization.logoUrl = null; + customization.faviconUrl = null; + customization.primaryColor = null; + customization.secondaryColor = null; + customization.accentColor = null; + customization.fontFamily = null; + customization.customCss = null; + customization.customJs = null; + customization.theme = { + mode: 'light', + colors: {}, + fonts: {}, + spacing: {}, + }; + return await this.customizationRepository.save(customization); + } } diff --git a/src/tenancy/decorators/current-tenant.decorator.ts b/src/tenancy/decorators/current-tenant.decorator.ts index 28e92544..7800300d 100644 --- a/src/tenancy/decorators/current-tenant.decorator.ts +++ b/src/tenancy/decorators/current-tenant.decorator.ts @@ -1,5 +1,5 @@ import { createParamDecorator, ExecutionContext } from '@nestjs/common'; export const CurrentTenant = createParamDecorator((data: unknown, ctx: ExecutionContext) => { - const request = ctx.switchToHttp().getRequest(); - return request.tenant; + const request = ctx.switchToHttp().getRequest(); + return request.tenant; }); diff --git a/src/tenancy/dto/tenant.dto.ts b/src/tenancy/dto/tenant.dto.ts index 72891f47..7c25af75 100644 --- a/src/tenancy/dto/tenant.dto.ts +++ b/src/tenancy/dto/tenant.dto.ts @@ -1,4 +1,15 @@ -import { IsString, IsOptional, IsEmail, IsEnum, IsInt, IsObject, Min, IsNotEmpty, IsNumber, IsUrl, } from 'class-validator'; +import { + IsString, + IsOptional, + IsEmail, + IsEnum, + IsInt, + IsObject, + Min, + IsNotEmpty, + IsNumber, + IsUrl, +} from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { TenantStatus, TenantPlan } from '../entities/tenant.entity'; @@ -6,216 +17,216 @@ import { TenantStatus, TenantPlan } from '../entities/tenant.entity'; * Defines the create Tenant payload. */ export class CreateTenantDto { - @ApiProperty({ example: 'acme-corp' }) - @IsString() - @IsNotEmpty() - slug: string; - @ApiProperty({ example: 'Acme Corporation' }) - @IsString() - @IsNotEmpty() - name: string; - @ApiPropertyOptional({ example: 'Leading provider of innovative solutions' }) - @IsOptional() - @IsString() - description?: string; - @ApiPropertyOptional({ example: 'acme.com' }) - @IsOptional() - @IsString() - domain?: string; - @ApiPropertyOptional({ enum: TenantPlan, default: TenantPlan.FREE }) - @IsOptional() - @IsEnum(TenantPlan) - plan?: TenantPlan; - @ApiPropertyOptional({ example: 'owner@acme.com' }) - @IsOptional() - @IsEmail() - @IsString() - ownerEmail?: string; - @ApiPropertyOptional({ example: 'contact@acme.com' }) - @IsOptional() - @IsEmail() - @IsString() - contactEmail?: string; - @ApiPropertyOptional({ example: '+1234567890' }) - @IsOptional() - @IsString() - contactPhone?: string; - @ApiPropertyOptional({ example: 100 }) - @IsOptional() - @IsInt() - @Min(0) - @IsNumber() - userLimit?: number; - @ApiPropertyOptional({ example: 10000 }) - @IsOptional() - @IsInt() - @Min(0) - @IsNumber() - storageLimit?: number; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - metadata?: Record; + @ApiProperty({ example: 'acme-corp' }) + @IsString() + @IsNotEmpty() + slug: string; + @ApiProperty({ example: 'Acme Corporation' }) + @IsString() + @IsNotEmpty() + name: string; + @ApiPropertyOptional({ example: 'Leading provider of innovative solutions' }) + @IsOptional() + @IsString() + description?: string; + @ApiPropertyOptional({ example: 'acme.com' }) + @IsOptional() + @IsString() + domain?: string; + @ApiPropertyOptional({ enum: TenantPlan, default: TenantPlan.FREE }) + @IsOptional() + @IsEnum(TenantPlan) + plan?: TenantPlan; + @ApiPropertyOptional({ example: 'owner@acme.com' }) + @IsOptional() + @IsEmail() + @IsString() + ownerEmail?: string; + @ApiPropertyOptional({ example: 'contact@acme.com' }) + @IsOptional() + @IsEmail() + @IsString() + contactEmail?: string; + @ApiPropertyOptional({ example: '+1234567890' }) + @IsOptional() + @IsString() + contactPhone?: string; + @ApiPropertyOptional({ example: 100 }) + @IsOptional() + @IsInt() + @Min(0) + @IsNumber() + userLimit?: number; + @ApiPropertyOptional({ example: 10000 }) + @IsOptional() + @IsInt() + @Min(0) + @IsNumber() + storageLimit?: number; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + metadata?: Record; } /** * Defines the update Tenant payload. */ export class UpdateTenantDto { - @ApiPropertyOptional({ example: 'Acme Corporation' }) - @IsOptional() - @IsString() - name?: string; - @ApiPropertyOptional({ example: 'Leading provider of innovative solutions' }) - @IsOptional() - @IsString() - description?: string; - @ApiPropertyOptional({ example: 'acme.com' }) - @IsOptional() - @IsString() - domain?: string; - @ApiPropertyOptional({ enum: TenantStatus }) - @IsOptional() - @IsEnum(TenantStatus) - status?: TenantStatus; - @ApiPropertyOptional({ enum: TenantPlan }) - @IsOptional() - @IsEnum(TenantPlan) - plan?: TenantPlan; - @ApiPropertyOptional({ example: 'contact@acme.com' }) - @IsOptional() - @IsEmail() - @IsString() - contactEmail?: string; - @ApiPropertyOptional({ example: '+1234567890' }) - @IsOptional() - @IsString() - contactPhone?: string; - @ApiPropertyOptional({ example: 100 }) - @IsOptional() - @IsInt() - @Min(0) - @IsNumber() - userLimit?: number; - @ApiPropertyOptional({ example: 10000 }) - @IsOptional() - @IsInt() - @Min(0) - @IsNumber() - storageLimit?: number; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - metadata?: Record; + @ApiPropertyOptional({ example: 'Acme Corporation' }) + @IsOptional() + @IsString() + name?: string; + @ApiPropertyOptional({ example: 'Leading provider of innovative solutions' }) + @IsOptional() + @IsString() + description?: string; + @ApiPropertyOptional({ example: 'acme.com' }) + @IsOptional() + @IsString() + domain?: string; + @ApiPropertyOptional({ enum: TenantStatus }) + @IsOptional() + @IsEnum(TenantStatus) + status?: TenantStatus; + @ApiPropertyOptional({ enum: TenantPlan }) + @IsOptional() + @IsEnum(TenantPlan) + plan?: TenantPlan; + @ApiPropertyOptional({ example: 'contact@acme.com' }) + @IsOptional() + @IsEmail() + @IsString() + contactEmail?: string; + @ApiPropertyOptional({ example: '+1234567890' }) + @IsOptional() + @IsString() + contactPhone?: string; + @ApiPropertyOptional({ example: 100 }) + @IsOptional() + @IsInt() + @Min(0) + @IsNumber() + userLimit?: number; + @ApiPropertyOptional({ example: 10000 }) + @IsOptional() + @IsInt() + @Min(0) + @IsNumber() + storageLimit?: number; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + metadata?: Record; } /** * Defines the update Tenant Config payload. */ export class UpdateTenantConfigDto { - @ApiPropertyOptional({ example: 'en' }) - @IsOptional() - @IsString() - defaultLanguage?: string; - @ApiPropertyOptional({ example: 'UTC' }) - @IsOptional() - @IsString() - timezone?: string; - @ApiPropertyOptional({ example: 'USD' }) - @IsOptional() - @IsString() - currency?: string; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - features?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - notifications?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - security?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - integrations?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - customSettings?: Record; + @ApiPropertyOptional({ example: 'en' }) + @IsOptional() + @IsString() + defaultLanguage?: string; + @ApiPropertyOptional({ example: 'UTC' }) + @IsOptional() + @IsString() + timezone?: string; + @ApiPropertyOptional({ example: 'USD' }) + @IsOptional() + @IsString() + currency?: string; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + features?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + notifications?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + security?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + integrations?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + customSettings?: Record; } /** * Defines the update Tenant Customization payload. */ export class UpdateTenantCustomizationDto { - @ApiPropertyOptional({ example: 'https://example.com/logo.png' }) - @IsOptional() - @IsString() - @IsUrl() - logoUrl?: string; - @ApiPropertyOptional({ example: 'https://example.com/favicon.ico' }) - @IsOptional() - @IsString() - @IsUrl() - faviconUrl?: string; - @ApiPropertyOptional({ example: '#007bff' }) - @IsOptional() - @IsString() - primaryColor?: string; - @ApiPropertyOptional({ example: '#6c757d' }) - @IsOptional() - @IsString() - secondaryColor?: string; - @ApiPropertyOptional({ example: '#28a745' }) - @IsOptional() - @IsString() - accentColor?: string; - @ApiPropertyOptional({ example: 'Roboto, sans-serif' }) - @IsOptional() - @IsString() - fontFamily?: string; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - theme?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsString() - customCss?: string; - @ApiPropertyOptional() - @IsOptional() - @IsString() - customJs?: string; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsEmail() - @IsString() - emailTemplates?: Record; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsString() - landingPageConfig?: Record; - @ApiPropertyOptional({ example: 'custom.acme.com' }) - @IsOptional() - @IsString() - customDomain?: string; - @ApiPropertyOptional() - @IsOptional() - @IsObject() - @IsUrl() - @IsString() - socialLinks?: Record; + @ApiPropertyOptional({ example: 'https://example.com/logo.png' }) + @IsOptional() + @IsString() + @IsUrl() + logoUrl?: string; + @ApiPropertyOptional({ example: 'https://example.com/favicon.ico' }) + @IsOptional() + @IsString() + @IsUrl() + faviconUrl?: string; + @ApiPropertyOptional({ example: '#007bff' }) + @IsOptional() + @IsString() + primaryColor?: string; + @ApiPropertyOptional({ example: '#6c757d' }) + @IsOptional() + @IsString() + secondaryColor?: string; + @ApiPropertyOptional({ example: '#28a745' }) + @IsOptional() + @IsString() + accentColor?: string; + @ApiPropertyOptional({ example: 'Roboto, sans-serif' }) + @IsOptional() + @IsString() + fontFamily?: string; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + theme?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsString() + customCss?: string; + @ApiPropertyOptional() + @IsOptional() + @IsString() + customJs?: string; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsEmail() + @IsString() + emailTemplates?: Record; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsString() + landingPageConfig?: Record; + @ApiPropertyOptional({ example: 'custom.acme.com' }) + @IsOptional() + @IsString() + customDomain?: string; + @ApiPropertyOptional() + @IsOptional() + @IsObject() + @IsUrl() + @IsString() + socialLinks?: Record; } diff --git a/src/tenancy/entities/tenant-billing.entity.ts b/src/tenancy/entities/tenant-billing.entity.ts index 72f97b30..8e8c3f5d 100644 --- a/src/tenancy/entities/tenant-billing.entity.ts +++ b/src/tenancy/entities/tenant-billing.entity.ts @@ -12,9 +12,9 @@ import { } from 'typeorm'; import { Tenant } from './tenant.entity'; export enum BillingCycle { - MONTHLY = 'monthly', - QUARTERLY = 'quarterly', - YEARLY = 'yearly' + MONTHLY = 'monthly', + QUARTERLY = 'quarterly', + YEARLY = 'yearly', } /** diff --git a/src/tenancy/entities/tenant.entity.ts b/src/tenancy/entities/tenant.entity.ts index 3792991c..ac8bd747 100644 --- a/src/tenancy/entities/tenant.entity.ts +++ b/src/tenancy/entities/tenant.entity.ts @@ -10,16 +10,16 @@ import { } from 'typeorm'; export enum TenantStatus { - ACTIVE = 'active', - SUSPENDED = 'suspended', - INACTIVE = 'inactive', - TRIAL = 'trial' + ACTIVE = 'active', + SUSPENDED = 'suspended', + INACTIVE = 'inactive', + TRIAL = 'trial', } export enum TenantPlan { - FREE = 'free', - BASIC = 'basic', - PROFESSIONAL = 'professional', - ENTERPRISE = 'enterprise' + FREE = 'free', + BASIC = 'basic', + PROFESSIONAL = 'professional', + ENTERPRISE = 'enterprise', } /** diff --git a/src/tenancy/isolation/isolation.service.ts b/src/tenancy/isolation/isolation.service.ts index 48949125..c9416d5c 100644 --- a/src/tenancy/isolation/isolation.service.ts +++ b/src/tenancy/isolation/isolation.service.ts @@ -8,127 +8,126 @@ import { Tenant, TenantStatus } from '../entities/tenant.entity'; */ @Injectable({ scope: Scope.REQUEST }) export class IsolationService { - private currentTenantId: string | null = null; - private currentTenant: Tenant | null = null; - constructor( + private currentTenantId: string | null = null; + private currentTenant: Tenant | null = null; + constructor( @InjectRepository(Tenant) - private readonly tenantRepository: Repository) { } - /** - * Set the current tenant context - */ - async setTenant(tenantId: string): Promise { - const tenant = await this.tenantRepository.findOne({ where: { id: tenantId } }); - if (!tenant) { - throw new NotFoundException(`Tenant with ID ${tenantId} not found`); - } - this.currentTenantId = tenantId; - this.currentTenant = tenant; + private readonly tenantRepository: Repository, + ) {} + /** + * Set the current tenant context + */ + async setTenant(tenantId: string): Promise { + const tenant = await this.tenantRepository.findOne({ where: { id: tenantId } }); + if (!tenant) { + throw new NotFoundException(`Tenant with ID ${tenantId} not found`); } - /** - * Set tenant by slug - */ - async setTenantBySlug(slug: string): Promise { - const tenant = await this.tenantRepository.findOne({ where: { slug } }); - if (!tenant) { - throw new NotFoundException(`Tenant with slug ${slug} not found`); - } - this.currentTenantId = tenant.id; - this.currentTenant = tenant; + this.currentTenantId = tenantId; + this.currentTenant = tenant; + } + /** + * Set tenant by slug + */ + async setTenantBySlug(slug: string): Promise { + const tenant = await this.tenantRepository.findOne({ where: { slug } }); + if (!tenant) { + throw new NotFoundException(`Tenant with slug ${slug} not found`); } - /** - * Set tenant by domain - */ - async setTenantByDomain(domain: string): Promise { - const tenant = await this.tenantRepository.findOne({ where: { domain } }); - if (!tenant) { - throw new NotFoundException(`Tenant with domain ${domain} not found`); - } - this.currentTenantId = tenant.id; - this.currentTenant = tenant; + this.currentTenantId = tenant.id; + this.currentTenant = tenant; + } + /** + * Set tenant by domain + */ + async setTenantByDomain(domain: string): Promise { + const tenant = await this.tenantRepository.findOne({ where: { domain } }); + if (!tenant) { + throw new NotFoundException(`Tenant with domain ${domain} not found`); } - /** - * Get the current tenant ID - */ - getTenantId(): string | null { - return this.currentTenantId; + this.currentTenantId = tenant.id; + this.currentTenant = tenant; + } + /** + * Get the current tenant ID + */ + getTenantId(): string | null { + return this.currentTenantId; + } + /** + * Get the current tenant + */ + getTenant(): Tenant | null { + return this.currentTenant; + } + /** + * Check if tenant context is set + */ + hasTenantContext(): boolean { + return this.currentTenantId !== null; + } + /** + * Clear tenant context + */ + clearTenant(): void { + this.currentTenantId = null; + this.currentTenant = null; + } + /** + * Ensure tenant context is set, throw error if not + */ + ensureTenantContext(): void { + if (!this.hasTenantContext()) { + throw new Error('Tenant context is not set'); } - /** - * Get the current tenant - */ - getTenant(): Tenant | null { - return this.currentTenant; + } + /** + * Add tenant filter to query builder + */ + applyTenantFilter( + queryBuilder: SelectQueryBuilder, + entityAlias: string, + ): SelectQueryBuilder { + if (!this.currentTenantId) { + throw new Error('Cannot apply tenant filter without tenant context'); } - /** - * Check if tenant context is set - */ - hasTenantContext(): boolean { - return this.currentTenantId !== null; - } - /** - * Clear tenant context - */ - clearTenant(): void { - this.currentTenantId = null; - this.currentTenant = null; - } - /** - * Ensure tenant context is set, throw error if not - */ - ensureTenantContext(): void { - if (!this.hasTenantContext()) { - throw new Error('Tenant context is not set'); - } - } - /** - * Add tenant filter to query builder - */ - applyTenantFilter( - queryBuilder: SelectQueryBuilder, - entityAlias: string, - ): SelectQueryBuilder { - if (!this.currentTenantId) { - throw new Error('Cannot apply tenant filter without tenant context'); - } - return queryBuilder.andWhere(`${entityAlias}.tenantId = :tenantId`, { - tenantId: this.currentTenantId, - }); - } - /** - * Check if tenant is active - */ - isActiveTenant(): boolean { - return this.currentTenant?.status === TenantStatus.ACTIVE; - } - /** - * Check if tenant is in trial - */ - isTrialTenant(): boolean { - return this.currentTenant?.status === TenantStatus.TRIAL; - } - /** - * Check if tenant has reached user limit - */ - hasReachedUserLimit(): boolean { - if (!this.currentTenant) - return false; - return this.currentTenant.currentUserCount >= this.currentTenant.userLimit; - } - /** - * Check if tenant has reached storage limit - */ - hasReachedStorageLimit(): boolean { - if (!this.currentTenant) - return false; - return this.currentTenant.currentStorageUsage >= this.currentTenant.storageLimit; - } - /** - * Get tenant feature flags - */ - async getTenantFeatures(): Promise> { - if (!this.currentTenant) { - return {}; - } - // This would typically fetch from TenantConfig - return this.currentTenant.metadata?.features || {}; + return queryBuilder.andWhere(`${entityAlias}.tenantId = :tenantId`, { + tenantId: this.currentTenantId, + }); + } + /** + * Check if tenant is active + */ + isActiveTenant(): boolean { + return this.currentTenant?.status === TenantStatus.ACTIVE; + } + /** + * Check if tenant is in trial + */ + isTrialTenant(): boolean { + return this.currentTenant?.status === TenantStatus.TRIAL; + } + /** + * Check if tenant has reached user limit + */ + hasReachedUserLimit(): boolean { + if (!this.currentTenant) return false; + return this.currentTenant.currentUserCount >= this.currentTenant.userLimit; + } + /** + * Check if tenant has reached storage limit + */ + hasReachedStorageLimit(): boolean { + if (!this.currentTenant) return false; + return this.currentTenant.currentStorageUsage >= this.currentTenant.storageLimit; + } + /** + * Get tenant feature flags + */ + async getTenantFeatures(): Promise> { + if (!this.currentTenant) { + return {}; } + // This would typically fetch from TenantConfig + return this.currentTenant.metadata?.features || {}; + } } diff --git a/src/tenancy/tenancy.controller.ts b/src/tenancy/tenancy.controller.ts index f44c2a8b..3968c04c 100644 --- a/src/tenancy/tenancy.controller.ts +++ b/src/tenancy/tenancy.controller.ts @@ -1,10 +1,25 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards, } from '@nestjs/common'; +import { + Controller, + Get, + Post, + Body, + Patch, + Param, + Delete, + Query, + UseGuards, +} from '@nestjs/common'; import { ApiBearerAuth, ApiTags, ApiOperation, ApiQuery } from '@nestjs/swagger'; import { TenancyService } from './tenancy.service'; import { TenantAdminService } from './admin/tenant-admin.service'; import { TenantBillingService } from './billing/tenant-billing.service'; import { CustomizationService } from './customization/customization.service'; -import { CreateTenantDto, UpdateTenantDto, UpdateTenantConfigDto, UpdateTenantCustomizationDto, } from './dto/tenant.dto'; +import { + CreateTenantDto, + UpdateTenantDto, + UpdateTenantConfigDto, + UpdateTenantCustomizationDto, +} from './dto/tenant.dto'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RolesGuard } from '../auth/guards/roles.guard'; import { Roles } from '../auth/decorators/roles.decorator'; diff --git a/src/tenancy/tenancy.module.ts b/src/tenancy/tenancy.module.ts index bae0589f..d69b880b 100644 --- a/src/tenancy/tenancy.module.ts +++ b/src/tenancy/tenancy.module.ts @@ -44,5 +44,4 @@ import { TenantAccessValidationGuard } from '../middleware/tenant/tenant-access- TenantAccessValidationGuard, ], }) -export class TenancyModule { -} +export class TenancyModule {} diff --git a/src/tenancy/tenancy.service.ts b/src/tenancy/tenancy.service.ts index 0b744be5..3183041b 100644 --- a/src/tenancy/tenancy.service.ts +++ b/src/tenancy/tenancy.service.ts @@ -125,7 +125,10 @@ export class TenancyService { return config; } - async updateConfig(tenantId: string, updateConfigDto: UpdateTenantConfigDto): Promise { + async updateConfig( + tenantId: string, + updateConfigDto: UpdateTenantConfigDto, + ): Promise { const config = await this.getConfig(tenantId); Object.assign(config, updateConfigDto); return await this.configRepository.save(config); @@ -220,8 +223,7 @@ export class TenancyService { if (req.tenant?.id) return req.tenant.id; - const domain = - (req.headers?.['x-tenant-domain'] as string | undefined) || req.hostname; + const domain = (req.headers?.['x-tenant-domain'] as string | undefined) || req.hostname; if (domain) { const tenant = await this.tenantRepository.findOne({ where: { domain } }); if (tenant) return tenant.id; diff --git a/src/users/dto/get-users.dto.ts b/src/users/dto/get-users.dto.ts index 38aad083..2a0328bb 100644 --- a/src/users/dto/get-users.dto.ts +++ b/src/users/dto/get-users.dto.ts @@ -5,10 +5,10 @@ import { PaginationQueryDto } from '../../common/dto/pagination.dto'; * Defines the get Users payload. */ export class GetUsersDto extends PaginationQueryDto { - @IsOptional() - @IsString() - status?: string; - @IsOptional() - @IsString() - role?: string; + @IsOptional() + @IsString() + status?: string; + @IsOptional() + @IsString() + role?: string; } diff --git a/src/users/entities/user.entity.ts b/src/users/entities/user.entity.ts index 1bd0a7ce..c84b7772 100644 --- a/src/users/entities/user.entity.ts +++ b/src/users/entities/user.entity.ts @@ -12,14 +12,14 @@ import { import { Course } from '../../courses/entities/course.entity'; import { Enrollment } from '../../courses/entities/enrollment.entity'; export enum UserRole { - STUDENT = 'student', - TEACHER = 'teacher', - ADMIN = 'admin' + STUDENT = 'student', + TEACHER = 'teacher', + ADMIN = 'admin', } export enum UserStatus { - ACTIVE = 'active', - INACTIVE = 'inactive', - SUSPENDED = 'suspended' + ACTIVE = 'active', + INACTIVE = 'inactive', + SUSPENDED = 'suspended', } /** diff --git a/src/workers/health/worker-health-check.service.ts b/src/workers/health/worker-health-check.service.ts index 60a01a77..a987af63 100644 --- a/src/workers/health/worker-health-check.service.ts +++ b/src/workers/health/worker-health-check.service.ts @@ -93,10 +93,7 @@ export class WorkerHealthCheckService { /** * Generate alerts based on health data */ - private generateAlerts( - healthChecks: IWorkerHealthCheck[], - metrics: IWorkerMetrics[], - ): string[] { + private generateAlerts(healthChecks: IWorkerHealthCheck[], metrics: IWorkerMetrics[]): string[] { const alerts: string[] = []; // Check for unhealthy workers @@ -113,9 +110,7 @@ export class WorkerHealthCheckService { return failureRate > 0.2; }); if (highFailureWorkers.length > 0) { - alerts.push( - `WARNING: ${highFailureWorkers.length} worker(s) with high failure rate (>20%)`, - ); + alerts.push(`WARNING: ${highFailureWorkers.length} worker(s) with high failure rate (>20%)`); } // Check memory usage @@ -184,8 +179,10 @@ export class WorkerHealthCheckService { : 0; const avgFailureRate = metrics.length > 0 - ? metrics.reduce((sum, m) => (m.jobsProcessed > 0 ? m.jobsFailed / m.jobsProcessed : 0), 0) / - metrics.length + ? metrics.reduce( + (sum, m) => (m.jobsProcessed > 0 ? m.jobsFailed / m.jobsProcessed : 0), + 0, + ) / metrics.length : 0; // Check for anomalies diff --git a/src/workers/orchestration/worker-orchestration.service.ts b/src/workers/orchestration/worker-orchestration.service.ts index 4953bdb3..58c4f25f 100644 --- a/src/workers/orchestration/worker-orchestration.service.ts +++ b/src/workers/orchestration/worker-orchestration.service.ts @@ -1,7 +1,11 @@ import { Injectable, Logger, OnModuleInit, OnModuleDestroy } from '@nestjs/common'; import { Job } from 'bull'; import { BaseWorker } from '../base/base.worker'; -import { IWorkerPoolConfig, IWorkerHealthCheck, IWorkerMetrics } from '../interfaces/worker.interfaces'; +import { + IWorkerPoolConfig, + IWorkerHealthCheck, + IWorkerMetrics, +} from '../interfaces/worker.interfaces'; import { EmailWorker, MediaProcessingWorker, @@ -141,10 +145,7 @@ export class WorkerOrchestrationService implements OnModuleInit, OnModuleDestroy /** * Initialize worker pool for a specific worker type */ - private async initializeWorkerPool( - workerType: string, - config: IWorkerPoolConfig, - ): Promise { + private async initializeWorkerPool(workerType: string, config: IWorkerPoolConfig): Promise { const workerClass = this.workerRegistry.get(workerType); if (!workerClass) { throw new Error(`Unknown worker type: ${workerType}`); @@ -339,7 +340,9 @@ export class WorkerOrchestrationService implements OnModuleInit, OnModuleDestroy for (const worker of workersToRemove) { this.activeWorkers.delete(worker.getId()); } - this.logger.log(`Scaled down ${workerType} workers from ${currentCount} to ${newWorkerCount}`); + this.logger.log( + `Scaled down ${workerType} workers from ${currentCount} to ${newWorkerCount}`, + ); } } diff --git a/src/workers/processors/backup-processing.worker.ts b/src/workers/processors/backup-processing.worker.ts index 837bed44..96fe4eee 100644 --- a/src/workers/processors/backup-processing.worker.ts +++ b/src/workers/processors/backup-processing.worker.ts @@ -39,20 +39,16 @@ export class BackupProcessingWorker extends BaseWorker { }); break; case 'incremental': - result = await this.performIncrementalBackup( - job, - targetDatabase, - destination, - { compression, encryption }, - ); + result = await this.performIncrementalBackup(job, targetDatabase, destination, { + compression, + encryption, + }); break; case 'differential': - result = await this.performDifferentialBackup( - job, - targetDatabase, - destination, - { compression, encryption }, - ); + result = await this.performDifferentialBackup(job, targetDatabase, destination, { + compression, + encryption, + }); break; case 'restore': result = await this.restoreFromBackup(job, targetDatabase, destination); @@ -162,11 +158,7 @@ export class BackupProcessingWorker extends BaseWorker { /** * Restore from backup */ - private async restoreFromBackup( - job: Job, - database: string, - source: string, - ): Promise { + private async restoreFromBackup(job: Job, database: string, source: string): Promise { await job.progress(30); this.logger.log(`Restoring ${database} from backup at ${source}`); diff --git a/src/workers/processors/data-sync.worker.ts b/src/workers/processors/data-sync.worker.ts index d4e59118..08c081b4 100644 --- a/src/workers/processors/data-sync.worker.ts +++ b/src/workers/processors/data-sync.worker.ts @@ -28,9 +28,7 @@ export class DataSyncWorker extends BaseWorker { await job.progress(30); try { - this.logger.log( - `Starting ${syncType} sync from ${source} to ${destination || 'local'}`, - ); + this.logger.log(`Starting ${syncType} sync from ${source} to ${destination || 'local'}`); let result; switch (syncType.toLowerCase()) { @@ -58,11 +56,7 @@ export class DataSyncWorker extends BaseWorker { /** * Perform data consistency check */ - private async performConsistencyCheck( - job: Job, - source: string, - filters?: any, - ): Promise { + private async performConsistencyCheck(job: Job, source: string, filters?: any): Promise { await job.progress(40); this.logger.log(`Checking data consistency in ${source}`); @@ -113,11 +107,7 @@ export class DataSyncWorker extends BaseWorker { /** * Reconcile data between systems */ - private async reconcileData( - job: Job, - source: string, - destination: string, - ): Promise { + private async reconcileData(job: Job, source: string, destination: string): Promise { await job.progress(40); this.logger.log(`Reconciling data between ${source} and ${destination}`); diff --git a/src/workers/processors/subscriptions.worker.ts b/src/workers/processors/subscriptions.worker.ts index e755b31b..0896212d 100644 --- a/src/workers/processors/subscriptions.worker.ts +++ b/src/workers/processors/subscriptions.worker.ts @@ -92,11 +92,7 @@ export class SubscriptionsWorker extends BaseWorker { /** * Renew subscription */ - private async renewSubscription( - job: Job, - subscriptionId: string, - metadata?: any, - ): Promise { + private async renewSubscription(job: Job, subscriptionId: string, metadata?: any): Promise { await job.progress(40); this.logger.log(`Renewing subscription ${subscriptionId}`); @@ -118,11 +114,7 @@ export class SubscriptionsWorker extends BaseWorker { /** * Cancel subscription */ - private async cancelSubscription( - job: Job, - subscriptionId: string, - metadata?: any, - ): Promise { + private async cancelSubscription(job: Job, subscriptionId: string, metadata?: any): Promise { await job.progress(40); this.logger.log(`Canceling subscription ${subscriptionId}`); diff --git a/tsconfig.build.tsbuildinfo b/tsconfig.build.tsbuildinfo index 0800f4fe..3dcf25a2 100644 --- a/tsconfig.build.tsbuildinfo +++ b/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/reflect-metadata/index.d.ts","./node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","./node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","./node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","./node_modules/rxjs/dist/types/internal/subscription.d.ts","./node_modules/rxjs/dist/types/internal/subscriber.d.ts","./node_modules/rxjs/dist/types/internal/operator.d.ts","./node_modules/rxjs/dist/types/internal/observable.d.ts","./node_modules/rxjs/dist/types/internal/types.d.ts","./node_modules/rxjs/dist/types/internal/operators/audit.d.ts","./node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","./node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","./node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/concat.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/connect.d.ts","./node_modules/rxjs/dist/types/internal/operators/count.d.ts","./node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","./node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","./node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/delay.d.ts","./node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","./node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","./node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/every.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/expand.d.ts","./node_modules/rxjs/dist/types/internal/operators/filter.d.ts","./node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","./node_modules/rxjs/dist/types/internal/operators/find.d.ts","./node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","./node_modules/rxjs/dist/types/internal/operators/first.d.ts","./node_modules/rxjs/dist/types/internal/subject.d.ts","./node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","./node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","./node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/last.d.ts","./node_modules/rxjs/dist/types/internal/operators/map.d.ts","./node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","./node_modules/rxjs/dist/types/internal/notification.d.ts","./node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","./node_modules/rxjs/dist/types/internal/operators/max.d.ts","./node_modules/rxjs/dist/types/internal/operators/merge.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","./node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","./node_modules/rxjs/dist/types/internal/operators/min.d.ts","./node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","./node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","./node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","./node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","./node_modules/rxjs/dist/types/internal/operators/partition.d.ts","./node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","./node_modules/rxjs/dist/types/internal/operators/publish.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","./node_modules/rxjs/dist/types/internal/operators/race.d.ts","./node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","./node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","./node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","./node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/retry.d.ts","./node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","./node_modules/rxjs/dist/types/internal/operators/sample.d.ts","./node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","./node_modules/rxjs/dist/types/internal/operators/scan.d.ts","./node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","./node_modules/rxjs/dist/types/internal/operators/share.d.ts","./node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","./node_modules/rxjs/dist/types/internal/operators/single.d.ts","./node_modules/rxjs/dist/types/internal/operators/skip.d.ts","./node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","./node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","./node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","./node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","./node_modules/rxjs/dist/types/internal/operators/take.d.ts","./node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","./node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","./node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","./node_modules/rxjs/dist/types/internal/operators/tap.d.ts","./node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","./node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","./node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","./node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","./node_modules/rxjs/dist/types/internal/operators/window.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","./node_modules/rxjs/dist/types/internal/operators/zip.d.ts","./node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","./node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","./node_modules/rxjs/dist/types/operators/index.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","./node_modules/rxjs/dist/types/internal/scheduler.d.ts","./node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","./node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","./node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","./node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","./node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","./node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","./node_modules/rxjs/dist/types/testing/index.d.ts","./node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","./node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","./node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","./node_modules/rxjs/dist/types/internal/replaysubject.d.ts","./node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","./node_modules/rxjs/dist/types/internal/util/identity.d.ts","./node_modules/rxjs/dist/types/internal/util/pipe.d.ts","./node_modules/rxjs/dist/types/internal/util/noop.d.ts","./node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","./node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","./node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","./node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","./node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","./node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","./node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","./node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","./node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","./node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","./node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","./node_modules/rxjs/dist/types/internal/anycatcher.d.ts","./node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","./node_modules/rxjs/dist/types/internal/observable/concat.d.ts","./node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","./node_modules/rxjs/dist/types/internal/observable/defer.d.ts","./node_modules/rxjs/dist/types/internal/observable/empty.d.ts","./node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","./node_modules/rxjs/dist/types/internal/observable/from.d.ts","./node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","./node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","./node_modules/rxjs/dist/types/internal/observable/generate.d.ts","./node_modules/rxjs/dist/types/internal/observable/iif.d.ts","./node_modules/rxjs/dist/types/internal/observable/interval.d.ts","./node_modules/rxjs/dist/types/internal/observable/merge.d.ts","./node_modules/rxjs/dist/types/internal/observable/never.d.ts","./node_modules/rxjs/dist/types/internal/observable/of.d.ts","./node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","./node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","./node_modules/rxjs/dist/types/internal/observable/partition.d.ts","./node_modules/rxjs/dist/types/internal/observable/race.d.ts","./node_modules/rxjs/dist/types/internal/observable/range.d.ts","./node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","./node_modules/rxjs/dist/types/internal/observable/timer.d.ts","./node_modules/rxjs/dist/types/internal/observable/using.d.ts","./node_modules/rxjs/dist/types/internal/observable/zip.d.ts","./node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","./node_modules/rxjs/dist/types/internal/config.d.ts","./node_modules/rxjs/dist/types/index.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","./node_modules/@nestjs/common/interfaces/type.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","./node_modules/@nestjs/common/enums/request-method.enum.d.ts","./node_modules/@nestjs/common/enums/http-status.enum.d.ts","./node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","./node_modules/@nestjs/common/enums/version-type.enum.d.ts","./node_modules/@nestjs/common/enums/index.d.ts","./node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/index.d.ts","./node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/index.d.ts","./node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","./node_modules/@nestjs/common/services/logger.service.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/index.d.ts","./node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","./node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","./node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/index.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","./node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","./node_modules/@nestjs/common/interfaces/index.d.ts","./node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","./node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/index.d.ts","./node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","./node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","./node_modules/@nestjs/common/decorators/modules/index.d.ts","./node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/index.d.ts","./node_modules/@nestjs/common/decorators/index.d.ts","./node_modules/@nestjs/common/exceptions/http.exception.d.ts","./node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","./node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","./node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","./node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","./node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","./node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","./node_modules/@nestjs/common/exceptions/gone.exception.d.ts","./node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","./node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","./node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","./node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","./node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","./node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","./node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","./node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","./node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","./node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","./node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","./node_modules/@nestjs/common/exceptions/index.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","./node_modules/@nestjs/common/services/console-logger.service.d.ts","./node_modules/@nestjs/common/services/index.d.ts","./node_modules/@nestjs/common/file-stream/streamable-file.d.ts","./node_modules/@nestjs/common/file-stream/index.d.ts","./node_modules/@nestjs/common/module-utils/constants.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","./node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","./node_modules/@nestjs/common/module-utils/index.d.ts","./node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","./node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","./node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","./node_modules/@nestjs/common/pipes/validation.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","./node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","./node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","./node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","./node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","./node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","./node_modules/@nestjs/common/pipes/file/index.d.ts","./node_modules/@nestjs/common/pipes/index.d.ts","./node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","./node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","./node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","./node_modules/@nestjs/common/serializer/decorators/index.d.ts","./node_modules/@nestjs/common/serializer/index.d.ts","./node_modules/@nestjs/common/utils/forward-ref.util.d.ts","./node_modules/@nestjs/common/utils/index.d.ts","./node_modules/@nestjs/common/index.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-basic.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-bearer.decorator.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/open-api-spec.interface.d.ts","./node_modules/@nestjs/swagger/dist/types/swagger-enum.type.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-body.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-consumes.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-cookie.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-exclude-endpoint.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-exclude-controller.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-extra-models.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-header.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-hide-property.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-oauth2.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-operation.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-param.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-produces.decorator.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/schema-object-metadata.interface.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-query.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-security.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-use-tags.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-extension.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/index.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-ui-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-custom-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-document-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/index.d.ts","./node_modules/@nestjs/swagger/dist/document-builder.d.ts","./node_modules/@nestjs/swagger/dist/swagger-module.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/intersection-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/omit-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/partial-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/pick-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/index.d.ts","./node_modules/@nestjs/swagger/dist/utils/get-schema-path.util.d.ts","./node_modules/@nestjs/swagger/dist/utils/index.d.ts","./node_modules/@nestjs/swagger/dist/index.d.ts","./node_modules/@nestjs/swagger/index.d.ts","./src/app.controller.ts","./node_modules/@nestjs/throttler/dist/throttler-storage-record.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler-storage.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.guard.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler-module-options.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.decorator.d.ts","./node_modules/@nestjs/throttler/dist/throttler.exception.d.ts","./node_modules/@nestjs/core/adapters/http-adapter.d.ts","./node_modules/@nestjs/core/adapters/index.d.ts","./node_modules/@nestjs/common/constants.d.ts","./node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","./node_modules/@nestjs/core/injector/settlement-signal.d.ts","./node_modules/@nestjs/core/injector/injector.d.ts","./node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","./node_modules/@nestjs/core/inspector/serialized-graph.d.ts","./node_modules/@nestjs/core/injector/module-token-factory.d.ts","./node_modules/@nestjs/core/injector/compiler.d.ts","./node_modules/@nestjs/core/injector/modules-container.d.ts","./node_modules/@nestjs/core/injector/container.d.ts","./node_modules/@nestjs/core/injector/instance-links-host.d.ts","./node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","./node_modules/@nestjs/core/injector/module-ref.d.ts","./node_modules/@nestjs/core/injector/module.d.ts","./node_modules/@nestjs/core/injector/instance-wrapper.d.ts","./node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","./node_modules/@nestjs/core/application-config.d.ts","./node_modules/@nestjs/core/constants.d.ts","./node_modules/@nestjs/core/discovery/discovery-module.d.ts","./node_modules/@nestjs/core/discovery/discovery-service.d.ts","./node_modules/@nestjs/core/discovery/index.d.ts","./node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","./node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","./node_modules/@nestjs/core/exceptions/index.d.ts","./node_modules/@nestjs/core/helpers/context-id-factory.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","./node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","./node_modules/@nestjs/core/router/router-proxy.d.ts","./node_modules/@nestjs/core/helpers/context-creator.d.ts","./node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","./node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","./node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","./node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","./node_modules/@nestjs/core/guards/constants.d.ts","./node_modules/@nestjs/core/helpers/execution-context-host.d.ts","./node_modules/@nestjs/core/guards/guards-consumer.d.ts","./node_modules/@nestjs/core/guards/guards-context-creator.d.ts","./node_modules/@nestjs/core/guards/index.d.ts","./node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","./node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","./node_modules/@nestjs/core/interceptors/index.d.ts","./node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","./node_modules/@nestjs/core/pipes/params-token-factory.d.ts","./node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","./node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","./node_modules/@nestjs/core/pipes/index.d.ts","./node_modules/@nestjs/core/helpers/context-utils.d.ts","./node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","./node_modules/@nestjs/core/injector/inquirer/index.d.ts","./node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","./node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","./node_modules/@nestjs/core/inspector/graph-inspector.d.ts","./node_modules/@nestjs/core/metadata-scanner.d.ts","./node_modules/@nestjs/core/scanner.d.ts","./node_modules/@nestjs/core/injector/instance-loader.d.ts","./node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","./node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","./node_modules/@nestjs/core/injector/index.d.ts","./node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","./node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","./node_modules/@nestjs/core/helpers/external-context-creator.d.ts","./node_modules/@nestjs/core/helpers/index.d.ts","./node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","./node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","./node_modules/@nestjs/core/inspector/index.d.ts","./node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","./node_modules/@nestjs/core/middleware/routes-mapper.d.ts","./node_modules/@nestjs/core/middleware/builder.d.ts","./node_modules/@nestjs/core/middleware/index.d.ts","./node_modules/@nestjs/core/nest-application-context.d.ts","./node_modules/@nestjs/core/nest-application.d.ts","./node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","./node_modules/@nestjs/core/nest-factory.d.ts","./node_modules/@nestjs/core/repl/repl.d.ts","./node_modules/@nestjs/core/repl/index.d.ts","./node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","./node_modules/@nestjs/core/router/interfaces/index.d.ts","./node_modules/@nestjs/core/router/request/request-constants.d.ts","./node_modules/@nestjs/core/router/request/index.d.ts","./node_modules/@nestjs/core/router/router-module.d.ts","./node_modules/@nestjs/core/router/index.d.ts","./node_modules/@nestjs/core/services/reflector.service.d.ts","./node_modules/@nestjs/core/services/index.d.ts","./node_modules/@nestjs/core/index.d.ts","./node_modules/@nestjs/throttler/dist/throttler.guard.d.ts","./node_modules/@nestjs/throttler/dist/throttler.module.d.ts","./node_modules/@nestjs/throttler/dist/throttler.providers.d.ts","./node_modules/@nestjs/throttler/dist/throttler-storage-options.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.service.d.ts","./node_modules/@nestjs/throttler/dist/utilities.d.ts","./node_modules/@nestjs/throttler/dist/index.d.ts","./src/common/constants/time.constants.ts","./src/common/constants/throttle.constants.ts","./src/search/search.constants.ts","./src/search/search.service.ts","./src/search/search.controller.ts","./src/search/search.module.ts","./src/app.module.ts","./src/app.service.ts","./src/main.ts","./src/ab-testing/ab-testing.constants.ts","./node_modules/typeorm/metadata/types/relationtypes.d.ts","./node_modules/typeorm/metadata/types/deferrabletype.d.ts","./node_modules/typeorm/metadata/types/ondeletetype.d.ts","./node_modules/typeorm/metadata/types/onupdatetype.d.ts","./node_modules/typeorm/decorator/options/relationoptions.d.ts","./node_modules/typeorm/metadata/types/propertytypeinfunction.d.ts","./node_modules/typeorm/common/objecttype.d.ts","./node_modules/typeorm/common/entitytarget.d.ts","./node_modules/typeorm/metadata/types/relationtypeinfunction.d.ts","./node_modules/typeorm/metadata-args/relationmetadataargs.d.ts","./node_modules/typeorm/driver/types/columntypes.d.ts","./node_modules/typeorm/decorator/options/valuetransformer.d.ts","./node_modules/typeorm/decorator/options/columncommonoptions.d.ts","./node_modules/typeorm/decorator/options/columnoptions.d.ts","./node_modules/typeorm/metadata-args/types/columnmode.d.ts","./node_modules/typeorm/metadata-args/columnmetadataargs.d.ts","./node_modules/typeorm/common/objectliteral.d.ts","./node_modules/typeorm/schema-builder/options/tablecolumnoptions.d.ts","./node_modules/typeorm/schema-builder/table/tablecolumn.d.ts","./node_modules/typeorm/schema-builder/options/viewoptions.d.ts","./node_modules/typeorm/schema-builder/view/view.d.ts","./node_modules/typeorm/naming-strategy/namingstrategyinterface.d.ts","./node_modules/typeorm/metadata/foreignkeymetadata.d.ts","./node_modules/typeorm/metadata/relationmetadata.d.ts","./node_modules/typeorm/metadata-args/embeddedmetadataargs.d.ts","./node_modules/typeorm/metadata-args/relationidmetadataargs.d.ts","./node_modules/typeorm/metadata/relationidmetadata.d.ts","./node_modules/typeorm/metadata/relationcountmetadata.d.ts","./node_modules/typeorm/metadata/types/eventlistenertypes.d.ts","./node_modules/typeorm/metadata-args/entitylistenermetadataargs.d.ts","./node_modules/typeorm/metadata/entitylistenermetadata.d.ts","./node_modules/typeorm/metadata-args/uniquemetadataargs.d.ts","./node_modules/typeorm/metadata/uniquemetadata.d.ts","./node_modules/typeorm/metadata/embeddedmetadata.d.ts","./node_modules/typeorm/metadata/columnmetadata.d.ts","./node_modules/typeorm/driver/types/ctecapabilities.d.ts","./node_modules/typeorm/driver/types/mappedcolumntypes.d.ts","./node_modules/typeorm/driver/query.d.ts","./node_modules/typeorm/driver/sqlinmemory.d.ts","./node_modules/typeorm/schema-builder/schemabuilder.d.ts","./node_modules/typeorm/driver/types/datatypedefaults.d.ts","./node_modules/typeorm/entity-schema/entityschemaindexoptions.d.ts","./node_modules/typeorm/driver/types/geojsontypes.d.ts","./node_modules/typeorm/decorator/options/spatialcolumnoptions.d.ts","./node_modules/typeorm/decorator/options/foreignkeyoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacolumnforeignkeyoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacolumnoptions.d.ts","./node_modules/typeorm/decorator/options/joincolumnoptions.d.ts","./node_modules/typeorm/decorator/options/jointablemultiplecolumnsoptions.d.ts","./node_modules/typeorm/decorator/options/jointableoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemarelationoptions.d.ts","./node_modules/typeorm/find-options/orderbycondition.d.ts","./node_modules/typeorm/metadata/types/tabletypes.d.ts","./node_modules/typeorm/entity-schema/entityschemauniqueoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacheckoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemaexclusionoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemainheritanceoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemarelationidoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemaforeignkeyoptions.d.ts","./node_modules/typeorm/metadata/types/treetypes.d.ts","./node_modules/typeorm/metadata/types/closuretreeoptions.d.ts","./node_modules/typeorm/metadata-args/treemetadataargs.d.ts","./node_modules/typeorm/entity-schema/entityschemaoptions.d.ts","./node_modules/typeorm/entity-schema/entityschema.d.ts","./node_modules/typeorm/logger/logger.d.ts","./node_modules/typeorm/logger/loggeroptions.d.ts","./node_modules/typeorm/driver/types/databasetype.d.ts","./node_modules/typeorm/cache/queryresultcacheoptions.d.ts","./node_modules/typeorm/cache/queryresultcache.d.ts","./node_modules/typeorm/common/mixedlist.d.ts","./node_modules/typeorm/data-source/basedatasourceoptions.d.ts","./node_modules/typeorm/driver/types/replicationmode.d.ts","./node_modules/typeorm/schema-builder/options/tableforeignkeyoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableforeignkey.d.ts","./node_modules/typeorm/driver/types/upserttype.d.ts","./node_modules/typeorm/driver/driver.d.ts","./node_modules/typeorm/find-options/joinoptions.d.ts","./node_modules/typeorm/find-options/findoperatortype.d.ts","./node_modules/typeorm/find-options/findoperator.d.ts","./node_modules/typeorm/platform/platformtools.d.ts","./node_modules/typeorm/driver/mongodb/bson.typings.d.ts","./node_modules/typeorm/driver/mongodb/typings.d.ts","./node_modules/typeorm/find-options/equaloperator.d.ts","./node_modules/typeorm/find-options/findoptionswhere.d.ts","./node_modules/typeorm/find-options/findoptionsselect.d.ts","./node_modules/typeorm/find-options/findoptionsrelations.d.ts","./node_modules/typeorm/find-options/findoptionsorder.d.ts","./node_modules/typeorm/find-options/findoneoptions.d.ts","./node_modules/typeorm/find-options/findmanyoptions.d.ts","./node_modules/typeorm/common/deeppartial.d.ts","./node_modules/typeorm/repository/saveoptions.d.ts","./node_modules/typeorm/repository/removeoptions.d.ts","./node_modules/typeorm/find-options/mongodb/mongofindoneoptions.d.ts","./node_modules/typeorm/find-options/mongodb/mongofindmanyoptions.d.ts","./node_modules/typeorm/schema-builder/options/tableuniqueoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableunique.d.ts","./node_modules/typeorm/subscriber/broadcasterresult.d.ts","./node_modules/typeorm/subscriber/event/transactioncommitevent.d.ts","./node_modules/typeorm/subscriber/event/transactionrollbackevent.d.ts","./node_modules/typeorm/subscriber/event/transactionstartevent.d.ts","./node_modules/typeorm/subscriber/event/updateevent.d.ts","./node_modules/typeorm/subscriber/event/removeevent.d.ts","./node_modules/typeorm/subscriber/event/insertevent.d.ts","./node_modules/typeorm/subscriber/event/loadevent.d.ts","./node_modules/typeorm/subscriber/event/softremoveevent.d.ts","./node_modules/typeorm/subscriber/event/recoverevent.d.ts","./node_modules/typeorm/subscriber/event/queryevent.d.ts","./node_modules/typeorm/subscriber/entitysubscriberinterface.d.ts","./node_modules/typeorm/subscriber/broadcaster.d.ts","./node_modules/typeorm/schema-builder/options/tablecheckoptions.d.ts","./node_modules/typeorm/metadata-args/checkmetadataargs.d.ts","./node_modules/typeorm/metadata/checkmetadata.d.ts","./node_modules/typeorm/schema-builder/table/tablecheck.d.ts","./node_modules/typeorm/schema-builder/options/tableexclusionoptions.d.ts","./node_modules/typeorm/metadata-args/exclusionmetadataargs.d.ts","./node_modules/typeorm/metadata/exclusionmetadata.d.ts","./node_modules/typeorm/schema-builder/table/tableexclusion.d.ts","./node_modules/typeorm/driver/mongodb/mongoqueryrunner.d.ts","./node_modules/typeorm/query-builder/querypartialentity.d.ts","./node_modules/typeorm/query-runner/queryresult.d.ts","./node_modules/typeorm/query-builder/result/insertresult.d.ts","./node_modules/typeorm/query-builder/result/updateresult.d.ts","./node_modules/typeorm/query-builder/result/deleteresult.d.ts","./node_modules/typeorm/entity-manager/mongoentitymanager.d.ts","./node_modules/typeorm/repository/mongorepository.d.ts","./node_modules/typeorm/find-options/findtreeoptions.d.ts","./node_modules/typeorm/repository/treerepository.d.ts","./node_modules/typeorm/query-builder/transformer/plainobjecttonewentitytransformer.d.ts","./node_modules/typeorm/driver/types/isolationlevel.d.ts","./node_modules/typeorm/query-builder/whereexpressionbuilder.d.ts","./node_modules/typeorm/query-builder/brackets.d.ts","./node_modules/typeorm/query-builder/insertorupdateoptions.d.ts","./node_modules/typeorm/query-builder/returningoption.d.ts","./node_modules/typeorm/repository/upsertoptions.d.ts","./node_modules/typeorm/repository/updateoptions.d.ts","./node_modules/typeorm/common/pickkeysbytype.d.ts","./node_modules/typeorm/entity-manager/entitymanager.d.ts","./node_modules/typeorm/repository/repository.d.ts","./node_modules/typeorm/migration/migrationinterface.d.ts","./node_modules/typeorm/migration/migration.d.ts","./node_modules/typeorm/driver/cockroachdb/cockroachconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/cockroachdb/cockroachconnectionoptions.d.ts","./node_modules/typeorm/driver/mysql/mysqlconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/mysql/mysqlconnectionoptions.d.ts","./node_modules/typeorm/driver/postgres/postgresconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/postgres/postgresconnectionoptions.d.ts","./node_modules/typeorm/driver/sqlite/sqliteconnectionoptions.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/defaultauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryaccesstokenauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorydefaultauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsiappserviceauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsivmauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorypasswordauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryserviceprincipalsecret.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/ntlmauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/sqlserverconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/sqlserver/sqlserverconnectionoptions.d.ts","./node_modules/typeorm/driver/oracle/oracleconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/oracle/oracleconnectionoptions.d.ts","./node_modules/typeorm/driver/mongodb/mongoconnectionoptions.d.ts","./node_modules/typeorm/driver/cordova/cordovaconnectionoptions.d.ts","./node_modules/typeorm/driver/sqljs/sqljsconnectionoptions.d.ts","./node_modules/typeorm/driver/react-native/reactnativeconnectionoptions.d.ts","./node_modules/typeorm/driver/nativescript/nativescriptconnectionoptions.d.ts","./node_modules/typeorm/driver/expo/expoconnectionoptions.d.ts","./node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectionoptions.d.ts","./node_modules/typeorm/driver/sap/sapconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/sap/sapconnectionoptions.d.ts","./node_modules/typeorm/driver/aurora-postgres/aurorapostgresconnectionoptions.d.ts","./node_modules/typeorm/driver/better-sqlite3/bettersqlite3connectionoptions.d.ts","./node_modules/typeorm/driver/capacitor/capacitorconnectionoptions.d.ts","./node_modules/typeorm/connection/baseconnectionoptions.d.ts","./node_modules/typeorm/driver/spanner/spannerconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/spanner/spannerconnectionoptions.d.ts","./node_modules/typeorm/data-source/datasourceoptions.d.ts","./node_modules/typeorm/entity-manager/sqljsentitymanager.d.ts","./node_modules/typeorm/query-builder/relationloader.d.ts","./node_modules/typeorm/query-builder/relationidloader.d.ts","./node_modules/typeorm/data-source/datasource.d.ts","./node_modules/typeorm/metadata-args/tablemetadataargs.d.ts","./node_modules/typeorm/metadata/entitymetadata.d.ts","./node_modules/typeorm/metadata-args/indexmetadataargs.d.ts","./node_modules/typeorm/metadata/indexmetadata.d.ts","./node_modules/typeorm/schema-builder/options/tableindexoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableindex.d.ts","./node_modules/typeorm/schema-builder/options/tableoptions.d.ts","./node_modules/typeorm/schema-builder/table/table.d.ts","./node_modules/typeorm/query-runner/queryrunner.d.ts","./node_modules/typeorm/query-builder/querybuildercte.d.ts","./node_modules/typeorm/query-builder/alias.d.ts","./node_modules/typeorm/query-builder/joinattribute.d.ts","./node_modules/typeorm/query-builder/relation-id/relationidattribute.d.ts","./node_modules/typeorm/query-builder/relation-count/relationcountattribute.d.ts","./node_modules/typeorm/query-builder/selectquery.d.ts","./node_modules/typeorm/query-builder/selectquerybuilderoption.d.ts","./node_modules/typeorm/query-builder/whereclause.d.ts","./node_modules/typeorm/query-builder/queryexpressionmap.d.ts","./node_modules/typeorm/query-builder/updatequerybuilder.d.ts","./node_modules/typeorm/query-builder/deletequerybuilder.d.ts","./node_modules/typeorm/query-builder/softdeletequerybuilder.d.ts","./node_modules/typeorm/query-builder/insertquerybuilder.d.ts","./node_modules/typeorm/query-builder/relationquerybuilder.d.ts","./node_modules/typeorm/query-builder/notbrackets.d.ts","./node_modules/typeorm/query-builder/querybuilder.d.ts","./node_modules/typeorm/query-builder/selectquerybuilder.d.ts","./node_modules/typeorm/metadata-args/relationcountmetadataargs.d.ts","./node_modules/typeorm/metadata-args/namingstrategymetadataargs.d.ts","./node_modules/typeorm/metadata-args/joincolumnmetadataargs.d.ts","./node_modules/typeorm/metadata-args/jointablemetadataargs.d.ts","./node_modules/typeorm/metadata-args/entitysubscribermetadataargs.d.ts","./node_modules/typeorm/metadata-args/inheritancemetadataargs.d.ts","./node_modules/typeorm/metadata-args/discriminatorvaluemetadataargs.d.ts","./node_modules/typeorm/metadata-args/entityrepositorymetadataargs.d.ts","./node_modules/typeorm/metadata-args/transactionentitymetadataargs.d.ts","./node_modules/typeorm/metadata-args/transactionrepositorymetadataargs.d.ts","./node_modules/typeorm/metadata-args/generatedmetadataargs.d.ts","./node_modules/typeorm/metadata-args/foreignkeymetadataargs.d.ts","./node_modules/typeorm/metadata-args/metadataargsstorage.d.ts","./node_modules/typeorm/connection/connectionmanager.d.ts","./node_modules/typeorm/globals.d.ts","./node_modules/typeorm/container.d.ts","./node_modules/typeorm/common/relationtype.d.ts","./node_modules/typeorm/error/typeormerror.d.ts","./node_modules/typeorm/error/cannotreflectmethodparametertypeerror.d.ts","./node_modules/typeorm/error/alreadyhasactiveconnectionerror.d.ts","./node_modules/typeorm/persistence/subjectchangemap.d.ts","./node_modules/typeorm/persistence/subject.d.ts","./node_modules/typeorm/error/subjectwithoutidentifiererror.d.ts","./node_modules/typeorm/error/cannotconnectalreadyconnectederror.d.ts","./node_modules/typeorm/error/locknotsupportedongivendrivererror.d.ts","./node_modules/typeorm/error/connectionisnotseterror.d.ts","./node_modules/typeorm/error/cannotcreateentityidmaperror.d.ts","./node_modules/typeorm/error/metadataalreadyexistserror.d.ts","./node_modules/typeorm/error/cannotdetermineentityerror.d.ts","./node_modules/typeorm/error/updatevaluesmissingerror.d.ts","./node_modules/typeorm/error/treerepositorynotsupportederror.d.ts","./node_modules/typeorm/error/customrepositorynotfounderror.d.ts","./node_modules/typeorm/error/transactionnotstartederror.d.ts","./node_modules/typeorm/error/transactionalreadystartederror.d.ts","./node_modules/typeorm/error/entitynotfounderror.d.ts","./node_modules/typeorm/error/entitymetadatanotfounderror.d.ts","./node_modules/typeorm/error/mustbeentityerror.d.ts","./node_modules/typeorm/error/optimisticlockversionmismatcherror.d.ts","./node_modules/typeorm/error/limitonupdatenotsupportederror.d.ts","./node_modules/typeorm/error/primarycolumncannotbenullableerror.d.ts","./node_modules/typeorm/error/customrepositorycannotinheritrepositoryerror.d.ts","./node_modules/typeorm/error/queryrunnerprovideralreadyreleasederror.d.ts","./node_modules/typeorm/error/cannotattachtreechildrenentityerror.d.ts","./node_modules/typeorm/error/customrepositorydoesnothaveentityerror.d.ts","./node_modules/typeorm/error/missingdeletedatecolumnerror.d.ts","./node_modules/typeorm/error/noconnectionforrepositoryerror.d.ts","./node_modules/typeorm/error/circularrelationserror.d.ts","./node_modules/typeorm/error/returningstatementnotsupportederror.d.ts","./node_modules/typeorm/error/usingjointableisnotallowederror.d.ts","./node_modules/typeorm/error/missingjoincolumnerror.d.ts","./node_modules/typeorm/error/missingprimarycolumnerror.d.ts","./node_modules/typeorm/error/entitypropertynotfounderror.d.ts","./node_modules/typeorm/error/missingdrivererror.d.ts","./node_modules/typeorm/error/driverpackagenotinstallederror.d.ts","./node_modules/typeorm/error/cannotgetentitymanagernotconnectederror.d.ts","./node_modules/typeorm/error/connectionnotfounderror.d.ts","./node_modules/typeorm/error/noversionorupdatedatecolumnerror.d.ts","./node_modules/typeorm/error/insertvaluesmissingerror.d.ts","./node_modules/typeorm/error/optimisticlockcannotbeusederror.d.ts","./node_modules/typeorm/error/metadatawithsuchnamealreadyexistserror.d.ts","./node_modules/typeorm/error/driveroptionnotseterror.d.ts","./node_modules/typeorm/error/findrelationsnotfounderror.d.ts","./node_modules/typeorm/error/pessimisticlocktransactionrequirederror.d.ts","./node_modules/typeorm/error/repositorynottreeerror.d.ts","./node_modules/typeorm/error/datatypenotsupportederror.d.ts","./node_modules/typeorm/error/initializedrelationerror.d.ts","./node_modules/typeorm/error/missingjointableerror.d.ts","./node_modules/typeorm/error/queryfailederror.d.ts","./node_modules/typeorm/error/noneedtoreleaseentitymanagererror.d.ts","./node_modules/typeorm/error/usingjoincolumnonlyononesideallowederror.d.ts","./node_modules/typeorm/error/usingjointableonlyononesideallowederror.d.ts","./node_modules/typeorm/error/subjectremovedandupdatederror.d.ts","./node_modules/typeorm/error/persistedentitynotfounderror.d.ts","./node_modules/typeorm/error/usingjoincolumnisnotallowederror.d.ts","./node_modules/typeorm/error/columntypeundefinederror.d.ts","./node_modules/typeorm/error/queryrunneralreadyreleasederror.d.ts","./node_modules/typeorm/error/offsetwithoutlimitnotsupportederror.d.ts","./node_modules/typeorm/error/cannotexecutenotconnectederror.d.ts","./node_modules/typeorm/error/noconnectionoptionerror.d.ts","./node_modules/typeorm/error/forbiddentransactionmodeoverrideerror.d.ts","./node_modules/typeorm/error/index.d.ts","./node_modules/typeorm/decorator/options/columnembeddedoptions.d.ts","./node_modules/typeorm/decorator/options/columnenumoptions.d.ts","./node_modules/typeorm/decorator/options/columnhstoreoptions.d.ts","./node_modules/typeorm/decorator/options/columnnumericoptions.d.ts","./node_modules/typeorm/decorator/options/columnunsignedoptions.d.ts","./node_modules/typeorm/decorator/options/columnwithlengthoptions.d.ts","./node_modules/typeorm/decorator/columns/column.d.ts","./node_modules/typeorm/decorator/columns/createdatecolumn.d.ts","./node_modules/typeorm/decorator/columns/deletedatecolumn.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnnumericoptions.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnuuidoptions.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnidentityoptions.d.ts","./node_modules/typeorm/decorator/columns/primarygeneratedcolumn.d.ts","./node_modules/typeorm/decorator/columns/primarycolumn.d.ts","./node_modules/typeorm/decorator/columns/updatedatecolumn.d.ts","./node_modules/typeorm/decorator/columns/versioncolumn.d.ts","./node_modules/typeorm/decorator/options/virtualcolumnoptions.d.ts","./node_modules/typeorm/decorator/columns/virtualcolumn.d.ts","./node_modules/typeorm/decorator/options/viewcolumnoptions.d.ts","./node_modules/typeorm/decorator/columns/viewcolumn.d.ts","./node_modules/typeorm/decorator/columns/objectidcolumn.d.ts","./node_modules/typeorm/decorator/listeners/afterinsert.d.ts","./node_modules/typeorm/decorator/listeners/afterload.d.ts","./node_modules/typeorm/decorator/listeners/afterremove.d.ts","./node_modules/typeorm/decorator/listeners/aftersoftremove.d.ts","./node_modules/typeorm/decorator/listeners/afterrecover.d.ts","./node_modules/typeorm/decorator/listeners/afterupdate.d.ts","./node_modules/typeorm/decorator/listeners/beforeinsert.d.ts","./node_modules/typeorm/decorator/listeners/beforeremove.d.ts","./node_modules/typeorm/decorator/listeners/beforesoftremove.d.ts","./node_modules/typeorm/decorator/listeners/beforerecover.d.ts","./node_modules/typeorm/decorator/listeners/beforeupdate.d.ts","./node_modules/typeorm/decorator/listeners/eventsubscriber.d.ts","./node_modules/typeorm/decorator/options/indexoptions.d.ts","./node_modules/typeorm/decorator/options/entityoptions.d.ts","./node_modules/typeorm/decorator/relations/joincolumn.d.ts","./node_modules/typeorm/decorator/relations/jointable.d.ts","./node_modules/typeorm/decorator/relations/manytomany.d.ts","./node_modules/typeorm/decorator/relations/manytoone.d.ts","./node_modules/typeorm/decorator/relations/onetomany.d.ts","./node_modules/typeorm/decorator/relations/onetoone.d.ts","./node_modules/typeorm/decorator/relations/relationcount.d.ts","./node_modules/typeorm/decorator/relations/relationid.d.ts","./node_modules/typeorm/decorator/entity/entity.d.ts","./node_modules/typeorm/decorator/entity/childentity.d.ts","./node_modules/typeorm/decorator/entity/tableinheritance.d.ts","./node_modules/typeorm/decorator/options/viewentityoptions.d.ts","./node_modules/typeorm/decorator/entity-view/viewentity.d.ts","./node_modules/typeorm/decorator/tree/treelevelcolumn.d.ts","./node_modules/typeorm/decorator/tree/treeparent.d.ts","./node_modules/typeorm/decorator/tree/treechildren.d.ts","./node_modules/typeorm/decorator/tree/tree.d.ts","./node_modules/typeorm/decorator/index.d.ts","./node_modules/typeorm/decorator/foreignkey.d.ts","./node_modules/typeorm/decorator/options/uniqueoptions.d.ts","./node_modules/typeorm/decorator/unique.d.ts","./node_modules/typeorm/decorator/check.d.ts","./node_modules/typeorm/decorator/exclusion.d.ts","./node_modules/typeorm/decorator/generated.d.ts","./node_modules/typeorm/decorator/entityrepository.d.ts","./node_modules/typeorm/find-options/operator/and.d.ts","./node_modules/typeorm/find-options/operator/or.d.ts","./node_modules/typeorm/find-options/operator/any.d.ts","./node_modules/typeorm/find-options/operator/arraycontainedby.d.ts","./node_modules/typeorm/find-options/operator/arraycontains.d.ts","./node_modules/typeorm/find-options/operator/arrayoverlap.d.ts","./node_modules/typeorm/find-options/operator/between.d.ts","./node_modules/typeorm/find-options/operator/equal.d.ts","./node_modules/typeorm/find-options/operator/in.d.ts","./node_modules/typeorm/find-options/operator/isnull.d.ts","./node_modules/typeorm/find-options/operator/lessthan.d.ts","./node_modules/typeorm/find-options/operator/lessthanorequal.d.ts","./node_modules/typeorm/find-options/operator/ilike.d.ts","./node_modules/typeorm/find-options/operator/like.d.ts","./node_modules/typeorm/find-options/operator/morethan.d.ts","./node_modules/typeorm/find-options/operator/morethanorequal.d.ts","./node_modules/typeorm/find-options/operator/not.d.ts","./node_modules/typeorm/find-options/operator/raw.d.ts","./node_modules/typeorm/find-options/operator/jsoncontains.d.ts","./node_modules/typeorm/find-options/findoptionsutils.d.ts","./node_modules/typeorm/logger/abstractlogger.d.ts","./node_modules/typeorm/logger/advancedconsolelogger.d.ts","./node_modules/typeorm/logger/formattedconsolelogger.d.ts","./node_modules/typeorm/logger/simpleconsolelogger.d.ts","./node_modules/typeorm/logger/filelogger.d.ts","./node_modules/typeorm/repository/abstractrepository.d.ts","./node_modules/typeorm/data-source/index.d.ts","./node_modules/typeorm/repository/baseentity.d.ts","./node_modules/typeorm/driver/sqlserver/mssqlparameter.d.ts","./node_modules/typeorm/connection/connectionoptionsreader.d.ts","./node_modules/typeorm/connection/connectionoptions.d.ts","./node_modules/typeorm/connection/connection.d.ts","./node_modules/typeorm/migration/migrationexecutor.d.ts","./node_modules/typeorm/naming-strategy/defaultnamingstrategy.d.ts","./node_modules/typeorm/naming-strategy/legacyoraclenamingstrategy.d.ts","./node_modules/typeorm/entity-schema/entityschemaembeddedcolumnoptions.d.ts","./node_modules/typeorm/schema-builder/rdbmsschemabuilder.d.ts","./node_modules/typeorm/util/instancechecker.d.ts","./node_modules/typeorm/repository/findtreesoptions.d.ts","./node_modules/typeorm/util/treerepositoryutils.d.ts","./node_modules/typeorm/index.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","./node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","./node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","./node_modules/@nestjs/typeorm/dist/common/index.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","./node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","./node_modules/@nestjs/typeorm/dist/index.d.ts","./node_modules/@nestjs/typeorm/index.d.ts","./src/ab-testing/entities/variant-metric.entity.ts","./src/ab-testing/entities/experiment-variant.entity.ts","./src/ab-testing/entities/experiment-metric.entity.ts","./src/ab-testing/entities/experiment.entity.ts","./src/ab-testing/ab-testing.service.ts","./src/ab-testing/experiments/experiment.service.ts","./src/ab-testing/analysis/statistical-analysis.service.ts","./src/ab-testing/automation/automated-decision.service.ts","./src/ab-testing/reporting/ab-testing-reports.service.ts","./node_modules/@nestjs/passport/dist/abstract.strategy.d.ts","./node_modules/@nestjs/passport/dist/interfaces/auth-module.options.d.ts","./node_modules/@nestjs/passport/dist/interfaces/type.interface.d.ts","./node_modules/@nestjs/passport/dist/interfaces/index.d.ts","./node_modules/@nestjs/passport/dist/auth.guard.d.ts","./node_modules/@nestjs/passport/dist/passport.module.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@types/passport/index.d.ts","./node_modules/@nestjs/passport/dist/passport/passport.serializer.d.ts","./node_modules/@nestjs/passport/dist/passport/passport.strategy.d.ts","./node_modules/@nestjs/passport/dist/index.d.ts","./node_modules/@nestjs/passport/index.d.ts","./src/common/constants/auth.constants.ts","./src/auth/guards/jwt-auth.guard.ts","./src/courses/entities/lesson.entity.ts","./src/courses/entities/course-module.entity.ts","./src/courses/entities/enrollment.entity.ts","./src/courses/entities/course.entity.ts","./src/users/entities/user.entity.ts","./src/auth/decorators/roles.decorator.ts","./src/auth/guards/roles.guard.ts","./src/ab-testing/ab-testing.controller.ts","./src/ab-testing/ab-testing.module.ts","./src/analytics/analytics.controller.ts","./node_modules/prom-client/index.d.ts","./src/monitoring/metrics/metrics-collection.service.ts","./src/analytics/analytics.service.ts","./src/analytics/analytics.module.ts","./node_modules/class-validator/types/validation/validationerror.d.ts","./node_modules/class-validator/types/validation/validatoroptions.d.ts","./node_modules/class-validator/types/validation-schema/validationschema.d.ts","./node_modules/class-validator/types/container.d.ts","./node_modules/class-validator/types/validation/validationarguments.d.ts","./node_modules/class-validator/types/decorator/validationoptions.d.ts","./node_modules/class-validator/types/decorator/common/allow.d.ts","./node_modules/class-validator/types/decorator/common/isdefined.d.ts","./node_modules/class-validator/types/decorator/common/isoptional.d.ts","./node_modules/class-validator/types/decorator/common/validate.d.ts","./node_modules/class-validator/types/validation/validatorconstraintinterface.d.ts","./node_modules/class-validator/types/decorator/common/validateby.d.ts","./node_modules/class-validator/types/decorator/common/validateif.d.ts","./node_modules/class-validator/types/decorator/common/validatenested.d.ts","./node_modules/class-validator/types/decorator/common/validatepromise.d.ts","./node_modules/class-validator/types/decorator/common/islatlong.d.ts","./node_modules/class-validator/types/decorator/common/islatitude.d.ts","./node_modules/class-validator/types/decorator/common/islongitude.d.ts","./node_modules/class-validator/types/decorator/common/equals.d.ts","./node_modules/class-validator/types/decorator/common/notequals.d.ts","./node_modules/class-validator/types/decorator/common/isempty.d.ts","./node_modules/class-validator/types/decorator/common/isnotempty.d.ts","./node_modules/class-validator/types/decorator/common/isin.d.ts","./node_modules/class-validator/types/decorator/common/isnotin.d.ts","./node_modules/class-validator/types/decorator/number/isdivisibleby.d.ts","./node_modules/class-validator/types/decorator/number/ispositive.d.ts","./node_modules/class-validator/types/decorator/number/isnegative.d.ts","./node_modules/class-validator/types/decorator/number/max.d.ts","./node_modules/class-validator/types/decorator/number/min.d.ts","./node_modules/class-validator/types/decorator/date/mindate.d.ts","./node_modules/class-validator/types/decorator/date/maxdate.d.ts","./node_modules/class-validator/types/decorator/string/contains.d.ts","./node_modules/class-validator/types/decorator/string/notcontains.d.ts","./node_modules/@types/validator/lib/isboolean.d.ts","./node_modules/@types/validator/lib/isemail.d.ts","./node_modules/@types/validator/lib/isfqdn.d.ts","./node_modules/@types/validator/lib/isiban.d.ts","./node_modules/@types/validator/lib/isiso31661alpha2.d.ts","./node_modules/@types/validator/lib/isiso4217.d.ts","./node_modules/@types/validator/lib/isiso6391.d.ts","./node_modules/@types/validator/lib/istaxid.d.ts","./node_modules/@types/validator/lib/isurl.d.ts","./node_modules/@types/validator/index.d.ts","./node_modules/class-validator/types/decorator/string/isalpha.d.ts","./node_modules/class-validator/types/decorator/string/isalphanumeric.d.ts","./node_modules/class-validator/types/decorator/string/isdecimal.d.ts","./node_modules/class-validator/types/decorator/string/isascii.d.ts","./node_modules/class-validator/types/decorator/string/isbase64.d.ts","./node_modules/class-validator/types/decorator/string/isbytelength.d.ts","./node_modules/class-validator/types/decorator/string/iscreditcard.d.ts","./node_modules/class-validator/types/decorator/string/iscurrency.d.ts","./node_modules/class-validator/types/decorator/string/isemail.d.ts","./node_modules/class-validator/types/decorator/string/isfqdn.d.ts","./node_modules/class-validator/types/decorator/string/isfullwidth.d.ts","./node_modules/class-validator/types/decorator/string/ishalfwidth.d.ts","./node_modules/class-validator/types/decorator/string/isvariablewidth.d.ts","./node_modules/class-validator/types/decorator/string/ishexcolor.d.ts","./node_modules/class-validator/types/decorator/string/ishexadecimal.d.ts","./node_modules/class-validator/types/decorator/string/ismacaddress.d.ts","./node_modules/class-validator/types/decorator/string/isip.d.ts","./node_modules/class-validator/types/decorator/string/isport.d.ts","./node_modules/class-validator/types/decorator/string/isisbn.d.ts","./node_modules/class-validator/types/decorator/string/isisin.d.ts","./node_modules/class-validator/types/decorator/string/isiso8601.d.ts","./node_modules/class-validator/types/decorator/string/isjson.d.ts","./node_modules/class-validator/types/decorator/string/isjwt.d.ts","./node_modules/class-validator/types/decorator/string/islowercase.d.ts","./node_modules/class-validator/types/decorator/string/ismobilephone.d.ts","./node_modules/class-validator/types/decorator/string/isiso31661alpha2.d.ts","./node_modules/class-validator/types/decorator/string/isiso31661alpha3.d.ts","./node_modules/class-validator/types/decorator/string/ismongoid.d.ts","./node_modules/class-validator/types/decorator/string/ismultibyte.d.ts","./node_modules/class-validator/types/decorator/string/issurrogatepair.d.ts","./node_modules/class-validator/types/decorator/string/isurl.d.ts","./node_modules/class-validator/types/decorator/string/isuuid.d.ts","./node_modules/class-validator/types/decorator/string/isfirebasepushid.d.ts","./node_modules/class-validator/types/decorator/string/isuppercase.d.ts","./node_modules/class-validator/types/decorator/string/length.d.ts","./node_modules/class-validator/types/decorator/string/maxlength.d.ts","./node_modules/class-validator/types/decorator/string/minlength.d.ts","./node_modules/class-validator/types/decorator/string/matches.d.ts","./node_modules/libphonenumber-js/types.d.cts","./node_modules/libphonenumber-js/max/index.d.cts","./node_modules/class-validator/types/decorator/string/isphonenumber.d.ts","./node_modules/class-validator/types/decorator/string/ismilitarytime.d.ts","./node_modules/class-validator/types/decorator/string/ishash.d.ts","./node_modules/class-validator/types/decorator/string/isissn.d.ts","./node_modules/class-validator/types/decorator/string/isdatestring.d.ts","./node_modules/class-validator/types/decorator/string/isbooleanstring.d.ts","./node_modules/class-validator/types/decorator/string/isnumberstring.d.ts","./node_modules/class-validator/types/decorator/string/isbase32.d.ts","./node_modules/class-validator/types/decorator/string/isbic.d.ts","./node_modules/class-validator/types/decorator/string/isbtcaddress.d.ts","./node_modules/class-validator/types/decorator/string/isdatauri.d.ts","./node_modules/class-validator/types/decorator/string/isean.d.ts","./node_modules/class-validator/types/decorator/string/isethereumaddress.d.ts","./node_modules/class-validator/types/decorator/string/ishsl.d.ts","./node_modules/class-validator/types/decorator/string/isiban.d.ts","./node_modules/class-validator/types/decorator/string/isidentitycard.d.ts","./node_modules/class-validator/types/decorator/string/isisrc.d.ts","./node_modules/class-validator/types/decorator/string/islocale.d.ts","./node_modules/class-validator/types/decorator/string/ismagneturi.d.ts","./node_modules/class-validator/types/decorator/string/ismimetype.d.ts","./node_modules/class-validator/types/decorator/string/isoctal.d.ts","./node_modules/class-validator/types/decorator/string/ispassportnumber.d.ts","./node_modules/class-validator/types/decorator/string/ispostalcode.d.ts","./node_modules/class-validator/types/decorator/string/isrfc3339.d.ts","./node_modules/class-validator/types/decorator/string/isrgbcolor.d.ts","./node_modules/class-validator/types/decorator/string/issemver.d.ts","./node_modules/class-validator/types/decorator/string/isstrongpassword.d.ts","./node_modules/class-validator/types/decorator/string/istimezone.d.ts","./node_modules/class-validator/types/decorator/string/isbase58.d.ts","./node_modules/class-validator/types/decorator/string/is-tax-id.d.ts","./node_modules/class-validator/types/decorator/string/is-iso4217-currency-code.d.ts","./node_modules/class-validator/types/decorator/typechecker/isboolean.d.ts","./node_modules/class-validator/types/decorator/typechecker/isdate.d.ts","./node_modules/class-validator/types/decorator/typechecker/isnumber.d.ts","./node_modules/class-validator/types/decorator/typechecker/isenum.d.ts","./node_modules/class-validator/types/decorator/typechecker/isint.d.ts","./node_modules/class-validator/types/decorator/typechecker/isstring.d.ts","./node_modules/class-validator/types/decorator/typechecker/isarray.d.ts","./node_modules/class-validator/types/decorator/typechecker/isobject.d.ts","./node_modules/class-validator/types/decorator/array/arraycontains.d.ts","./node_modules/class-validator/types/decorator/array/arraynotcontains.d.ts","./node_modules/class-validator/types/decorator/array/arraynotempty.d.ts","./node_modules/class-validator/types/decorator/array/arrayminsize.d.ts","./node_modules/class-validator/types/decorator/array/arraymaxsize.d.ts","./node_modules/class-validator/types/decorator/array/arrayunique.d.ts","./node_modules/class-validator/types/decorator/object/isnotemptyobject.d.ts","./node_modules/class-validator/types/decorator/object/isinstance.d.ts","./node_modules/class-validator/types/decorator/decorators.d.ts","./node_modules/class-validator/types/validation/validationtypes.d.ts","./node_modules/class-validator/types/validation/validator.d.ts","./node_modules/class-validator/types/register-decorator.d.ts","./node_modules/class-validator/types/metadata/validationmetadataargs.d.ts","./node_modules/class-validator/types/metadata/validationmetadata.d.ts","./node_modules/class-validator/types/metadata/constraintmetadata.d.ts","./node_modules/class-validator/types/metadata/metadatastorage.d.ts","./node_modules/class-validator/types/index.d.ts","./src/analytics/dto/create-event.dto.ts","./src/assessment/enums/assessment-status.enum.ts","./src/assessment/enums/question-type.enum.ts","./src/assessment/entities/question.entity.ts","./src/assessment/entities/assessment.entity.ts","./src/assessment/entities/answer.entity.ts","./src/assessment/entities/assessment-attempt.entity.ts","./src/assessment/feedback/feedback-generation.service.ts","./src/assessment/scoring/score-calculation.service.ts","./src/assessment/assessments.service.ts","./src/assessment/assessment.controller.ts","./src/assessment/questions/question-bank.service.ts","./src/assessment/assessment.module.ts","./src/assessment/dto/create-assessment.dto.ts","./src/assessment/dto/update-assessment.dto.ts","./src/audit-log/enums/audit-action.enum.ts","./src/audit-log/audit-log.entity.ts","./node_modules/@nestjs/config/dist/conditional.module.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-change-event.interface.d.ts","./node_modules/@nestjs/config/dist/types/config-object.type.d.ts","./node_modules/@nestjs/config/dist/types/config.type.d.ts","./node_modules/@nestjs/config/dist/types/no-infer.type.d.ts","./node_modules/@nestjs/config/dist/types/path-value.type.d.ts","./node_modules/@nestjs/config/dist/types/index.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-factory.interface.d.ts","./node_modules/dotenv-expand/lib/main.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.d.ts","./node_modules/@nestjs/config/dist/interfaces/index.d.ts","./node_modules/@nestjs/config/dist/config.module.d.ts","./node_modules/@nestjs/config/dist/config.service.d.ts","./node_modules/@nestjs/config/dist/utils/register-as.util.d.ts","./node_modules/@nestjs/config/dist/utils/get-config-token.util.d.ts","./node_modules/@nestjs/config/dist/utils/index.d.ts","./node_modules/@nestjs/config/dist/index.d.ts","./node_modules/@nestjs/config/index.d.ts","./src/common/utils/pii-sanitizer.utils.ts","./src/middleware/audit/log-retention.policy.ts","./src/audit-log/audit-log.service.ts","./src/audit-log/decorators/audit.decorator.ts","./src/audit-log/decorators/sensitive-operation.decorator.ts","./src/audit-log/services/sensitive-operations.service.ts","./node_modules/@nestjs/schedule/dist/enums/cron-expression.enum.d.ts","./node_modules/@nestjs/schedule/dist/enums/index.d.ts","./node_modules/@types/luxon/src/zone.d.ts","./node_modules/@types/luxon/src/settings.d.ts","./node_modules/@types/luxon/src/_util.d.ts","./node_modules/@types/luxon/src/misc.d.ts","./node_modules/@types/luxon/src/duration.d.ts","./node_modules/@types/luxon/src/interval.d.ts","./node_modules/@types/luxon/src/datetime.d.ts","./node_modules/@types/luxon/src/info.d.ts","./node_modules/@types/luxon/src/luxon.d.ts","./node_modules/@types/luxon/index.d.ts","./node_modules/cron/dist/errors.d.ts","./node_modules/cron/dist/constants.d.ts","./node_modules/cron/dist/job.d.ts","./node_modules/cron/dist/types/utils.d.ts","./node_modules/cron/dist/types/cron.types.d.ts","./node_modules/cron/dist/time.d.ts","./node_modules/cron/dist/index.d.ts","./node_modules/@nestjs/schedule/dist/decorators/cron.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/interval.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/timeout.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/index.d.ts","./node_modules/@nestjs/schedule/dist/interfaces/schedule-module-options.interface.d.ts","./node_modules/@nestjs/schedule/dist/schedule.module.d.ts","./node_modules/@nestjs/schedule/dist/scheduler.registry.d.ts","./node_modules/@nestjs/schedule/dist/index.d.ts","./node_modules/@nestjs/schedule/index.d.ts","./src/audit-log/tasks/audit-retention.task.ts","./src/auth/decorators/current-user.decorator.ts","./src/backup/enums/backup-status.enum.ts","./src/backup/enums/backup-type.enum.ts","./src/backup/enums/region.enum.ts","./src/backup/dto/backup-response.dto.ts","./src/backup/enums/recovery-test-status.enum.ts","./src/backup/dto/recovery-test-response.dto.ts","./src/backup/dto/restore-backup.dto.ts","./src/backup/dto/trigger-recovery-test.dto.ts","./src/backup/entities/backup-record.entity.ts","./src/backup/entities/recovery-test.entity.ts","./src/backup/interfaces/backup.interfaces.ts","./src/caching/caching.constants.ts","./src/cdn/dto/upload-content.dto.ts","./src/cdn/entities/content-metadata.entity.ts","./src/collaboration/constants/collaboration-events.constants.ts","./src/collaboration/dto/create-session.dto.ts","./src/collaboration/dto/websocket.dto.ts","./src/common/database/transaction-helper.service.ts","./node_modules/@elastic/transport/lib/symbols.d.ts","./node_modules/@elastic/transport/lib/connection/baseconnection.d.ts","./node_modules/hpagent/index.d.ts","./node_modules/@elastic/transport/lib/connection/httpconnection.d.ts","./node_modules/undici/types/utility.d.ts","./node_modules/undici/types/header.d.ts","./node_modules/undici/types/readable.d.ts","./node_modules/undici/types/fetch.d.ts","./node_modules/undici/types/formdata.d.ts","./node_modules/undici/types/connector.d.ts","./node_modules/undici/types/client-stats.d.ts","./node_modules/undici/types/client.d.ts","./node_modules/undici/types/errors.d.ts","./node_modules/undici/types/dispatcher.d.ts","./node_modules/undici/types/global-dispatcher.d.ts","./node_modules/undici/types/global-origin.d.ts","./node_modules/undici/types/pool-stats.d.ts","./node_modules/undici/types/pool.d.ts","./node_modules/undici/types/handlers.d.ts","./node_modules/undici/types/balanced-pool.d.ts","./node_modules/undici/types/round-robin-pool.d.ts","./node_modules/undici/types/h2c-client.d.ts","./node_modules/undici/types/agent.d.ts","./node_modules/undici/types/mock-interceptor.d.ts","./node_modules/undici/types/mock-call-history.d.ts","./node_modules/undici/types/mock-agent.d.ts","./node_modules/undici/types/mock-client.d.ts","./node_modules/undici/types/mock-pool.d.ts","./node_modules/undici/types/snapshot-agent.d.ts","./node_modules/undici/types/mock-errors.d.ts","./node_modules/undici/types/proxy-agent.d.ts","./node_modules/undici/types/socks5-proxy-agent.d.ts","./node_modules/undici/types/env-http-proxy-agent.d.ts","./node_modules/undici/types/retry-handler.d.ts","./node_modules/undici/types/retry-agent.d.ts","./node_modules/undici/types/api.d.ts","./node_modules/undici/types/cache-interceptor.d.ts","./node_modules/undici/types/interceptors.d.ts","./node_modules/undici/types/util.d.ts","./node_modules/undici/types/cookies.d.ts","./node_modules/undici/types/patch.d.ts","./node_modules/undici/types/websocket.d.ts","./node_modules/undici/types/eventsource.d.ts","./node_modules/undici/types/diagnostics-channel.d.ts","./node_modules/undici/types/content-type.d.ts","./node_modules/undici/types/cache.d.ts","./node_modules/undici/types/index.d.ts","./node_modules/undici/index.d.ts","./node_modules/@elastic/transport/lib/connection/undiciconnection.d.ts","./node_modules/@elastic/transport/lib/connection/index.d.ts","./node_modules/@elastic/transport/lib/serializer.d.ts","./node_modules/@elastic/transport/lib/pool/baseconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/weightedconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/clusterconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/cloudconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/index.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/types.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts","./node_modules/@opentelemetry/api/build/src/common/exception.d.ts","./node_modules/@opentelemetry/api/build/src/common/time.d.ts","./node_modules/@opentelemetry/api/build/src/common/attributes.d.ts","./node_modules/@opentelemetry/api/build/src/context/types.d.ts","./node_modules/@opentelemetry/api/build/src/context/context.d.ts","./node_modules/@opentelemetry/api/build/src/api/context.d.ts","./node_modules/@opentelemetry/api/build/src/diag/types.d.ts","./node_modules/@opentelemetry/api/build/src/diag/consolelogger.d.ts","./node_modules/@opentelemetry/api/build/src/api/diag.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/metric.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/meter.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/noopmeter.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/meterprovider.d.ts","./node_modules/@opentelemetry/api/build/src/api/metrics.d.ts","./node_modules/@opentelemetry/api/build/src/propagation/textmappropagator.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts","./node_modules/@opentelemetry/api/build/src/api/propagation.d.ts","./node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts","./node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts","./node_modules/@opentelemetry/api/build/src/trace/link.d.ts","./node_modules/@opentelemetry/api/build/src/trace/status.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts","./node_modules/@opentelemetry/api/build/src/trace/spanoptions.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts","./node_modules/@opentelemetry/api/build/src/trace/proxytracer.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts","./node_modules/@opentelemetry/api/build/src/trace/proxytracerprovider.d.ts","./node_modules/@opentelemetry/api/build/src/trace/samplingresult.d.ts","./node_modules/@opentelemetry/api/build/src/trace/sampler.d.ts","./node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts","./node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts","./node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts","./node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts","./node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts","./node_modules/@opentelemetry/api/build/src/api/trace.d.ts","./node_modules/@opentelemetry/api/build/src/context-api.d.ts","./node_modules/@opentelemetry/api/build/src/diag-api.d.ts","./node_modules/@opentelemetry/api/build/src/metrics-api.d.ts","./node_modules/@opentelemetry/api/build/src/propagation-api.d.ts","./node_modules/@opentelemetry/api/build/src/trace-api.d.ts","./node_modules/@opentelemetry/api/build/src/index.d.ts","./node_modules/@elastic/transport/lib/middleware/types.d.ts","./node_modules/@elastic/transport/lib/middleware/middlewareengine.d.ts","./node_modules/@elastic/transport/lib/middleware/productcheck.d.ts","./node_modules/@elastic/transport/lib/middleware/index.d.ts","./node_modules/@elastic/transport/lib/transport.d.ts","./node_modules/@elastic/transport/lib/types.d.ts","./node_modules/@elastic/transport/lib/errors.d.ts","./node_modules/@elastic/transport/lib/diagnostic.d.ts","./node_modules/@elastic/transport/index.d.ts","./node_modules/@elastic/elasticsearch/lib/sniffingtransport.d.ts","./node_modules/@elastic/elasticsearch/lib/api/types.d.ts","./node_modules/@elastic/elasticsearch/lib/helpers.d.ts","./node_modules/@elastic/elasticsearch/lib/symbols.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/async_search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/autoscaling.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/bulk.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cancel_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/capabilities.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cat.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ccr.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/clear_scroll.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/close_point_in_time.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cluster.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/connector.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/count.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/create.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/dangling_indices.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_by_query.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_by_query_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/enrich.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/eql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/esql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/exists.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/exists_source.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/explain.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/features.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/field_caps.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/fleet.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script_context.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script_languages.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_source.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/graph.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/health_report.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ilm.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/index.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/indices.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/inference.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/info.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ingest.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/knn_search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/license.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/list_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/logstash.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/mget.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/migration.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ml.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/monitoring.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/msearch.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/msearch_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/mtermvectors.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/nodes.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/open_point_in_time.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ping.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/profiling.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/project.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/put_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/query_rules.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/rank_eval.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/reindex_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/render_search_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/rollup.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/scripts_painless_execute.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/scroll.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_application.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_mvt.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_shards.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/searchable_snapshots.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/security.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/shutdown.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/simulate.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/slm.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/snapshot.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/sql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ssl.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/streams.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/synonyms.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/tasks.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/terms_enum.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/termvectors.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/text_structure.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/transform.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update_by_query.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update_by_query_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/watcher.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/xpack.d.ts","./node_modules/@elastic/elasticsearch/lib/api/index.d.ts","./node_modules/@elastic/elasticsearch/lib/client.d.ts","./node_modules/@elastic/elasticsearch/index.d.ts","./src/common/services/log-shipper.service.ts","./src/common/common.module.ts","./src/common/constants/app.constants.ts","./src/common/constants/event.constants.ts","./src/common/constants/queue.constants.ts","./src/common/services/circuit-breaker.service.ts","./src/common/controllers/circuit-breaker.controller.ts","./src/common/database/sharding/config/shard.config.ts","./src/common/database/sharding/constants/shard.constants.ts","./src/common/database/sharding/datasource/shard-datasource.manager.ts","./src/common/database/sharding/runner/shard-aware-query-runner.ts","./src/common/decorators/circuit-breaker.decorator.ts","./src/common/decorators/idempotency.decorator.ts","./src/common/decorators/roles.decorator.ts","./src/common/types/request-with-locale.ts","./src/common/decorators/translate.decorator.ts","./node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts","./node_modules/class-transformer/types/enums/transformation-type.enum.d.ts","./node_modules/class-transformer/types/enums/index.d.ts","./node_modules/class-transformer/types/interfaces/target-map.interface.d.ts","./node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts","./node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/index.d.ts","./node_modules/class-transformer/types/classtransformer.d.ts","./node_modules/class-transformer/types/decorators/exclude.decorator.d.ts","./node_modules/class-transformer/types/decorators/expose.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform.decorator.d.ts","./node_modules/class-transformer/types/decorators/type.decorator.d.ts","./node_modules/class-transformer/types/decorators/index.d.ts","./node_modules/class-transformer/types/index.d.ts","./src/common/dto/pagination.dto.ts","./src/common/exceptions/app.exceptions.ts","./src/common/guards/throttle.guard.ts","./src/common/interceptors/api-error.interface.ts","./src/common/interceptors/circuit-breaker.interceptor.ts","./node_modules/ioredis/built/types.d.ts","./node_modules/ioredis/built/command.d.ts","./node_modules/ioredis/built/scanstream.d.ts","./node_modules/ioredis/built/utils/rediscommander.d.ts","./node_modules/ioredis/built/transaction.d.ts","./node_modules/ioredis/built/utils/commander.d.ts","./node_modules/ioredis/built/connectors/abstractconnector.d.ts","./node_modules/ioredis/built/connectors/connectorconstructor.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/types.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/sentineliterator.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/index.d.ts","./node_modules/ioredis/built/connectors/standaloneconnector.d.ts","./node_modules/ioredis/built/redis/redisoptions.d.ts","./node_modules/ioredis/built/cluster/util.d.ts","./node_modules/ioredis/built/cluster/clusteroptions.d.ts","./node_modules/ioredis/built/cluster/index.d.ts","./node_modules/denque/index.d.ts","./node_modules/ioredis/built/subscriptionset.d.ts","./node_modules/ioredis/built/datahandler.d.ts","./node_modules/ioredis/built/redis.d.ts","./node_modules/ioredis/built/pipeline.d.ts","./node_modules/ioredis/built/index.d.ts","./src/common/services/idempotency.service.ts","./src/common/interceptors/idempotency.interceptor.ts","./src/common/modules/idempotency.module.ts","./src/common/naming/naming.service.ts","./src/common/naming/naming.module.ts","./src/common/services/shutdown-state.service.ts","./src/common/types/file.types.ts","./src/common/utils/bull-redis.util.ts","./src/common/utils/correlation.utils.ts","./src/common/utils/data-anonymization.service.ts","./src/common/utils/sanitization.utils.ts","./src/common/utils/user.utils.ts","./node_modules/keyv/dist/index.d.ts","./node_modules/cache-manager/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/command-options.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/lua-script.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_cat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_deluser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_dryrun.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_genpass.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_getuser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_log_reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_log.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_save.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_setuser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_users.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_whoami.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/asking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/auth.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bgrewriteaof.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bgsave.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_caching.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_getname.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_getredir.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_id.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_no-evict.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_no-touch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_pause.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_setname.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_tracking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_trackinginfo.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_unpause.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_addslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/generic-transformers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_addslotsrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_bumpepoch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_count-failure-reports.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_countkeysinslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_delslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_delslotsrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_failover.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_flushslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_forget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_getkeysinslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_keyslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_links.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_meet.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_myid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_myshardid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_nodes.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_replicas.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_replicate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_saveconfig.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_set-config-epoch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_setslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_slots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_getkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_getkeysandflags.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_resetstat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_rewrite.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/dbsize.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/discard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/echo.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/failover.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/flushall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/flushdb.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_delete.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_dump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_flush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_list_withcode.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_restore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hello.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/keys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lastsave.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_doctor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_graph.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_history.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_latest.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lolwut.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_doctor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_malloc-stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_purge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_usage.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_unload.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/move.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ping.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_channels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_numpat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_numsub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_shardchannels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_shardnumsub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/randomkey.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/readonly.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/readwrite.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/replicaof.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/restore-asking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/role.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/save.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/scan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_debug.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_flush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/shutdown.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/swapdb.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/time.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/unwatch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/wait.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/append.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitfield.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitfield_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitpos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blmove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/brpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/brpoplpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzpopmax.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzpopmin.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/copy.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/decr.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/decrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/dump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/eval_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/eval.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/evalsha.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/evalsha_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/fcall_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/fcall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geoadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geodist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geohash.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geopos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_ro_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_ro_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymemberstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearch_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearchstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getbit.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hgetall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hincrbyfloat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hmget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpersist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield_count_withvalues.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hscan_novalues.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hsetnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hstrlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/httl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hvals.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incr.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incrbyfloat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_idx_withmatchlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_idx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_len.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/linsert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/llen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lmove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpop_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpos_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpushx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lrem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ltrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/migrate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/mset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/msetnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_encoding.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_freq.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_idletime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_refcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/persist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfmerge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/psetex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/publish.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rename.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/renamenx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/restore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpop_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpoplpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpushx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/scard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sdiff.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sdiffstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sinter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sintercard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sinterstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setbit.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sismember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smembers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smismember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort_store.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/spop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/spublish.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srandmember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srandmember_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/strlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sunion.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sunionstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/touch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/type.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/unlink.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/watch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xack.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xautoclaim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xautoclaim_justid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xclaim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xclaim_justid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_createconsumer.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_delconsumer.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_destroy.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_setid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_consumers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_groups.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_stream.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xpending_range.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xpending.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xread.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xreadgroup.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xrevrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xsetid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xtrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zcard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiff.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiff_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiffstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinter_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zintercard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinterstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zlexcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zmscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmax.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmax_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmin.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmin_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember_count_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrange_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebylex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebyscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebyscore_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangestore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebylex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebyrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebyscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrevrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunion.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunion_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunionstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/commands.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/socket.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/pub-sub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/commands-queue.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/errors.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/multi-command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/multi-command.d.ts","./node_modules/generic-pool/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/commands.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/cluster-slots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/multi-command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/card.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/insert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/loadchunk.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/madd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/mexists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/scandump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/initbydim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/initbyprob.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/addnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/insertnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/loadchunk.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/scandump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/insert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/byrevrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/cdf.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/max.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/min.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/quantile.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/rank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/revrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/trimmed_mean.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/byrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/list_withcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/delete.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/explain.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/profile.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/ro_query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/slowlog.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/graph.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrappend.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrinsert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrtrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/debug_memory.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/forget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/mset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/numincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/nummultby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/objkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/objlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/resp.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/strappend.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/strlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/type.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/alter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aggregate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aggregate_withcursor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasupdate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/cursor_del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/cursor_read.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictdump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dropindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/explain.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/explaincli.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/search.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/profile_search.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/profile_aggregate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/search_nocontent.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/spellcheck.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withpayloads.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withscores_withpayloads.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/suglen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/syndump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/synupdate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/tagvals.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/alter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/createrule.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/decrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/deleterule.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/info_debug.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/madd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mget_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/queryindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/range.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/revrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrange_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrevrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrevrange_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/redis/dist/index.d.ts","./node_modules/cache-manager-redis-store/dist/index.d.ts","./src/config/cache.config.ts","./src/config/cors.config.ts","./node_modules/@nestjs/elasticsearch/dist/interfaces/elasticsearch-module-options.interface.d.ts","./node_modules/@nestjs/elasticsearch/dist/elasticsearch.module.d.ts","./node_modules/@nestjs/elasticsearch/dist/elasticsearch.service.d.ts","./node_modules/@nestjs/elasticsearch/dist/interfaces/index.d.ts","./node_modules/@nestjs/elasticsearch/dist/index.d.ts","./node_modules/@nestjs/elasticsearch/index.d.ts","./src/config/elasticsearch.config.ts","./node_modules/@standard-schema/spec/dist/index.d.ts","./node_modules/joi/lib/index.d.ts","./src/config/env.validation.ts","./src/config/feature-flags.config.ts","./src/courses/dto/course-search.dto.ts","./src/courses/dto/create-course.dto.ts","./src/courses/dto/create-lesson.dto.ts","./src/courses/dto/create-module.dto.ts","./src/courses/dto/update-course.dto.ts","./src/courses/lessons/lessons.service.ts","./src/courses/modules/modules.service.ts","./src/database/pool/pool.config.ts","./src/database/pool/pool-monitor.service.ts","./src/database/pool/pool-leak-detector.service.ts","./src/database/database-pool.module.ts","./src/database/pool/index.ts","./node_modules/@nestjs/bull-shared/dist/bull.messages.d.ts","./node_modules/@nestjs/bull-shared/dist/bull.tokens.d.ts","./node_modules/@nestjs/bull-shared/dist/errors/missing-shared-bull-config.error.d.ts","./node_modules/@nestjs/bull-shared/dist/errors/index.d.ts","./node_modules/@nestjs/bull-shared/dist/helpers/create-conditional-dep-holder.helper.d.ts","./node_modules/@nestjs/bull-shared/dist/helpers/index.d.ts","./node_modules/@nestjs/bull-shared/dist/utils/get-queue-token.util.d.ts","./node_modules/@nestjs/bull-shared/dist/utils/index.d.ts","./node_modules/@nestjs/bull-shared/dist/index.d.ts","./node_modules/bull/index.d.ts","./node_modules/@nestjs/bull/dist/interfaces/bull.interfaces.d.ts","./node_modules/@nestjs/bull/dist/bull.types.d.ts","./node_modules/@nestjs/bull/dist/interfaces/bull-module-options.interface.d.ts","./node_modules/@nestjs/bull/dist/interfaces/shared-bull-config.interface.d.ts","./node_modules/@nestjs/bull/dist/interfaces/index.d.ts","./node_modules/@nestjs/bull/dist/bull.module.d.ts","./node_modules/@nestjs/bull/dist/decorators/inject-queue.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/process.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/processor.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/queue-hooks.decorators.d.ts","./node_modules/@nestjs/bull/dist/decorators/index.d.ts","./node_modules/@nestjs/bull/dist/enums/bull-queue-events.enum.d.ts","./node_modules/@nestjs/bull/dist/enums/bull-queue-global-events.enum.d.ts","./node_modules/@nestjs/bull/dist/enums/index.d.ts","./node_modules/@nestjs/bull/dist/utils/get-queue-options-token.util.d.ts","./node_modules/@nestjs/bull/dist/utils/get-shared-config-token.util.d.ts","./node_modules/@nestjs/bull/dist/utils/index.d.ts","./node_modules/@nestjs/bull/dist/index.d.ts","./node_modules/eventemitter2/eventemitter2.d.ts","./node_modules/@nestjs/event-emitter/dist/constants.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/event-emitter-options.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/on-event-options.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/event-payload-host.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/index.d.ts","./node_modules/@nestjs/event-emitter/dist/decorators/on-event.decorator.d.ts","./node_modules/@nestjs/event-emitter/dist/decorators/index.d.ts","./node_modules/@nestjs/event-emitter/dist/event-emitter-readiness.watcher.d.ts","./node_modules/@nestjs/event-emitter/dist/event-emitter.module.d.ts","./node_modules/@nestjs/event-emitter/dist/index.d.ts","./src/email-marketing/enums/trigger-type.enum.ts","./src/email-marketing/entities/automation-trigger.entity.ts","./src/email-marketing/enums/action-type.enum.ts","./src/email-marketing/entities/automation-action.entity.ts","./src/email-marketing/enums/workflow-status.enum.ts","./src/email-marketing/entities/automation-workflow.entity.ts","./src/email-marketing/dto/create-automation.dto.ts","./src/email-marketing/dto/update-automation.dto.ts","./src/email-marketing/automation/automation.service.ts","./src/email-marketing/automation/automation.controller.ts","./src/email-marketing/dto/add-segment-members.dto.ts","./src/email-marketing/dto/create-ab-test.dto.ts","./src/email-marketing/dto/create-campaign.dto.ts","./src/email-marketing/enums/segment-rule-field.enum.ts","./src/email-marketing/enums/segment-rule-operator.enum.ts","./src/email-marketing/dto/create-segment.dto.ts","./src/email-marketing/dto/create-template.dto.ts","./src/email-marketing/dto/update-campaign.dto.ts","./src/email-marketing/dto/schedule-campaign.dto.ts","./src/email-marketing/dto/update-template.dto.ts","./src/email-marketing/dto/update-segment.dto.ts","./src/email-marketing/dto/index.ts","./src/email-marketing/entities/email-template.entity.ts","./src/email-marketing/enums/recipient-status.enum.ts","./src/email-marketing/entities/campaign-recipient.entity.ts","./src/email-marketing/enums/campaign-status.enum.ts","./src/email-marketing/entities/campaign.entity.ts","./src/email-marketing/enums/ab-test-status.enum.ts","./src/email-marketing/entities/ab-test.entity.ts","./src/email-marketing/entities/ab-test-variant.entity.ts","./src/email-marketing/enums/email-event-type.enum.ts","./src/email-marketing/entities/email-event.entity.ts","./src/email-marketing/entities/email-subscription.entity.ts","./src/email-marketing/entities/segment-rule.entity.ts","./src/email-marketing/entities/segment.entity.ts","./src/email-marketing/entities/index.ts","./src/email-marketing/enums/index.ts","./node_modules/handlebars/types/index.d.ts","./src/email-marketing/templates/template-management.service.ts","./src/email-marketing/templates/template.controller.ts","./src/feature-flags/interfaces/index.ts","./src/gamification/entities/badge.entity.ts","./src/gamification/entities/user-badge.entity.ts","./src/gamification/badges/badges.service.ts","./src/gamification/entities/challenge.entity.ts","./src/gamification/entities/point-transaction.entity.ts","./src/gamification/entities/user-challenge.entity.ts","./src/gamification/entities/user-progress.entity.ts","./src/gamification/leaderboards/leaderboards.service.ts","./src/gamification/points/points.service.ts","./node_modules/@nestjs/graphql/dist/decorators/args-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/base-type-options.interface.d.ts","./node_modules/graphql/version.d.ts","./node_modules/graphql/jsutils/maybe.d.ts","./node_modules/graphql/language/source.d.ts","./node_modules/graphql/jsutils/objmap.d.ts","./node_modules/graphql/jsutils/path.d.ts","./node_modules/graphql/jsutils/promiseorvalue.d.ts","./node_modules/graphql/language/kinds.d.ts","./node_modules/graphql/language/tokenkind.d.ts","./node_modules/graphql/language/ast.d.ts","./node_modules/graphql/language/location.d.ts","./node_modules/graphql/error/graphqlerror.d.ts","./node_modules/graphql/language/directivelocation.d.ts","./node_modules/graphql/type/directives.d.ts","./node_modules/graphql/type/schema.d.ts","./node_modules/graphql/type/definition.d.ts","./node_modules/graphql/execution/execute.d.ts","./node_modules/graphql/graphql.d.ts","./node_modules/graphql/type/scalars.d.ts","./node_modules/graphql/type/introspection.d.ts","./node_modules/graphql/type/validate.d.ts","./node_modules/graphql/type/assertname.d.ts","./node_modules/graphql/type/index.d.ts","./node_modules/graphql/language/printlocation.d.ts","./node_modules/graphql/language/lexer.d.ts","./node_modules/graphql/language/parser.d.ts","./node_modules/graphql/language/printer.d.ts","./node_modules/graphql/language/visitor.d.ts","./node_modules/graphql/language/predicates.d.ts","./node_modules/graphql/language/index.d.ts","./node_modules/graphql/execution/subscribe.d.ts","./node_modules/graphql/execution/values.d.ts","./node_modules/graphql/execution/index.d.ts","./node_modules/graphql/subscription/index.d.ts","./node_modules/graphql/utilities/typeinfo.d.ts","./node_modules/graphql/validation/validationcontext.d.ts","./node_modules/graphql/validation/validate.d.ts","./node_modules/graphql/validation/rules/maxintrospectiondepthrule.d.ts","./node_modules/graphql/validation/specifiedrules.d.ts","./node_modules/graphql/validation/rules/executabledefinitionsrule.d.ts","./node_modules/graphql/validation/rules/fieldsoncorrecttyperule.d.ts","./node_modules/graphql/validation/rules/fragmentsoncompositetypesrule.d.ts","./node_modules/graphql/validation/rules/knownargumentnamesrule.d.ts","./node_modules/graphql/validation/rules/knowndirectivesrule.d.ts","./node_modules/graphql/validation/rules/knownfragmentnamesrule.d.ts","./node_modules/graphql/validation/rules/knowntypenamesrule.d.ts","./node_modules/graphql/validation/rules/loneanonymousoperationrule.d.ts","./node_modules/graphql/validation/rules/nofragmentcyclesrule.d.ts","./node_modules/graphql/validation/rules/noundefinedvariablesrule.d.ts","./node_modules/graphql/validation/rules/nounusedfragmentsrule.d.ts","./node_modules/graphql/validation/rules/nounusedvariablesrule.d.ts","./node_modules/graphql/validation/rules/overlappingfieldscanbemergedrule.d.ts","./node_modules/graphql/validation/rules/possiblefragmentspreadsrule.d.ts","./node_modules/graphql/validation/rules/providedrequiredargumentsrule.d.ts","./node_modules/graphql/validation/rules/scalarleafsrule.d.ts","./node_modules/graphql/validation/rules/singlefieldsubscriptionsrule.d.ts","./node_modules/graphql/validation/rules/uniqueargumentnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquedirectivesperlocationrule.d.ts","./node_modules/graphql/validation/rules/uniquefragmentnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueinputfieldnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueoperationnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquevariablenamesrule.d.ts","./node_modules/graphql/validation/rules/valuesofcorrecttyperule.d.ts","./node_modules/graphql/validation/rules/variablesareinputtypesrule.d.ts","./node_modules/graphql/validation/rules/variablesinallowedpositionrule.d.ts","./node_modules/graphql/validation/rules/loneschemadefinitionrule.d.ts","./node_modules/graphql/validation/rules/uniqueoperationtypesrule.d.ts","./node_modules/graphql/validation/rules/uniquetypenamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueenumvaluenamesrule.d.ts","./node_modules/graphql/validation/rules/uniquefielddefinitionnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueargumentdefinitionnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquedirectivenamesrule.d.ts","./node_modules/graphql/validation/rules/possibletypeextensionsrule.d.ts","./node_modules/graphql/validation/rules/custom/nodeprecatedcustomrule.d.ts","./node_modules/graphql/validation/rules/custom/noschemaintrospectioncustomrule.d.ts","./node_modules/graphql/validation/index.d.ts","./node_modules/graphql/error/syntaxerror.d.ts","./node_modules/graphql/error/locatederror.d.ts","./node_modules/graphql/error/index.d.ts","./node_modules/graphql/utilities/getintrospectionquery.d.ts","./node_modules/graphql/utilities/getoperationast.d.ts","./node_modules/graphql/utilities/getoperationroottype.d.ts","./node_modules/graphql/utilities/introspectionfromschema.d.ts","./node_modules/graphql/utilities/buildclientschema.d.ts","./node_modules/graphql/utilities/buildastschema.d.ts","./node_modules/graphql/utilities/extendschema.d.ts","./node_modules/graphql/utilities/lexicographicsortschema.d.ts","./node_modules/graphql/utilities/printschema.d.ts","./node_modules/graphql/utilities/typefromast.d.ts","./node_modules/graphql/utilities/valuefromast.d.ts","./node_modules/graphql/utilities/valuefromastuntyped.d.ts","./node_modules/graphql/utilities/astfromvalue.d.ts","./node_modules/graphql/utilities/coerceinputvalue.d.ts","./node_modules/graphql/utilities/concatast.d.ts","./node_modules/graphql/utilities/separateoperations.d.ts","./node_modules/graphql/utilities/stripignoredcharacters.d.ts","./node_modules/graphql/utilities/typecomparators.d.ts","./node_modules/graphql/utilities/assertvalidname.d.ts","./node_modules/graphql/utilities/findbreakingchanges.d.ts","./node_modules/graphql/utilities/typedquerydocumentnode.d.ts","./node_modules/graphql/utilities/resolveschemacoordinate.d.ts","./node_modules/graphql/utilities/index.d.ts","./node_modules/graphql/index.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/field-middleware.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/build-schema-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/complexity.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/custom-scalar.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/gql-exception-filter.interface.d.ts","./node_modules/@graphql-typed-document-node/core/typings/index.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/interfaces.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/loaders.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/helpers.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getdirectiveextensions.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/types.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-fields-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-arguments-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-implementing-types.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/print-schema-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/validate-documents.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/parse-graphql-json.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/parse-graphql-sdl.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/build-operation-for-field.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/filterschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/heal.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getresolversfromschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/foreachfield.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/foreachdefaultvalue.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mapschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/addtypes.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/rewire.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/prune.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mergedeep.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/stub.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/selectionsets.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getresponsekeyfrominfo.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fields.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/renametype.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/transforminputvalue.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/executor.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mapasynciterator.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/updateargument.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/implementsabstracttype.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/errors.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/observabletoasynciterable.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/visitresult.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getargumentvalues.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/valuematchescriteria.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/isasynciterable.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/isdocumentnode.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/astfromvalueuntyped.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/withcancel.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/roottypes.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/comments.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/collectfields.d.ts","./node_modules/cross-inspect/typings/index.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/memoize.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fixschemaast.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getoperationastfromrequest.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/extractextensionsfromschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/path.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/jsutils.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mergeincrementalresult.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/debugtimer.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/map-maybe-promise.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fakepromise.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/createdeferred.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/index.d.ts","./node_modules/@ts-morph/common/lib/typescript.d.ts","./node_modules/@ts-morph/common/lib/ts-morph-common.d.ts","./node_modules/ts-morph/lib/ts-morph.d.ts","./node_modules/@nestjs/graphql/dist/graphql-ast.explorer.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/schema-file-config.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/gql-module-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/graphql-driver.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/resolve-type-fn.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/return-type-func.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/build-federated-schema-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/index.d.ts","./node_modules/@nestjs/graphql/dist/decorators/args.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/context.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/directive.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/extensions.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/hide-field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/info.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/input-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/interface-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/mutation.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/object-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/parent.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/query.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-property.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-reference.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolver.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/root.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/scalar.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/subscription.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/index.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/type-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/directive.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/param.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/resolver.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/orphaned-reference.registry.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/property.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/class.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/enum.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/extensions.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/union.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/type-mapper.service.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/enum-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/type-fields.accessor.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/ast-definition-node.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/input-type-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/interface.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/output-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/resolve-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/interface-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/object-type.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/object-type-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/union-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/input-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/args.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/root-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/mutation-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/orphaned-types.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/query-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/subscription-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/helpers/file-system.helper.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/resolver-metadata.interface.d.ts","./node_modules/@nestjs/graphql/dist/services/base-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-arguments-host.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-execution-context.d.ts","./node_modules/graphql-ws/lib/common.d.ts","./node_modules/graphql-ws/lib/client.d.ts","./node_modules/graphql-ws/lib/server.d.ts","./node_modules/graphql-ws/lib/index.d.ts","./node_modules/subscriptions-transport-ws/node_modules/eventemitter3/index.d.ts","./node_modules/subscriptions-transport-ws/dist/client.d.ts","./node_modules/@types/ws/index.d.ts","./node_modules/subscriptions-transport-ws/dist/server.d.ts","./node_modules/subscriptions-transport-ws/dist/message-types.d.ts","./node_modules/subscriptions-transport-ws/dist/protocol.d.ts","./node_modules/subscriptions-transport-ws/dist/index.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-subscription.service.d.ts","./node_modules/@nestjs/graphql/dist/services/resolvers-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/scalars-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-schema.builder.d.ts","./node_modules/@nestjs/graphql/dist/graphql.factory.d.ts","./node_modules/@nestjs/graphql/dist/drivers/abstract-graphql.driver.d.ts","./node_modules/@nestjs/graphql/dist/drivers/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-types.loader.d.ts","./node_modules/@nestjs/graphql/dist/graphql-definitions.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/graphql-federation-definitions.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/type-defs-decorator.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/graphql-federation.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-schema.host.d.ts","./node_modules/@nestjs/graphql/dist/graphql.constants.d.ts","./node_modules/@nestjs/graphql/dist/graphql.module.d.ts","./node_modules/@nestjs/graphql/dist/scalars/iso-date.scalar.d.ts","./node_modules/@nestjs/graphql/dist/scalars/timestamp.scalar.d.ts","./node_modules/@nestjs/graphql/dist/scalars/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/type-metadata.storage.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/schema-builder.module.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/index.d.ts","./node_modules/@nestjs/graphql/dist/tokens.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/create-union-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/register-enum-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/index.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/field-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/class-decorator-factory.interface.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/intersection-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/omit-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/partial-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/pick-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/index.d.ts","./node_modules/@nestjs/graphql/dist/utils/extend.util.d.ts","./node_modules/@nestjs/graphql/dist/utils/transform-schema.util.d.ts","./node_modules/@nestjs/graphql/dist/index.d.ts","./src/graphql/inputs/assessment.input.ts","./src/graphql/inputs/course.input.ts","./src/graphql/inputs/user.input.ts","./src/graphql/inputs/index.ts","./src/graphql/types/assessment.type.ts","./src/graphql/resolvers/assessment.resolver.ts","./node_modules/graphql-subscriptions/dist/pubsub-async-iterable-iterator.d.ts","./node_modules/graphql-subscriptions/dist/pubsub-engine.d.ts","./node_modules/graphql-subscriptions/dist/pubsub.d.ts","./node_modules/graphql-subscriptions/dist/with-filter.d.ts","./node_modules/graphql-subscriptions/dist/index.d.ts","./src/graphql/types/course.type.ts","./src/graphql/types/user.type.ts","./src/graphql/resolvers/subscription.resolver.ts","./src/graphql/services/directive-validation.service.ts","./src/graphql/services/query-complexity.constants.ts","./src/graphql/services/schema-lint.service.ts","./src/graphql/types/index.ts","./src/interfaces/api-error.interface.ts","./src/learning-paths/services/milestone-tracking.service.ts","./src/learning-paths/services/skill-assessment.service.ts","./src/localization/localization.constants.ts","./src/localization/dto/bundle-query.dto.ts","./src/localization/dto/create-translation.dto.ts","./src/localization/dto/export-query.dto.ts","./src/localization/dto/import-translations.dto.ts","./src/localization/dto/list-translations-query.dto.ts","./src/localization/dto/update-translation.dto.ts","./src/localization/entities/translation.entity.ts","./src/media/dto/media.dto.ts","./src/media/processing/video-processing.service.ts","./src/media/validation/file-validation.constants.ts","./src/media/validation/upload-progress.service.ts","./src/media/validation/upload-validation.util.ts","./src/messaging/tracing/tracing.service.ts","./src/messaging/messaging.service.ts","./src/middleware/audit/user-action-tracker.ts","./src/middleware/audit/audit-logger.middleware.ts","./src/tenancy/entities/tenant.entity.ts","./src/tenancy/isolation/isolation.service.ts","./src/middleware/tenant/tenant.middleware.ts","./src/middleware/tenant/tenant-rls.subscriber.ts","./src/tenancy/decorators/requires-tenant.decorator.ts","./src/middleware/tenant/tenant-access-validation.guard.ts","./src/middleware/tenant/index.ts","./src/middleware/throttle/throttle.middleware.ts","./src/migrations/entities/migration.entity.ts","./src/moderation/analytics/moderation-event.entity.ts","./src/moderation/analytics/moderation-analytics.service.ts","./node_modules/@huggingface/tasks/dist/commonjs/pipelines.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/audio-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/automatic-speech-recognition/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/chat-completion/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/document-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/feature-extraction/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/fill-mask/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-text/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-segmentation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-text-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-text-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/object-detection/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/depth-estimation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/sentence-similarity/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/summarization/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/table-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-speech/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/token-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/translation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-generation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/video-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/visual-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-image-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-object-detection/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/index.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/widget-example.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tokenizer-data.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-data.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-libraries-downloads.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-libraries.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/library-to-tasks.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/default-widget-inputs.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/gguf.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/common.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/types.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/inputs.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/index.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/hardware.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/local-apps.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/dataset-libraries.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/inference-providers.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/eval.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/types.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/custom/request.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/custom/streamingrequest.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/utils.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/audioclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/audiotoaudio.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/automaticspeechrecognition.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/texttospeech.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/utils.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imageclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagesegmentation.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetotext.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetexttoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetexttovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/objectdetection.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/texttoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/texttovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/zeroshotimageclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/chatcompletion.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/chatcompletionstream.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/featureextraction.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/fillmask.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/questionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/sentencesimilarity.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/summarization.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/tablequestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textgeneration.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textgenerationstream.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/tokenclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/translation.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/zeroshotclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/multimodal/documentquestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/multimodal/visualquestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/tabular/tabularclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/tabular/tabularregression.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/inferenceclient.d.ts","./node_modules/@huggingface/inference/dist/commonjs/vendor/type-fest/basic.d.ts","./node_modules/@huggingface/inference/dist/commonjs/errors.d.ts","./node_modules/@huggingface/inference/dist/commonjs/snippets/getinferencesnippets.d.ts","./node_modules/@huggingface/inference/dist/commonjs/snippets/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/providers/providerhelper.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/getproviderhelper.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/makerequestoptions.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/logger.d.ts","./node_modules/@huggingface/inference/dist/commonjs/index.d.ts","./src/moderation/auto/auto-moderation.service.ts","./src/moderation/manual/review-item.entity.ts","./src/moderation/manual/manual-review.service.ts","./src/moderation/safety/content-safety.service.ts","./src/monitoring/cost-tracking.service.ts","./src/monitoring/cost-scheduler.service.ts","./node_modules/@types/nodemailer/lib/dkim/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","./node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/index.d.ts","./node_modules/@types/nodemailer/lib/mime-node/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","./node_modules/@types/nodemailer/lib/shared/index.d.ts","./node_modules/@types/nodemailer/lib/json-transport/index.d.ts","./node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","./node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","./node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","./node_modules/@types/nodemailer/index.d.ts","./node_modules/axios/index.d.ts","./src/monitoring/alerting/alerting.service.ts","./src/monitoring/cloud/aws-cost-collector.service.ts","./src/monitoring/dto/create-cost.dto.ts","./node_modules/@smithy/types/dist-types/abort-handler.d.ts","./node_modules/@smithy/types/dist-types/abort.d.ts","./node_modules/@smithy/types/dist-types/auth/auth.d.ts","./node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","./node_modules/@smithy/types/dist-types/identity/identity.d.ts","./node_modules/@smithy/types/dist-types/response.d.ts","./node_modules/@smithy/types/dist-types/command.d.ts","./node_modules/@smithy/types/dist-types/endpoint.d.ts","./node_modules/@smithy/types/dist-types/feature-ids.d.ts","./node_modules/@smithy/types/dist-types/logger.d.ts","./node_modules/@smithy/types/dist-types/uri.d.ts","./node_modules/@smithy/types/dist-types/http.d.ts","./node_modules/@smithy/types/dist-types/util.d.ts","./node_modules/@smithy/types/dist-types/middleware.d.ts","./node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","./node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","./node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","./node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@smithy/types/dist-types/auth/index.d.ts","./node_modules/@smithy/types/dist-types/transform/exact.d.ts","./node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","./node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","./node_modules/@smithy/types/dist-types/crypto.d.ts","./node_modules/@smithy/types/dist-types/checksum.d.ts","./node_modules/@smithy/types/dist-types/client.d.ts","./node_modules/@smithy/types/dist-types/connection/config.d.ts","./node_modules/@smithy/types/dist-types/transfer.d.ts","./node_modules/@smithy/types/dist-types/connection/manager.d.ts","./node_modules/@smithy/types/dist-types/connection/pool.d.ts","./node_modules/@smithy/types/dist-types/connection/index.d.ts","./node_modules/@smithy/types/dist-types/eventstream.d.ts","./node_modules/@smithy/types/dist-types/encode.d.ts","./node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","./node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/index.d.ts","./node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","./node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","./node_modules/@smithy/types/dist-types/shapes.d.ts","./node_modules/@smithy/types/dist-types/retry.d.ts","./node_modules/@smithy/types/dist-types/extensions/retry.d.ts","./node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/@smithy/types/dist-types/extensions/index.d.ts","./node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","./node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/index.d.ts","./node_modules/@smithy/types/dist-types/pagination.d.ts","./node_modules/@smithy/types/dist-types/profile.d.ts","./node_modules/@smithy/types/dist-types/serde.d.ts","./node_modules/@smithy/types/dist-types/schema/sentinels.d.ts","./node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts","./node_modules/@smithy/types/dist-types/schema/traits.d.ts","./node_modules/@smithy/types/dist-types/schema/schema.d.ts","./node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts","./node_modules/@smithy/types/dist-types/signature.d.ts","./node_modules/@smithy/types/dist-types/stream.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","./node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","./node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","./node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","./node_modules/@smithy/types/dist-types/transform/mutable.d.ts","./node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","./node_modules/@smithy/types/dist-types/waiter.d.ts","./node_modules/@smithy/types/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts","./node_modules/@aws-sdk/types/dist-types/abort.d.ts","./node_modules/@aws-sdk/types/dist-types/auth.d.ts","./node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts","./node_modules/@aws-sdk/types/dist-types/checksum.d.ts","./node_modules/@aws-sdk/types/dist-types/client.d.ts","./node_modules/@aws-sdk/types/dist-types/command.d.ts","./node_modules/@aws-sdk/types/dist-types/connection.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/identity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/anonymousidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/loginidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/tokenidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/index.d.ts","./node_modules/@aws-sdk/types/dist-types/util.d.ts","./node_modules/@aws-sdk/types/dist-types/credentials.d.ts","./node_modules/@aws-sdk/types/dist-types/crypto.d.ts","./node_modules/@aws-sdk/types/dist-types/dns.d.ts","./node_modules/@aws-sdk/types/dist-types/encode.d.ts","./node_modules/@aws-sdk/types/dist-types/endpoint.d.ts","./node_modules/@aws-sdk/types/dist-types/eventstream.d.ts","./node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts","./node_modules/@aws-sdk/types/dist-types/function.d.ts","./node_modules/@aws-sdk/types/dist-types/http.d.ts","./node_modules/@aws-sdk/types/dist-types/logger.d.ts","./node_modules/@aws-sdk/types/dist-types/middleware.d.ts","./node_modules/@aws-sdk/types/dist-types/pagination.d.ts","./node_modules/@aws-sdk/types/dist-types/profile.d.ts","./node_modules/@aws-sdk/types/dist-types/request.d.ts","./node_modules/@aws-sdk/types/dist-types/response.d.ts","./node_modules/@aws-sdk/types/dist-types/retry.d.ts","./node_modules/@aws-sdk/types/dist-types/serde.d.ts","./node_modules/@aws-sdk/types/dist-types/shapes.d.ts","./node_modules/@aws-sdk/types/dist-types/signature.d.ts","./node_modules/@aws-sdk/types/dist-types/stream.d.ts","./node_modules/@aws-sdk/types/dist-types/token.d.ts","./node_modules/@aws-sdk/types/dist-types/transfer.d.ts","./node_modules/@aws-sdk/types/dist-types/uri.d.ts","./node_modules/@aws-sdk/types/dist-types/waiter.d.ts","./node_modules/@aws-sdk/types/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/queue-url.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/configurations.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/receive-message.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/send-message.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/send-message-batch.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromenv.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/gethomedir.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getprofilename.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfilepath.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfromfile.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/loadsharedconfigfiles.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/loadssosessiondata.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/parseknownfiles.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/externaldatainterceptor.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/readfile.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromsharedconfigfiles.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromstatic.d.ts","./node_modules/@smithy/node-config-provider/dist-types/configloader.d.ts","./node_modules/@smithy/node-config-provider/dist-types/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusedualstackendpointconfigoptions.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusefipsendpointconfigoptions.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolveendpointsconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolvecustomendpointsconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/config.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/resolveregionconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvarianttag.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvariant.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/partitionhash.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/regionhash.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/getregioninfo.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/index.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointconfig.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getendpointfrominstructions.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toendpointv1.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/endpointmiddleware.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/getendpointplugin.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointrequiredconfig.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts","./node_modules/@smithy/util-retry/dist-types/standardretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/types.d.ts","./node_modules/@smithy/util-retry/dist-types/adaptiveretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/configuredretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/defaultratelimiter.d.ts","./node_modules/@smithy/util-retry/dist-types/config.d.ts","./node_modules/@smithy/util-retry/dist-types/constants.d.ts","./node_modules/@smithy/util-retry/dist-types/retries-2026-config.d.ts","./node_modules/@smithy/util-retry/dist-types/index.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/types.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/standardretrystrategy.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/adaptiveretrystrategy.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/delaydecider.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/retrydecider.d.ts","./node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts","./node_modules/@smithy/middleware-retry/dist-types/omitretryheadersmiddleware.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retrymiddleware.d.ts","./node_modules/@smithy/middleware-retry/dist-types/parseretryafterheader.d.ts","./node_modules/@smithy/middleware-retry/dist-types/index.d.ts","./node_modules/@smithy/protocol-http/dist-types/httprequest.d.ts","./node_modules/@smithy/protocol-http/dist-types/httpresponse.d.ts","./node_modules/@smithy/protocol-http/dist-types/httphandler.d.ts","./node_modules/@smithy/protocol-http/dist-types/extensions/httpextensionconfiguration.d.ts","./node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts","./node_modules/@smithy/protocol-http/dist-types/field.d.ts","./node_modules/@smithy/protocol-http/dist-types/fields.d.ts","./node_modules/@smithy/protocol-http/dist-types/isvalidhostname.d.ts","./node_modules/@smithy/protocol-http/dist-types/types.d.ts","./node_modules/@smithy/protocol-http/dist-types/index.d.ts","./node_modules/@smithy/smithy-client/dist-types/client.d.ts","./node_modules/@smithy/util-stream/dist-types/blob/uint8arrayblobadapter.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.browser.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.browser.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.d.ts","./node_modules/@smithy/util-stream/dist-types/createbufferedreadable.d.ts","./node_modules/@smithy/util-stream/dist-types/getawschunkedencodingstream.d.ts","./node_modules/@smithy/util-stream/dist-types/headstream.d.ts","./node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts","./node_modules/@smithy/util-stream/dist-types/splitstream.d.ts","./node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts","./node_modules/@smithy/util-stream/dist-types/index.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/middleware/getschemaserdeplugin.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/schema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/listschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/mapschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/operationschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/structureschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/errorschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/normalizedschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/simpleschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/translatetraits.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/typeregistry.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts","./node_modules/@smithy/core/schema.d.ts","./node_modules/@smithy/core/dist-types/submodules/event-streams/eventstreamserde.d.ts","./node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts","./node_modules/@smithy/core/event-streams.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serdecontext.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/httpprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/httpbindingprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/rpcprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/requestbuilder.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/fromstringshapedeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapedeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/tostringshapeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/determinetimestampformat.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts","./node_modules/@smithy/core/protocols.d.ts","./node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts","./node_modules/@smithy/smithy-client/dist-types/command.d.ts","./node_modules/@smithy/smithy-client/dist-types/constants.d.ts","./node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts","./node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts","./node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts","./node_modules/@smithy/smithy-client/dist-types/emitwarningifunsupportedversion.d.ts","./node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts","./node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts","./node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts","./node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts","./node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts","./node_modules/@smithy/smithy-client/dist-types/nooplogger.d.ts","./node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts","./node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts","./node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts","./node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/copydocumentwithtransform.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts","./node_modules/@smithy/uuid/dist-types/v4.d.ts","./node_modules/@smithy/uuid/dist-types/index.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/generateidempotencytoken.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/value/numericvalue.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts","./node_modules/@smithy/core/serde.d.ts","./node_modules/@smithy/smithy-client/dist-types/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4aconfig.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4signer.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4asigner.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/node_auth_scheme_preference_options.d.ts","./node_modules/@smithy/signature-v4/dist-types/signaturev4base.d.ts","./node_modules/@smithy/signature-v4/dist-types/signaturev4.d.ts","./node_modules/@smithy/signature-v4/dist-types/constants.d.ts","./node_modules/@smithy/signature-v4/dist-types/getcanonicalheaders.d.ts","./node_modules/@smithy/signature-v4/dist-types/getcanonicalquery.d.ts","./node_modules/@smithy/signature-v4/dist-types/getpayloadhash.d.ts","./node_modules/@smithy/signature-v4/dist-types/moveheaderstoquery.d.ts","./node_modules/@smithy/signature-v4/dist-types/preparerequest.d.ts","./node_modules/@smithy/signature-v4/dist-types/credentialderivation.d.ts","./node_modules/@smithy/signature-v4/dist-types/headerutil.d.ts","./node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts","./node_modules/@smithy/signature-v4/dist-types/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4config.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/utils/getbearertokenenvkey.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/index.d.ts","./node_modules/@aws-sdk/core/httpauthschemes.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/addpermissioncommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/cancelmessagemovetaskcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/changemessagevisibilitybatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/changemessagevisibilitycommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/createqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletemessagebatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletemessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletequeuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/getqueueattributescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/getqueueurlcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listdeadlettersourcequeuescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listmessagemovetaskscommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listqueuescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listqueuetagscommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/purgequeuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/receivemessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/removepermissioncommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/sendmessagebatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/sendmessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/setqueueattributescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/startmessagemovetaskcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/tagqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/untagqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/sqsclient.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/sqs.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/listdeadlettersourcequeuespaginator.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/listqueuespaginator.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/sqsserviceexception.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/addpermissioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/checkifphonenumberisoptedoutcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/confirmsubscriptioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createplatformendpointcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createsmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createtopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deleteendpointcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deleteplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deletesmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deletetopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getdataprotectionpolicycommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getendpointattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getplatformapplicationattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsmsattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsmssandboxaccountstatuscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsubscriptionattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/gettopicattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listendpointsbyplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listoriginationnumberscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listphonenumbersoptedoutcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listplatformapplicationscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsmssandboxphonenumberscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsubscriptionsbytopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsubscriptionscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listtagsforresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listtopicscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/optinphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/publishbatchcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/publishcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/putdataprotectionpolicycommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/removepermissioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setendpointattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setplatformapplicationattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setsmsattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setsubscriptionattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/settopicattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/subscribecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/tagresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/unsubscribecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/untagresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/verifysmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/snsclient.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/sns.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listendpointsbyplatformapplicationpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listoriginationnumberspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listphonenumbersoptedoutpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listplatformapplicationspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsmssandboxphonenumberspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsubscriptionspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsubscriptionsbytopicpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listtopicspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/snsserviceexception.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/index.d.ts","./src/notifications/entities/notification.entity.ts","./src/notifications/notifications.queue.ts","./src/notifications/dto/notification.dto.ts","./src/notifications/entities/notification-preferences.entity.ts","./src/notifications/preferences/preferences.service.ts","./src/observability/interfaces/observability.interfaces.ts","./node_modules/uuid/dist/max.d.ts","./node_modules/uuid/dist/nil.d.ts","./node_modules/uuid/dist/types.d.ts","./node_modules/uuid/dist/parse.d.ts","./node_modules/uuid/dist/stringify.d.ts","./node_modules/uuid/dist/v1.d.ts","./node_modules/uuid/dist/v1tov6.d.ts","./node_modules/uuid/dist/v35.d.ts","./node_modules/uuid/dist/v3.d.ts","./node_modules/uuid/dist/v4.d.ts","./node_modules/uuid/dist/v5.d.ts","./node_modules/uuid/dist/v6.d.ts","./node_modules/uuid/dist/v6tov1.d.ts","./node_modules/uuid/dist/v7.d.ts","./node_modules/uuid/dist/validate.d.ts","./node_modules/uuid/dist/version.d.ts","./node_modules/uuid/dist/index.d.ts","./src/observability/logging/structured-logger.service.ts","./src/onboarding/dto/onboarding-progress.dto.ts","./src/onboarding/entities/onboarding-reward.entity.ts","./src/onboarding/dto/onboarding-reward.dto.ts","./src/onboarding/entities/onboarding-step.entity.ts","./src/onboarding/dto/onboarding-step.dto.ts","./src/onboarding/entities/user-onboarding-progress.entity.ts","./src/orchestration/discovery/service-boundaries.ts","./src/orchestration/discovery/service-discovery.service.ts","./src/orchestration/locks/distributed-lock.service.ts","./src/payments/entities/payment.entity.ts","./src/payments/dto/create-payment.dto.ts","./src/payments/entities/subscription.entity.ts","./src/payments/dto/create-subscription.dto.ts","./src/payments/entities/refund.entity.ts","./src/payments/dto/refund.dto.ts","./node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts","./node_modules/@nestjs/mapped-types/dist/types/remove-fields-with-type.type.d.ts","./node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts","./node_modules/@nestjs/mapped-types/dist/index.d.ts","./node_modules/@nestjs/mapped-types/index.d.ts","./src/payments/dto/update-payment.dto.ts","./src/payments/entities/invoice.entity.ts","./src/payments/providers/payment-provider.interface.ts","./src/payments/subscriptions/subscription-job.processor.ts","./src/payments/subscriptions/subscriptions.service.ts","./src/payments/webhooks/migration-helper.ts","./src/payments/webhooks/webhook-security.service.ts","./src/payments/webhooks/stripe-webhook.guard.ts","./src/payments/webhooks/entities/webhook-retry.entity.ts","./src/payments/webhooks/dto/webhook-retry.dto.ts","./src/queues/queues.constants.ts","./src/queues/enums/job-priority.enum.ts","./src/queues/dto/queue.dto.ts","./src/queues/interfaces/queue.interfaces.ts","./src/queues/prioritization/prioritization.service.ts","./src/rate-limiting/rate-limiting.constants.ts","./src/rate-limiting/dto/create-rate-limiting.dto.ts","./src/rate-limiting/dto/update-rate-limiting.dto.ts","./src/rate-limiting/entities/rate-limiting.entity.ts","./src/rate-limiting/services/adaptive-rate-limiting.service.ts","./src/rate-limiting/services/quota.service.ts","./src/search/elasticsearch/elasticsearch.service.ts","./src/security/security.service.ts","./src/security/encryption/encryption.service.ts","./src/security/threats/threat-detection.service.ts","./src/security/compliance/compliance.service.ts","./src/security/audit/audit-logging.service.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/batchgetsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/cancelrotatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/createsecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/deleteresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/deletesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/describesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getrandompasswordcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/listsecretscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/listsecretversionidscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/putresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/putsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/removeregionsfromreplicationcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/replicatesecrettoregionscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/restoresecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/rotatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/stopreplicationtoreplicacommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/tagresourcecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/untagresourcecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/updatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/updatesecretversionstagecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/validateresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/secretsmanagerclient.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/secretsmanager.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/batchgetsecretvaluepaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/listsecretspaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/listsecretversionidspaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/secretsmanagerserviceexception.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/index.d.ts","./src/security/secrets/secrets-manager.service.ts","./src/security/secrets/vault-secrets.service.ts","./src/security/secrets/secrets.controller.ts","./src/security/secrets/secrets.module.ts","./src/security/security.module.ts","./src/session/session.constants.ts","./src/session/session.service.ts","./src/session/session.module.ts","./src/sync/conflicts/conflict-resolution.service.ts","./src/sync/consistency/data-consistency.service.ts","./node_modules/@nestjs/cache-manager/dist/cache.constants.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/cache-manager.interface.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/cache-module.interface.d.ts","./node_modules/@nestjs/cache-manager/dist/cache.module-definition.d.ts","./node_modules/@nestjs/cache-manager/dist/cache.module.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/cache-key.decorator.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/cache-ttl.decorator.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/index.d.ts","./node_modules/@nestjs/cache-manager/dist/interceptors/cache.interceptor.d.ts","./node_modules/@nestjs/cache-manager/dist/interceptors/index.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/index.d.ts","./node_modules/@nestjs/cache-manager/dist/index.d.ts","./node_modules/@nestjs/cache-manager/index.d.ts","./src/sync/cache/cache-invalidation.service.ts","./src/sync/replication/replication.service.ts","./src/sync/sync.service.ts","./src/sync/sync.module.ts","./src/tenancy/tenancy.constants.ts","./src/tenancy/entities/tenant-config.entity.ts","./src/tenancy/entities/tenant-billing.entity.ts","./src/tenancy/entities/tenant-customization.entity.ts","./src/tenancy/dto/tenant.dto.ts","./src/tenancy/billing/tenant-billing.service.ts","./src/tenancy/customization/customization.service.ts","./src/tenancy/tenancy.service.ts","./src/tenancy/admin/tenant-admin.service.ts","./src/tenancy/tenancy.controller.ts","./src/tenancy/tenancy.guard.ts","./src/tenancy/guards/tenant.guard.ts","./src/tenancy/tenancy.module.ts","./src/tenancy/decorators/current-tenant.decorator.ts","./src/users/user.constants.ts","./src/users/dto/get-users.dto.ts","./src/utils/masking/field-masking.util.ts","./src/utils/masking/role-visibility.util.ts","./src/utils/masking/masking-audit.service.ts","./src/utils/masking/mask-fields.decorator.ts","./src/utils/masking/masking.interceptor.ts","./src/utils/masking/index.ts","./src/workers/interfaces/worker.interfaces.ts","./src/workers/base/base.worker.ts","./src/workers/processors/email.worker.ts","./src/workers/processors/media-processing.worker.ts","./src/workers/processors/data-sync.worker.ts","./src/workers/processors/backup-processing.worker.ts","./src/workers/processors/webhooks.worker.ts","./src/workers/processors/subscriptions.worker.ts","./src/workers/processors/index.ts","./src/workers/orchestration/worker-orchestration.service.ts","./src/workers/health/worker-health-check.service.ts","./src/workers/workers.module.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695",{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","c91d3f9753a311284e76cdcb348cbb50bca98733336ec726b54d77b7361b34de","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","cf25d45c02d5fd5d7adb16230a0e1d6715441eef5c0a79a21bfeaa9bbc058939","54c3822eaf6436f2eddc92dd6e410750465aba218adbf8ce5d488d773919ec01","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","8b8b92781a6bf150f9ee83f3d8ee278b6cdb98b8308c7ab3413684fc5d9078ef","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","689390db63cb282e6d0e5ce9b8f1ec2ec0912d0e2e6dac7235699a15ad17d339","f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","d928324d17146fce30b99a28d1d6b48648feac72bbd23641d3ce5ac34aefdfee","142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","c33a88f2578e8df2fdf36c6a0482bbee615eb3234c8f084ba31a9a96bd306b7f","22cca068109eb0e6b4f8acc3fe638d1e6ac277e2044246438763319792b546a1","8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","66cd33c4151ea27f6e17c6071652eadde9da1b3637dae65fd060212211c695ce","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","53b094f1afe442490555eeeb0384fc1ceb487560c83e31f9c64fb934c2dccd94","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","91bf47a209ad0eae090023c3ebc1165a491cf9758799368ffcbee8dbe7448f33","0abe2cd72812bbfc509975860277c7cd6f6e0be95d765a9da77fee98264a7e32","13286c0c8524606b17a8d68650970bab896fb505f348f71601abf0f2296e8913","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f61963dc02ef27c48fb0e0016a413b1e00bcb8b97a3f5d4473cedc7b44c8dc77","272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","2b82adc9eead34b824a3f4dad315203fbfa56bee0061ccf9b485820606564f70","eb47aaa5e1b0a69388bb48422a991b9364a9c206a97983e0227289a9e1fca178","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","db2108aea36e7faa83c38f6fe8225b9ad40835c0cba7fa38e969768299b83173","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","2ad163aaddfa29231a021de6838f59378a210501634f125ed04cfa7d066ffc53","6305acbe492b9882ec940f8f0c8e5d1e1395258852f99328efcb1cf1683ca817","7619b1f6087a4e9336b2c42bd784b05aa4a2204a364b60171e5a628f817a381e","15be9120572c9fbcd3c267bd93b4140354514c9e70734e6fcca65ff4a246f83a","412482ab85893cec1d6f26231359474d1f59f6339e2743c08da1b05fc1d12767","858e2315e58af0d28fcd7f141a2505aba6a76fd10378ba0ad169b0336fee33fc","02da6c1b34f4ae2120d70cf5f9268bf1aedf62e55529d34f5974f5a93655ce38","3ecf179ef1cc28f7f9b46c8d2e496d50b542c176e94ed0147bab147b4a961cd6","b145da03ce7e174af5ced2cbbd16e96d3d5c2212f9a90d3657b63a5650a73b7f","c7aadab66a2bc90eeb0ab145ca4daebcbc038e24359263de3b40e7b1c7affba6","99518dc06286877a7b716e0f22c1a72d3c62be42701324b49f27bcc03573efff","f4575fd196a7e33c7be9773a71bcc5fbe7182a2152be909f6b8e8e7ba2438f06","05cba5acd77a4384389b9c62739104b5a1693efd66e6abac6c5ffc53280ae777","acacda82ebd929fe2fe9e31a37f193fc8498a7393a1c31dc5ceb656e2b45b708","1b13e7c5c58ab894fe65b099b6d19bb8afae6d04252db1bf55fe6ba95a0af954","4355d326c3129e5853b56267903f294ad03e34cc28b75f96b80734882dedac80","37139a8d45342c05b6a5aa1698a2e8e882d6dca5fb9a77aa91f05ac04e92e70b","e37191297f1234d3ae54edbf174489f9a3091a05fe959724db36f8e58d21fb17","3fca8fb3aab1bc7abb9b1420f517e9012fdddcbe18803bea2dd48fad6c45e92e","d0b0779e0cac4809a9a3c764ba3bd68314de758765a8e3b9291fe1671bfeb8a1","d2116b5f989aa68e585ae261b9d6d836be6ed1be0b55b47336d9f3db34674e86","d79a227dd654be16d8006eac8b67212679d1df494dfe6da22ea0bd34a13e010c","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","44a298a6c52a7dab8e970e95a6dabe20972a7c31c340842e0dc57f2c822826eb","6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","00b9ff040025f6b00e0f4ac8305fea1809975b325af31541bd9d69fa3b5e57b1","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","54d91053dc6a2936bfd01a130cc3b524e11aa0349da082e8ac03a8bf44250338","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","24abac81e9c60089a126704e936192b2309413b40a53d9da68dadd1dd107684e","f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","090fda1107e7d4f8f30a2b341834ed949f01737b5ec6021bb6981f8907330bdb","cc32874a27100c32e3706d347eb4f435d6dd5c0d83e547c157352f977bbc6385","e45b069d58c9ac341d371b8bc3db4fa7351b9eee1731bffd651cfc1eb622f844","7f3c74caad25bfb6dfbf78c6fe194efcf8f79d1703d785fc05cd606fe0270525","54f3f7ff36384ca5c9e1627118b43df3014b7e0f62c9722619d19cdb7e43d608","2f346f1233bae487f1f9a11025fc73a1bf9093ee47980a9f4a75b84ea0bb7021","013444d0b8c1f7b5115462c31573a699fee7458381b0611062a0069d3ef810e8","0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","8c4df93dafcf06adc42a63477cc38b352565a3ed0a19dd8ef7dfacc253749327","22a35275abc67f8aba44efc52b2f4b1abc2c94e183d36647fdab5a5e7c1bdf23","99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","6ecc423e71318bafbd230e6059e082c377170dfc7e02fccfa600586f8604d452","772f9bdd2bf50c9c01b0506001545e9b878faa7394ad6e7d90b49b179a024584","f204b03cb07517d71715ac8bc7552542bfab395adb53e31c07fbc67de6856de1","7467736a77548887faa90a7d0e074459810a5db4bbc6de302a2be6c05287ccae","39504a2c1278ee4d0dc1a34e27c80e58b4c53c08c87e3a7fc924f18c936bebb5","cd1ccdd9fd7980d43dfede5d42ee3d18064baed98b136089cf7c8221d562f058","d60f9a4fd1e734e7b79517f02622426ea1000deb7d6549dfdece043353691a4e","403d28b5e5f8fcff795ac038902033ec5890143e950af45bd91a3ed231e8b59c","c73b59f91088c00886d44ca296d53a75c263c3bda31e3b2f37ceb137382282be","e7aa2c584edb0970cb4bb01eb10344200286055f9a22bc3dadcc5a1f9199af3e","bfeb476eb0049185cb94c2bfcadb3ce1190554bbcf170d2bf7c68ed9bb00458e","ae23a65a2b664ffe979b0a2a98842e10bdf3af67a356f14bbc9d77eb3ab13585","eccf6ad2a8624329653896e8dbd03f30756cbd902a81b5d3942d6cf0e1a21575","1930c964051c04b4b5475702613cd5a27fcc2d33057aa946ff52bfca990dbc84","2793d525d79404df346e4ef58a82f9b6d28a7650beeb17378cd121c45ba03f02","62463aa3d299ae0cdc5473d2ac32213a05753c3adce87a8801c6d2b114a64116","c9c2eabaad71c534d7de16385977f95184fdf3ddd0339dadbd5d599488d94f90","d0642c453e6af4c0700182bec4afc5b2cc9498fe27c9b1bcf2e6f75dd1892699","8f4469dd750d15f72ba66876c8bc429d3c9ce49599a13f868a427d6681d45351","d1e888a33faeb1f0e3c558bbe0ea4a55056318e0b2f8eba72ffd6729c3bbff4e","f689c0633e8c95f550d36af943d775f3fae3dac81a28714b45c7af0bbb76a980","fef736cfb404b4db9aa942f377dbbac6edb76d18aabd3b647713fa75da8939e9","45659c92e49dfca4601acc7e57fbb03a71513c69768984baf86ead8d20387a01","0239d8f6a3f51b26cbdbb9362f4fde35651c6bd0ff3d9fc09ee4a2da6065cb4e","6e5ab399ec7bd61d4f86421cc6074fd904379c3923706c899d15146e4f9a08c8","c9ffec02582eed74f518ae3e32a5dcf4ac835532e548300c5c5f950cdfeead5f","df343f5de08f5b607a3c7954ff1b512b7fa983d561e136cce0b6dc6849602a15","8fc97ef271771dc6f81a9c846d007ac4f0cb5779e3f441c1de54dfda5046fe7b","b5a060e2a4c54695076f871ddc0c91a0ff8eea1262177c4ede5593acbf1ca3bb","08ee70765d3fa7c5bad4afbbe1c542771e17f84bfd5e3e872ae1fdc5160836c8","1c225a18846203fafc4334658715b0d3fd3ee842c4cfd42e628a535eda17730d","7ce93da38595d1caf57452d57e0733474564c2b290459d34f6e9dcf66e2d8beb","d7b672c1c583e9e34ff6df2549d6a55d7ca3adaf72e6a05081ea9ee625dac59f","f3a2902e84ebdef6525ed6bf116387a1256ea9ae8eeb36c22f070b7c9ea4cf09","33bb0d96cea9782d701332e6b7390f8efae3af92fd3e2aa2ac45e4a610e705d6","ae3e98448468e46474d817b5ebe74db11ab22c2feb60e292d96ce1a4ee963623","f0a2fdee9e801ac9320a8660dd6b8a930bf8c5b658d390ae0feafdba8b633688","7beb7f04f6186bdac5e622d44e4cac38d9f2b9fcad984b10d3762e369524dd77","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","21c59a54f96d28652517e0414207df2582ff86624237b2bc715037a49ba19dbe","2e19656c513ded3efe9d292e55d3661b47f21f48f9c7b22003b8522d6d78e42f","ddecf238214bfa352f7fb8ed748a7ec6c80f1edcb45053af466a4aa6a2b85ffe","896eec3b830d89bc3fb20a38589c111bbe4183dd422e61c6c985d6ccec46a1e9","907dab3492fc59404ecf40f9ad655251741c5f2e471bb0376d11dae3e27cb1d8","8629340be5692664c52a0e242705616c92b21330cb20acf23425fff401ac771f","81477bb2c9b97a9dd5ce7750ab4ae655e74172f0d536d637be345ba76b41cd92","b8ad793dc17938bc462812e3522bbd3d62519d91d9b4a6422bed1383c2d3eb42","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","6c6bd91368169cfa94b4f8cc64ebca2b050685ec76bc4082c44ce125b5530cca","f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","272af80940fcc0c8325e4a04322c50d11f8b8842f96ac66cbd440835e958dd14","1803e48a3ec919ccafbcafeef5e410776ca0644ae8c6c87beca4c92d8a964434","875c43c5409e197e72ee517cb1f8fd358406b4adf058dbdc1e50c8db93d68f26","8854713984b9588eac1cab69c9e2a6e1a33760d9a2d182169059991914dd8577","e333d487ca89f26eafb95ea4b59bea8ba26b357e9f2fd3728be81d999f9e8cf6","2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","c503be3ddb3990ab27ca20c6559d29b547d9f9413e05d2987dd7c4bcf52f3736","598b15f0ae9a73082631d14cb8297a1285150ca325dbce98fc29c4f0b7079443","8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","c94c1aa80687a277396307b80774ca540d0559c2f7ba340168c2637c82b1f766","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","6f6bdb523e5162216efc36ebba4f1ef8e845f1a9e55f15387df8e85206448aee","aa2d6531a04d6379318d29891de396f61ccc171bfd2f8448cc1649c184becdf2","d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","ab710f1ee2866e473454a348cffd8d5486e3c07c255f214e19e59a4f17eece4d","db7ff3459e80382c61441ea9171f183252b6acc82957ecb6285fff4dca55c585","4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","2a899aef0c6c94cc3537fe93ec8047647e77a3f52ee7cacda95a8c956d3623fb","ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","6a52170a5e4600bbb47a94a1dd9522dca7348ce591d8cdbb7d4fe3e23bbea461","6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","16c144a21cd99926eeba1605aec9984439e91aa864d1c210e176ca668f5f586a","af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","fd4107bd5c899165a21ab93768904d5cfb3e98b952f91fbf5a12789a4c0744e6","deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","77165b117f552be305d3bc2ef83424ff1e67afb22bfabd14ebebb3468c21fcaa","128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","d8ec19be7d6d3950992c3418f3a4aa2bcad144252bd7c0891462b5879f436e4e","db37aa3208b48bdcbc27c0c1ae3d1b86c0d5159e65543e8ab79cbfb37b1f2f34","d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","2daf06d8e15cbca27baa6c106253b92dad96afd87af9996cf49a47103b97dc95","1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","8109e0580fc71dbefd6091b8825acf83209b6c07d3f54c33afeafab5e1f88844","d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","df29ade4994de2d9327a5f44a706bbe6103022a8f40316839afa38d3e078ee06","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","d38f45cb868a830d130ac8b87d3f7e8caff4961a3a1feae055de5e538e20879a","4c30a5cb3097befb9704d16aa4670e64e39ea69c5964a1433b9ffd32e1a5a3a1","1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","7b3a5e25bf3c51af55cb2986b89949317aa0f6cbfb5317edd7d4037fa52219a9","3cd50f6a83629c0ec330fc482e587bfa96532d4c9ce85e6c3ddf9f52f63eee11","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","dadfa5fd3d5c511ca6bfe240243b5cf2e0f87e44ea63e23c4b2fce253c0d4601","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","55a6b0318ec658ff37bc88e18a93e5f10ddad7257b379b71abf39e6868b8d4d2","b7d85dc2de8db4ca983d848c8cfad6cf4d743f8cb35afe1957bedf997c858052","83daad5d7ae60a0aede88ea6b9e40853abcbe279c10187342b25e96e35bc9f78","3a4e276e678bae861d453944cf92178deaf9b6dcd363c8d10d5dd89d81b74a0c","db9661c9bca73e5be82c90359e6217540fd3fd674f0b9403edf04a619a57d563","f7a5ab7b54bdc6a13cf1015e1b5d6eeb31d765d54045281bfeefcdfcc982a37c","ec99a3d23510a4cb5bdc996b9f2170c78cde2bfa89a5aee4ca2c009a5f122310","2298578ed8dc91431a4169f474b9c3abb1d4344115fb6d3c518743bc55999435","1f7e9cdd7f849700830606ef31a28149b15b94640c3b327c98cf93c17dbe6fa9","e50665e9c15973983d46cf8a8cbae5565cdc26aafe70eef5091d6bbf4c2d7c05","7da2af949db050e10ff5b21d7069784cec38fb40152be13cdf9b520fc98fb5d7","281855e2236230b40bd5518bce5e1de9f66a06538b184e4f9a372eeadc474baa","7f13fe5f0621740c6bd52b221422153b749690243c280dc3b8d0a30d0da64625","ef420b0b67f2f12667cf34b6886695884dc23279c060ac44be17803c5cbf92b8","a760316edaafc2dccef602fdbd4fc78934eed89b7bb1b633aa4558a64b52778e","b4b8f5d8f18366d410891a9616337c4b4d576566b894d21268c6679a08a9bfa8","fe018bd53628682db6b2552f554b0503d3272c763846cdc5ab2bdbd17bc94c29","2e2bc02af7b535d267be8cecbc5831466dd71c5af294401821791b26cb363c47","986affe0f60331f20df7d708ee097056b0973d85422ec2ce754af19c1fa4e4b1","8f06c2807459f1958b297f4ad09c6612d7dbd7997c9ccfc6ea384f7538e0cea8","a7de30cd043d7299bfe9daaca3732b086e734341587c3e923b01f3fd74d31126","78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","3bf58923a1d27819745bdad52bca1bdced9fef12cc0c7f8a3fd5f4e0206b684a","8fc11f102df58f03d36fcbf0da3efa37c177f5f18f534c76179ceef0c3a672cd","e6935ab0f64a886e778c12a54ed6e9075ce7e7f44723ff0d52020a654b025a09","9829af7653a29f1b85d3dd688a6c6256087c0b737b85d84b630e7f93fd420faf","3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","03b419ce598d77fe4d1705c8281a797a908f57ce24a15d6174d7e7276d355a65","b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","9c15e2b87cd3d8b18881bcc7d72b2d1dc6d5fe078b674ae12c12c19ec09a6a1a","0de68916e23c1e3df800f9f61cdd7c506ceb0656fcbc245ee9974aad26786781","80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","ca476924dfa6120b807a14e0a8aea7b061b8bdaa7eecdb303d7957c769102e96","848fe622fac070f8af9255e5d63fe829e3da079cae30be48fb6deb5dbf2c27c6","f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","80fc027e10234b809a9a40086114a8154657dcb8478d58c85ef850592d352870","27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","94be5c5f8cf26bbf53554cba4b112e30134349b14f3c0fd0ede3b51ec25a7174","c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","7bd94408358caf1794ad24546ca0aa56f9be6be2d3245d0972fcb924b84a81fd","0e7c3660d1df392b6f6ae7fa697f0629ae4404e5b7bac05dd81136247aff32d5","b0b3636502dc0c50295f67747968f202f7b775eac5016329606d1bc2888d5dd9","f9ede7ea553dc197fd5d2604f62cda1be1aea50024ed73237d9e3144f0c93608","b1005ae67226fd9b7b65333d9a351917f517d421a0c63b7cde59bec3b8e3562f","c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","20efc25890a0b2f09e4d224afaaf84917baa77b1aee60d9dfd11ff8078d73f93","d00b48096854d711cee688e7ff1ca796c1bf0d27ca509633c2a98b85cc23d47d","30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","8be98ffc3c54fb40b220796b796388f8ade50c8ba813a811bffccf98006566d5","4e82eed3c1b5084132708ce030f8ec90b69e4b7bb844dcaacd808045ae24c0e2","eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","6da51da9b74383988b89e17298ceca510357f63830f78b40f72afe4d5a9cee3e","512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","f281f20b801830f2f94b2bc0b18aba01d4fb50c2f4a847ffcadff39de31c8b80","738ddac5ab5b61d70d3466f3906d6b3c83c8786e922c6e726a6597296181ae87","90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","dd3f42651cfa863ded8fa0b0608fb892b826e254a0a6cbc447388cb5e11bffd5","8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","e7b9673dcd3d1825dbd70ad1d1f848d68189afc302ecdafc6eb30cbe7bd420b5","15911b87a2ad4b65b30c445802d55fa6186c66068603113042e8c3dfa4a35e2a","a9dc7b8d06b1f69d219f61fa3f7ac621e6e3a8d5a430e800cd7d1a755cc058c3","f8c496656cb5fd737931b4d6c60bd72a97c48f37c07dcb74a593dd24ac3f684a","f2cf1d33c458ac091983e5dac1613f264d48a69b281e43c5b055321320082358","0fa43815d4b05eafe97c056dae73c313f23a9f00b559f1e942d042c7a04db93c","e769097e5ea39d2ed548eeb9c093e90f26dde167f95eb80fbdd4efb041778387","a02db6aabaa291a85cf52b0c3f02a75301b80be856db63d44af4feea2179f37b","e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","1f7eeb69504ad94d16f4731f707d2af879adc7487dc35b146e2d86825bb779b4","c1b5c480e4d38377c82f9f517c12014d3d4475c0e607c4845e0836e0e89bbf7d","1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","87fc4a324b9fa5c9b93a13b5ae1b55ea390929ec1b0450afebff9620921a9cc1","73c0b8df0e282e26a53820f53502847a043bd77a9cda78782207d5349842fba2","5c7391307b9a7c540d678f015d687c277269aa9171f441467e20bab15694db40","082aa8710bbf3d16b877e798341c69599fdd487b4dc34d374ab3e3ec6d46f690","acb9367f45f12526ea808d6da48ab77eee1ceb2b6fe47ab02bbcc7cce4c972b0","d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","79f4812dffe8f933c12c341d68eee731cb6dd7f2a4bb20097c411560c97a6263","c446e8f3bd5b16e121252e05ba7696524ca95ec3f819c12fb8c37e7836744769","23386bb0bcb20fcb367149f22f5c6468b53f1987e86fd25de875ffb769e4d241","3913806467307a4bd874b105ac3e79ac261ab986fbdce7f0feea26cbcee95765","a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","ef8ff23609cec5eb95e2beb98132ad90c0c5075415b50228b12f89ffaf981a4a","80bbc9365ca8398c69eae77cdf7284d07192a17dacf1904095ab4c89f4520a5d","174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","2c0de27d99a9331cfac8bc5c6bbd174e0593628bf3df268faa6c4188962a9549","1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","2660eb7dba5976c2dcbea02ec146b1f27109e7bee323392db584f8c78a6477dd","54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","10837df0382365c2544fb75cb9a8f6e481e68c64915362941b4ea4468fd0ef61","cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","9c3e59360437a3e2a22f7f1032559a4c24aba697365b62fb4816b7c8c66035b8","393446ab3f0dd3449ad6fd4c8abd0c82b711c514b9e8dfbf75222bbc48eb0cb6","ea02a962453ec628e886a6c5d0fc03bf4da9dfa38e1f8d42e65e07b2651edd85","5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","baa9fbd480342a1d5e3e11ba3629f2826d18d4a765f1f9693ab87bfb3ce54adb","cb2fea712720bb7951d7e5d63db8670bf4a400d3e0fb197bceb6ef44efe36ec3","1b4fcfc691980d63a730d47d5309d9f85cdddc18a4c83f6e3af20936d103e3ff","ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","637c0d7d8cedbc64a3c228c3fa6bef884746f7a16a631e7532f9828c9ac06b8a","9e665aea79b702fd612ffb7ac741e4160d35d8d696a789129ebcbaea003beb3d","c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","caf3f141f93cbf527ad18ecce326311d70342fe1e16ce93e5ce8d6bcdf02bd48","4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","51e3b73dea24e2a9638345fb7a2a7ef5d3aa2e7a285ad6bd446b45fab826def1","77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","624f5dbfd76f2d77f20ace318e8cb918608a296106e55587fb443ef3030c595d","e67053c6660baa8d7df56153e342ced270bdb49ff3bd8bdca4e990adb81e8ff7","e072f2c386e145358313c8696d5a038ed20ca0153ee3919be72e39ff9e13f258","84305a11183aa850013d937f50553cd69db80add9cbda9e41080d4b2648adcef","1cb0838371e8213ce116a1497bb86bcf01a11a755b77587980ee7cfb2d625ece","68b99bc266575c070d05dacff7e144aa2c66ccf18c40fd27a1f5fa262f37756c","c837869c5edba1b21a3e7846fe98ce039778a139340b9c357c079e9eae6329e3","10b322f5bc001bec9bf08513c978c120adb0abe3c82793b11bdaf75873426c05","51b4efdc8dc92bc6ae2c44d4edad265decad70e8577d5653fc7f85200cbf6c6e","c3fa40ac56aa2598d9133c90b115eeb39bbad56c6dfca350dc8435b8b107fe26","cc542183b68b048a8cf64eb6231b3d0852f7f4d0191d4637c9d1d4c3f44b83b5","4b954a3d432dca82c787c06d2f1cca0fe673a4b440c5e0195429bd1fe43b324a","c6fd975d319a70d6ba90bf38c34ac8efebe531214038fe561a27f89f2203f78e","a818204639081cf07d80885b88aff5120e5a4135211162f5e08cfc00ef3bf5b6","c194ca06da86829b836bb188dffc05543bbea3cbda797667c7a7cade2f907646","6df6afb0424a7c7581ee98a9333d30e893b943d0a4709b88f18c252ddc3101b4","59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","0b60cfcd94fa9bd9fa58176650c7e4c72f99b9d30a50d0b55aa08b510276af96","ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","6c6dcb49af3d72d823334f74a554b2f9917e3a59b3219934b7ae9e6b03a3e8b4","9628be9799a060a3f7fe2e1f08fab2b21cdd7e97a2bbc3ef2f0029be46e0d7da","3d24aec533fe2f035b0675ba1c0e55e8680a714fff2a517e0fb388279476701c","224e2edff4c1e67d9c5179aa70e31d0dc7dd4ea5a9e80ffde121df9e5254eef2","e324c3b2058f9525cf5c11915284f9dfdf7550c98f103429b271fe723c4f8e14","70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","643efb9d7747ee1dd50ff5bd4b7a87351157e55988c7d2f90ffbdf124f063931","788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","28318622690c91b6654e50dd8aacafa76abdbb329655933705d041a9c4b92eee","6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","6bd6933efe9d6263d9f1a534a28a8f88b1e4c331b95d85d39350cf02eca8dce0","658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","6bf893d1b824bde22ee5880c0c760c1dd0a5163c38d22311441a3341b6965d2d","579d9d3c25058b854a6f7cc6368a473efcaa0740f45db13cb508761d35fc0156","68705604f0666ba3862670153eb4f965c3079415e7ab30a35b3126e36277dc9e","28b415e70f9da0346545b7d2bcf361844a8e5778bd6b45bc1a2859f99700ff5b","a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","aec91730b9f4d83758b4a45596317d34d6ecdbe9330a44629f53af47641b96ee","2321197343254570a8d4c868572059bfdfb683cf9d4099b6d4694250dac69471","18a3be03c31356b60ea1090bcc905d99e4983ca911cc70b34ad0b9b4d4e050c3","9833a67663f960dc2d1908a19365ddde55c0651235596ac60d7078a9be6f6e56","2bcb8920601b80911430979b6db4a58a7908a31334e74e4e22b75c65edce3587","c3186dc74d62d0fb6fba29841ccbf995614992526c37fac5c082d0f28b351e54","2306daed18f7f59542a99857a678ef818058eefa30c2a556af123a1cf53889cd","b41ed9285a09710807ce2c423e038dfe538e46e9183c0c05aadc27bfb9ae256a","56b9f9de03f28eb5922750a213d3f47b21a4f00a48c7c9b89bf1733623873d3a","2bdd736078e445858cb1d9df809ff3a2f00445d78664dd70b6794fb2156bdd53","2653fb2893a65c610ec17d0e454e2b16726f16118425f0bc8a38c801943ef7f5","74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","73e8b003f39c7ce46d2811749dab1dd1b309235fd5c277bd672c30a98b5cf90f","4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","8329556a2e85e3c3ff3dff43141790ff624b0f5138cedec5bb793164cf8b088f","4c889ce7e61ca7f3b7733e0d2be80b3af373e080c922e04639aa25f22963ae63","2239a8cd90c48e0b5c075e51099e7e3b4fc3d4741e4d9cc4410d2544d4216946","f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","0c792fe4e5f383b4f085a0033553fb84ed9322b7923fd59d4575aa43135e050d","228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","30c55a7b27d7ca12fde97c9e1fbacb6a9f452cd08d6a2d94b66cbf49eb58e713","fe139b63d2b8f05f95abd61e1fa81becd4fa0cf18c18e5c9c6b1e91ec5683382","c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","9d3bd4ee558de42e9d8434f7293b404c4b7a09b344e77c36bbe959696328d594","f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","1ff7a67731e575e9f31837883ddfc6bfcef4a09630267e433bc5aea65ad2ced4","0c4f6b6eb73b0fa4d27ce6eef6c2f1e7bd93d953b941e486b55d5d4b22883350","af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","782f2628a998fd03f4ccbe9884da532b8c9be645077556e235149ca9e6bd8c7d","269b7db8b769d5677f8d5d219e74ea2390b72ea2c65676b307e172e8f605a74a","ae731d469fae328ba73d6928e4466b72e3966f92f14cd1a711f9a489c6f93839","90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","3e8240b75f97eb4495679f6031fb02ad889a43017cae4b17d572324513559372","d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","088592cf2e218b99b02a5029ed8d1a763a3856cd25e012cfbb536b7494f08971","5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","52252b11bcbfaeb4c04dc9ec92ea3f1481684eee62c0c913e8ff1421dc0807e5","731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","115d092e2748990ff0f67f376f47e9a45a2f21f7c7784102419c14b32c4362d1","4ba068163c800094cd81b237f86f22c3a33c23cf2a70b9252aca373cfdf59677","53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","fca410876e0302680190982f2fc5102d896e65e4f4f20547a185b60364838910","601bc70ff67ae9855fc65bad9bb2d135f72147cf22e2490f58ea0d209d95f2ee","5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","de8a12540370f9f18b160a07ed57917d69fe24525d360531d42d4b1b5d0d9f0f","4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","5c744f3cc0a266dd95b5769a70ddc85c8b6019adbb0954d4de61f89182202ce3","b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","997f6604cd3d35281083706aa2862e8181ed1929a6cbb004c087557d6c7f23c4","9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","d84761f8a994b5444529c7c294b194de6fd5350ccda974929ea7e8b3893b753a","652e51858bafd77e1abcc4d4e9d5e48cc4426c3dd2910021abd8cc664961e135","8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","e578a36b3683d233e045a85c9adb0f10e83d2b48f777b9c05fbc363ccc6bdd34","0235d0ba0c7b64244d4703b7d6cabd88ba809abeb01da0c13e9ed111bf5e7059","9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","3238d2eee64423c8d41972c88673b0327d8b40174a78ea346bcd10954a8f3373","8f773ddff9070d725dd23f5cf6c8e62bd86984a57b5d5e3fc7583010b48cd8ac","5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","0c293195f800014f1fa3ffacf979002c8c1886ab71750432813fb590738eeef5","7673348e0cc2f4e33d1db02ecda02f39e66e56ab2cc3c5602246e5532f2715ab","83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","bfa105c32ed586b227188f7b568776d03202dc7aa4c3af2746579450c7d5e7f2","756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","14176cfdbc3d1d633ad9b5daf044ab4c7d0d73be61ca2f14388800e21f0989cd","a24f510afe4d938d625a4b5a5374ac0478e56305e8743dd7d37d86d709754286","648acdbcbcd01b1a91e8b0ad390ed59fada685977f44b90e148b65bd8159dfe8","8309898ba0ac6f2856a94a11723d499091253a6d5df34ddebc6149d43480bfd2","a317ae0eb092da3fd799d1717a2da319a74abebe85e2914cb259222969f95705","36d76e2dbd5f5243bd566b018c589e2ba707e34b24ec7d285feb11ba6bf23fbe","f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","8b7a519edbd0b7654491300d8e3cbd2cb3ef921003569ca39ebd33e77479bb99","c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","e09c56f8c446225e061b53cb2f95fcbbc8555483ab29165f6b0f39bc82c8d773","a571973bc2e34c898c3202452f957e6757f0c08cb66d50d6785f4a9042d74bad","a6a059446e66fbf5072eccce94eb5587cef2f99aa04d4bbd4ebe63d0a6592a4f","6e2533e27eba5ff02d6eed37e0a7eb69ae7982e0f72fd8f74c90ab201f061867","9c10dd3d85b7620ed3105b3f018125d0bb54198bf5847e39622afb22c651a1ad","58c62e415bf74b1423bf443587e33d7951a8bf19d7b03073f26e86d9b43ba9ea","dd6ec67ad168e92b8bf79ba975c6e0be8c60e403ba704d1c1b31a6059c12f967","bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","46165e8ac5fb46aae2496e3530cc4fc4172795bf12c1e4d50b353ccd92704e2d","3e55a65822875e85f96e444b79787f619b9473e36c143dedc6d5441a2544b8ab","d49275f9098a8e7a5df7c55321b0242cef0bfdde51018b7b2709c4dc74917822","b25556c4111afad4cb174aa4674db2e5b23a6b191dc6a3e42c7c3417ea446a68","f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","fbec4b634f26379f188f508450669cba0263aa4b1b58ff9b6c24de705f605a64","7c0541d0addc3007e5f5776023d5e6e44f96eae0684cdabe59ef04f2a294b116","70137204b720e4dd1b81260a70578f0f4f417c53837f8a13859b2f58e20d7150","b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","56d092bd6225f6e67d9acab3fd65ce0a4edb36cadba2f0370e67322e2f6f1bc8","a4709d5d466ad8dcf4ddccb905ad95348131df1616f964185be9739f96526bde","73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","27de982b428a9de7a7d8bc825cb45754ad8f2d6651b594d81c6bc5ff29353f92","bc0b17d3fd0e34083fbc886367ed53563b569d1d05214f60b21117e2dbfb7fdd","6120bbd2dbac7d6bb7005b3e00ddb8e6acb9592a37e2bedf32218ad21da915e5","72fa257966dec421bf308d15ccf5ee43c588309942d51dd6330250bb0ab39891","9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","058709777c09f2ef9b91ec305d4fd84cfa44eb4a0e39e39a3c759924b352f194","c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","a6f9821e4b5f28264f61f7a8fccbedb30edf194313088242687c31ddf6c7a336","b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","443a7ed9e697fa98a15a27c11b9524fd00fb0a3386d4bd3a7adc8cfbd21bbc90","983d7c76165306ffbe34aca54ccc5a28bb9adc3de3c7ad4c290c152b6be0fb9b","c5b09486cd3acd1d6a657accf28d6ab55cd94d6d1825ea18f70ebc3b029a23dd","9cb62c60b17c9c5ea34e265520ee4f500120edd0f057e5fd405477603b7b41e8","8874aaf2d1b6e6571816954fedc9b2c85df17c69340ba5e87c2e2abaa1f7419f","53ffb22243f88afda7919db62a3b0d517ea73b3dcc17d2f2cd8c20a485928348","cdf12ad5036d372ce65a541670118440a341f5893a7a685d5c22f81f9d866a26","289edde2a855721e8e7074f26ba219fec411381b39c7521725c3108ef86fb8f3","5dccfdfaab939549d4c10d4ba6e53a43c4104fa19a08c5452cc3a906367126e3","ba63131c5e91f797736444933af16ffa42f9f8c150d859ec65f568f037a416ea","44372b8b42e8916b0ab379da38dcf4de11227bad4221aba3e2dbe718999bdfab","43ebfcc5a9e9a9306ea4de9fda3abdd9e018040e246434b48ad56d93b14d4a3d","0e9aa853b5eb2ca09e0e3e3eb94cbd1d5fb3d682ab69817d4d11fe225953fc57","179683df1e78572988152d598f44297da79ac302545770710bba87563ce53e06","793c353144f16601da994fa4e62c09b7525836ce999c44f69c28929072ca206a",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true},"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a",{"version":"1456e80bd8a3870034d89f91bd7df12ac29acfb083e31c0bb1fb38ca7bf5fbc2","affectsGlobalScope":true},{"version":"a98aedd64ad81793f146d36d1611ed9ba61b8b49ff040f0d13a103ed626595d9","affectsGlobalScope":true},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true},"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107",{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true},"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f",{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true},"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c",{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true},"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a",{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true},"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45",{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true},"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","092c1137e31de289f3cc6a57fdccb3cca298d8a680d1e367d206d3318f1394a1","855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86",{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true},"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d",{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true},"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee",{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true},"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5",{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true},"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9",{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true},"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e",{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true},"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","0ea329e5eab6719ff83bcb97e8bd03f1faab4feb74704010783b881fc9d80f92","d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","93a3b8e57c68e348fc4054b245bd7cf4893225f56c991028844b693c2fa8c03c","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c",{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true},"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47",{"version":"ff155930718467b27e379e4a195e4607ce277f805cad9d2fa5f4fd5dec224df6","affectsGlobalScope":true},"599ac4a84b7aa6a298731179ec1663a623ff8ac324cdc1dabb9c73c1259dc854","95c2ab3597d7d38e990bf212231a6def6f6af7e3d12b3bb1b67c15fc8bfd4f4a","585bc61f439c027640754dd26e480afa202f33e51db41ee283311a59c12c62e7","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","b2e0aae7d6c7fb8446a5184a5d606b3efc7f1cfb81dba3f35312347e55f3a208","9679dcc0a8c919e4be7e65694cd948fc1519779d33921eb262adf9ae15c1cc61","8c7db008afc80d1cbf680ca099602470b475efa448a73c04d521e96c5f0c32a7","74bc7145378421e76b3438b4d1aad5cab5aa9a3e66dae3da296b8ea22f88819d","5b71c39e6e71f4e80e127954b6207f74206fba50647917d653e28c53f3d4cd2c","e638f0c5ce3e094ac8619f53d541359f7129a505b48f700db8200927792a837d","3a523c944c2cdab65fe7d8920b0959f4867b98e82c2599896e314f74657216dc","11aaac515797bf48e36770834e59f39e68ac5eb1a8805710a561a9592227ebd7","02201dcdd55b8fd5e23cd96d8cde65d47a91ed6754c48669a870ef8dfd6bf752","7a8221e2f4e0e814db9911c866d536579d0fafef22451f923f21572a302dafb7","d3e820308ac6417b27383d63485ea268fd5c7b90b66c6978ad11835948c79fae","16e3ab52ab9f092ce8c8ce2557b34975e86dfefbafbb243e19ef4cc2e436d904","e4ffb6aa67b82aca99315bd54365892ece9ed76ad37667a8dea478b7ac9a755a","bdea62e2a0e1c05bcba2a35fe701bf7f7887f2cb0bf23ea7f5ca2f7bab859fc4","e4c63c1c2623a7987a46688b69345c5e46dce383ce3fa24d7ad32547c618efdf","dd1847467b2c751a1fa419d312b8aa0ef0e8f0f1811a8fe077654277943877d3","cb5eaaa2a079305b1c5344af739b29c479746f7a7aefffc7175d23d8b7c8dbb0","bd324dccada40f2c94aaa1ebc82b11ce3927b7a2fe74a5ab92b431d495a86e6f","56749bf8b557c4c76181b2fd87e41bde2b67843303ae2eabb299623897d704d6","5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","176d6f604b228f727afb8e96fd6ff78c7ca38102e07acfb86a0034d8f8a2064a","1b1a02c54361b8c222392054648a2137fc5983ad5680134a653b1d9f655fe43d","8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","2426ed0e9982c3d734a6896b697adf5ae93d634b73eb15b48da8106634f6d911","057431f69d565fb44c246f9f64eac09cf309a9af7afb97e588ebef19cc33c779","960d026ca8bf27a8f7a3920ee50438b50ec913d635aa92542ca07558f9c59eca","71f5d895cc1a8a935c40c070d3d0fade53ae7e303fd76f443b8b541dee19a90c","252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","2d2ec3235e01474f45a68f28cf826c2f5228b79f7d474d12ca3604cdcfdac80c","6dd249868034c0434e170ba6e0451d67a0c98e5a74fd57a7999174ee22a0fa7b","9716553c72caf4ff992be810e650707924ec6962f6812bd3fbdb9ac3544fd38f","506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","053c51bbc32db54be396654ab5ecd03a66118d64102ac9e22e950059bc862a5e","1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","0f6e0b1a1deb1ab297103955c8cd3797d18f0f7f7d30048ae73ba7c9fb5a1d89","0a051f254f9a16cdde942571baab358018386830fed9bdfff42478e38ba641ce","17269f8dfc30c4846ab7d8b5d3c97ac76f50f33de96f996b9bf974d817ed025b","9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","083d6f3547ccbf25dfa37b950c50bee6691ed5c42107f038cc324dbca1e173ae","952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","893e5cfbae9ed690b75b8b2118b140665e08d182ed8531e1363ec050905e6cb2","6ae7c7ada66314a0c3acfbf6f6edf379a12106d8d6a1a15bd35bd803908f2c31","e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","97146bbe9e6b1aab070510a45976faaf37724c747a42d08563aeae7ba0334b4f","c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","09e64dea2925f3a0ef972d7c11e7fa75fec4c0824e9383db23eacf17b368532f","424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","ced02e78a2e10f89f4d70440d0a8de952a5946623519c54747bc84214d644bac","efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","0c0a02625cf59a0c7be595ccc270904042bea523518299b754c705f76d2a6919","c44fc1bbdb5d1c8025073cb7c5eab553aa02c069235a1fc4613cd096d578ab80","cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","e9cfa80b64614d19715af80c0bb4025521b619a215723fbcfb2d697a18f0708d","c5c8d3c4e9eda5b7b6adbdff157329ec942476eefdb9f1f7a6eefa8d9d7e8a09","89968316b7069339433bd42d53fe56df98b6990783dfe00c9513fb4bd01c2a1c","a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","62e62a477c56cda719013606616dd856cfdc37c60448d0feb53654860d3113bb","207c107dd2bd23fa9febac2fe05c7c72cdac02c3f57003ab2e1c6794a6db0c05","55133e906c4ddabecdfcbc6a2efd4536a3ac47a8fa0a3fe6d0b918cac882e0d4","2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","2eb4012a758b9a7ba9121951d7c4b9f103fe2fc626f13bec3e29037bb9420dc6","fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","471386a0a7e4eb88c260bdde4c627e634a772bf22f830c4ec1dad823154fd6f5","108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","079d3f1ddcaf6c0ff28cfc7851b0ce79fcd694b3590afa6b8efa6d1656216924","2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","7e9c4e62351e3af1e5e49e88ebb1384467c9cd7a03c132a3b96842ccdc8045c4","ea1f9c60a912065c08e0876bd9500e8fa194738855effb4c7962f1bfb9b1da86","903f34c920e699dacbc483780b45d1f1edcb1ebf4b585a999ece78e403bb2db3","100ebfd0470433805c43be5ae377b7a15f56b5d7181c314c21789c4fe9789595","12533f60d36d03d3cf48d91dc0b1d585f530e4c9818a4d695f672f2901a74a86","21d9968dad7a7f021080167d874b718197a60535418e240389d0b651dd8110e7","2ef7349b243bce723d67901991d5ad0dfc534da994af61c7c172a99ff599e135","fa103f65225a4b42576ae02d17604b02330aea35b8aaf889a8423d38c18fa253","1b9173f64a1eaee88fa0c66ab4af8474e3c9741e0b0bd1d83bfca6f0574b6025","1b212f0159d984162b3e567678e377f522d7bee4d02ada1cc770549c51087170","46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","86cb49eb242fe19c5572f58624354ffb8743ff0f4522428ebcabc9d54a837c73","fc2fb9f11e930479d03430ee5b6588c3788695372b0ab42599f3ec7e78c0f6d5","bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","293ca178fd6c23ed33050052c6544c9d630f9d3b11d42c36aa86218472129243","90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","91324fe0902334523537221b6c0bef83901761cfd3bd1f140c9036fa6710fa2b","b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","a88ddea30fae38aa071a43b43205312dc5ff86f9e21d85ba26b14690dc19d95e","b5b2d0510e5455234016bbbaba3839ca21adbc715d1b9c3d6dede7d411a28545","5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa","b709ba89711ff1856eec198f3200bde1301296f40ab90281058f2b1257299ef3","5ac0661e2f45e187d2de2e42ade372711f7b412754447d7815431a4b0f42fd4d","3e618fa28e561530f0026860ceed689f6afbedd3e0994267144fc7f82fb01919","07446de34f4cb6e231c6c4e40d48d6a6907430ff3f2e46ab4ae377437606f8a9","e4e15dc75756b73554d8155004f09ae9202fbc83811150212ffae91d9cbc0df7","b7fa42df7d83825823e1292861d57983921b7abc41903a82cb30083c46da44e6","ecc929651a1bf28c7e8caaa59a4ed84f57b253b8983550b2710891cc577cb6ae","0df62488244683c22f9dac2ec239fd7ab53de14cda86fd7ca27dfe3e6635e9b7","051664dcfab783a3011051069fe843fdf7d3a33443576d78017f2bb91995d3ad","f73799714265f990c16a9216d64aa58d5004691614f3f39864dae761b89e2a84","471a6a1604c1331e318af6f8e77066b9b2d24cd97259a742be0ba63ab882ec2e","79126e8ee445bfad15a4683ce47126206229774efd1402983c09da38ef86aa0c","92f43c2518f3d497c63ce195029cbbbc99033014dd4eefd6b465cb0f51f2a29f","3ae96585c7d91e119eb9203a0235761a470cce36e0dda1dc440d0cef7a76d7ad","9084c67172018fcae03341af846e9fc9b036976697bb02622a28d2149bb2aa12","3275a404688f5e3cafc43658c0fd3a92218eb52c605cbf09cfb22e8e514e4f9a","48a2b469f551a1a824664a997f26d041495958be2add7d0f19f14acbb47b0e0e","dff93e0997c4e64ff29e9f70cad172c0b438c4f58c119f17a51c94d48164475a","fd1ddf926b323dfa439be49c1d41bbe233fe5656975a11183aeb3bf2addfa3bb","6dda11db28da6bcc7ff09242cd1866bdddd0ae91e2db3bea03ba66112399641a","ea4cd1e72af1aa49cf208b9cb4caf542437beb7a7a5b522f50a5f1b7480362ed","903a7d68a222d94da11a5a89449fdd5dd75d83cd95af34c0242e10b85ec33a93","e7fe2e7ed5c3a7beff60361632be19a8943e53466b7dd69c34f89faf473206d7","b4896cee83379e159f83021e262223354db79e439092e485611163e2082224ff","5243e79a643e41d9653011d6c66e95048fc0478eb8593dc079b70877a2e3990e","76e7352249c42b9d54fe1f9e1ebcef777da1cb2eb33038366af49469d433597b","88cb622dd0ec1ef860e5c27fa884e60d2eba5ae22c7907dff82c56a69bdd2c8a","eb234b3e285e8bc071bdddc1ec0460095e13ead6222d44b02c4e0869522f9ba3","c85114872760189e50fef131944427b0fb367f0cc0b6dce164bb427a6fd89381","5ad69b0d7e7bdbcd3adfdb6a3e306e935c9c2711b1c60493646504a2f991346e","a12a667efdeb03b529bd4ebb4032998ddd32743799f59f9f18b186f8e63a2cf1","cee7efa0ae4c58deab218d1df0d1bf84abfd5c356cff28bca1421489cba13a19","f9e034b1ae29825c00532e08ea852b0c72885c343ee48d2975db0a6481218ab3","1193f49cbb883f40326461fe379e58ffa4c18d15bf6d6a1974ad2894e4fb20f3","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","70d97a194da001c87164ee0b7138f064dc9008bb80bb3d3cb8286e87b42cf9a0","d86b1465403d087dbc325c66b29701f994c94a9b55540390b6b4a3b2fc7f4906","e6ea1913e066f539a4b79704d0df79d625f29c33db987a69be9ccf832ac38dc8","4bfd31b5e0391134b393c9678d530f8e56fb0e365214d423ac2a47f524fec4c8","0ed99897decdb46d00ff9c86cf58e84887a49c5bba9bb995c02740b1e25db275","c7433a37d0cc09fa979e28285c59ac62ca002b61fe7d6e42c9959f9ba65a551b","953cbf62815703fa9970c9cfec3c8d033da04a90c2409af6070dcc6858cf6b98","68065ce3af3ef8599af8338068cf336be35249eff281ee393186a0ef40db3abf","5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","1f2bddea07543ccda708134cca0600b4d9ac9bd774ec1ede0a69935b04df1496","6e8997d08f6798d0a9416df24312cafd084e6184a205d9283eba95ef56f8ef8b","ac6968717607889d24d6e407effb48dd5af82005925b4725b1d9eb52a8a047e2","26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","84d02daa32c7a8bff4946bbc7d878ffb7114c19879f7bfceeeb39bef48e93c42","29723e0bc48036a127c3b8874f3abe9b695c56103f685f2b817fc532b8995e33","991cf4ed946cdf4c140ccaad45c61fc36a25b238a8fa95af51e93cb20c4b0503","81ef252ff5df76bccf7863bb355ccbb8af69f7d1064b3ef87b2b01c30fb2c1f4","0f17f5f14a5f53e5709404b5b59fe816eaad15a469412b73330e6f69834234e0","01edea77be9c2bef3a5f3fc46324c5e420e5bd72b499c5dec217c91866be5a99","39209d2b85d238810ef19ab3905c9498918343bc8f72a1dcae7fc0b08270d9a0","92a130d875262e78c581f98faa07c62f4510885df6d98213c72f3b83a1be93c1","6029af83ecb3d7815daf2dfb53b978087288d018e0681043b1c8c586e787af4b","0aa14ffe353b8bab88046e64a92efa5cd039f095759fe884d188702956e2cba2","68d3eee1d509f45625e39ba325a72c6ce1d2116e3d5c3a40f513472e66622e02","4e5f1234308de112f09920e0a0b99f35a9780b3abbc13a84445f32a490d0bb87","9ac0e5aea87c4a1d37b4677145e9a75bc8e13bf887bd1148a4acb21ab7398d00","625b802ecd18feb6a9d69ef8ef58d6c08c9c9022b8105cdeaa3fc77acaab5667","2ac33d7f6999e0fb363d1e483d80f087d3e7d712ff6fcc2b4f7b18b5dab92f37","195749d135be639001a554e4b4025b66b3c5c627d90b68266c14399bde120cec","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","dd163bb628455b6e21327b09f3a5a8c561ba3a322653b994b81fb78677d49a54","ede6f82e3fb2456a944ad1bbe95dfc7d9a7225f8e88f627481733e6f6d00f0e7","155593a15840281e8d5a524cf598e1936b9d779f3a3ed9ad96f13e71b4f8689d","c53e11b2b34ad03cddfc46e181da4cd2d5ab5201126f6134eac03b1cc0a02a58","360822186b2a5c6fa0546d794098416574537cbe55304df2152349945a1b5bfc","885fc34c13ef9323186a28fe6921ce1a0d62bfdee8814c19dfcf4eabb05d8c40","811ec9c8c5579faad3e0ef2e3cde016679b0d657786f6440430aabc4c5d0398d","c44dd0bc8be5062834408c6087ef889689a569d0e878f6f9f1bcc39f4e33f8b7","f4da18c9eebfca491a55a3f72dd9284a268a6a23793447f57c9c84eff7759297","657288bd1b5ccdf4de260beed376fc36d73ca714b620fafcd8ddd8b93aca9830","4b3a600f3e7de0ff039a05b78925eb661193abff1cfb599a24241c0e456eb5b2","8cd75a3f2f475b5b74b06e47c6103c3500900ee87f610c0eda6142c8f751188b","2bdefc593ba04c3b6f0e4bcbdecfba3430af803f1cf52eb413af56e0b5a9e6d6","8cd3ea64962d3af2813d854e6a102998670072f842b9f721394e821ebaf500aa","62369afa3125bf004f5329e8f6bcfeec22a5e5150f05fd949a0df03cf914ea9f","4475b6cfbdf4638dcc9fb2c0efd83b38e420256fc86488c390fd63fb17c3c24d","4f14e614d2debc8af57ec0db13312d540b39fee19a0267ad6bc6881550e3d308","810f4aa4f06bc4fcd387ffbbd772ae00bceff377e09361c17bdea40b62dfad07","4237a77de4fc6ab2d85049305b8fe3c0741d6fb6ad0bf8344f2f67953e680c8d","2a0b0c9b8cf14d940e681b2c4027a7e0d1ab3f5997f0f7a140470a6226eae76d","a631a746bca7583f15fe25b8ca5e8ef4c43dae89625d8f80fd3d9a9af0571b19","90a4071fbb2ff24e48cbf76401363f8facdd7363320e0a927ebdbfe8006161ab","4d03adbf48a9a0f36d3f9ce33b968ea8e0af07e32333bb5b1dc106b69ed9381a","351299cadad07cc40dddcd6bfd60681de6e5ecde9d84e4d2ba2303171f5b706b","cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","3ac40516c33b87f751f7507346933081a26cdb8a3e11a6b3aa07d23f803c85db","4ac80270b6787c2b77a2d98a9714a71f4363c24b5890314f3ba582c94bfbe779","14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","096a67958cdf1d95e780cf723d60e26e6ece748154feb0f388776d3976ecdcfa","ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","d243db6b25788f439e7e2f03c05688e92f46764351673bb0e7b2f3631232e186","4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","6c2af5c8d77956b1c82e11ac2386a3c15be42f758dfb597814d49dfdc446e8b2","a6e8cbf36e9d911856980c8efaa2187897919ffe897a7a4030693a2eba992279","3638b0b054444fac6ba525ae621a19f04f4c57913fdfe09597705420ab329e0f","fc9d689208e575600e837246841cdacf3812beaac77237475d7016422ba86bf4","537387829e8d47f812bac08196bc811c521ca53d28f53ead67c5673bebbf49c2","0993f3ebcf3036ee3b274b6be8e1ffdb8c7c1c50db445bac76734f152904d5b7","a348f5ea72c33f6d2d7a98522858ed8f70981118000e926f915fa5c4aafbd7db","cb849466df885c46e229a616c9c8633537fcb44f2cfc39069d8dc0dfdc31d1bc","a4e9e0d92dcad2cb387a5f1bdffe621569052f2d80186e11973aa7080260d296","b2dac7c80e9f6c821024e635ffa39f2ab6def88b2d26072dd2915b29e5802585","d0fe3f291ed904d59025ef05bf98f1226b8814f924e6241512e21488b03d4cb7","8cb5dceed5b9fb8717b93ece4ea5b2adf3fe317d0f01b7278e5d55f19a7f7e1b","01329ca0b974c12cc8a198ee6e0e7c8cc9c305816dfdf0e7d5d08360abc34e13","f8b0e609ff71a048d86bf0c22a5852d80a762c1f3073fd87e4e24a748e645d5d","e24e97519fb282732d44ac765d18f90c1022927a952bc624d58fb7ab2ea11992","1edb00a6d353c9222891ff6cfce4dc70fe7cd5e1820456cc7e5c427507f39ac4","fa5d0a3ded577f413e3e1bd04e59e2b1c0acaa826bdeffe138b86b513a5d9de4","441bef2be624d8ab826cd8bc5dfa29d389b83bfd6a6f026a9d8cf4c7fc6cb20b","d877fe18289a4578fb34ea19013e3ef8fbf0d5c7c91cdef9bcd57e573874612f","6aa9c6f506b53c3a2e17006fd9b9d518f75506394daa687a3dd5e48f14fb8c0d","2e0b7b4d1db2d8031ef7e7f0bb8caebf0c3a5fb068dc1e79d28ff5c981185450","ec3005b118e0ccdd71203d774ac3557ba4692c6d2f4b7be802dfb8832054b743","b27065cfce873cd68383d574d64c347f473c25dc4619c5d57428db1758c17fef","4423f0146fb37cab9d4a722a3df77d195a81412bd9f2bef0f927469ad3d07e72","81656d14d40c277b25b02c7b68826b2978064e9eb7c5288e83d1c1941f118cc0","30b93c0cab303910b02829a4c6ec32bd09a622089d5f0cbc07782948ce8954d0","c77b7782fdfc83af4fbad71446874183d3a89be9a9d81b8114568b2a3c8e3ff6","2526683537bd5270fc8c828283530b971ef20fe613da53f50c7670c8102f8f7b","0dfcbfff816ec838d0610e07bd6cf004158cf5e41a5e046d99cfcb70b2bbc684","0d0c9f06f0efab0c13c2096aa9717df8a8260e6a5c804d301c605eefcfb193f6","11c0df3d2e349a7575427aa1a6e391a5284cad25292e4cc74109a1bfd02765fa","9dacf04c9c542d2969038334981d87468b87320e99e8cfc203a7e13fbea48231","a0c7e388df0028192f174dab2f074c1cd7c8a79b56205f0c0f91294915d52df9","a3bd20d0262d0d4da24b67a38629c92cdf1e0c67d610550fd0c40c23c2c5a331","6311c547c0230efd5ede4ece1f4ac5ecd983c3e01073bff7237324c47ce0c3f3","32e3f90d661c71be5aa6fac5a6e3b531b2bb49694c724e446694fd13980c9e66","986e6dcc124af0bea9d3437b3c59afded8f7a1bed66514e0bb7924464a0fb992","40e047c6d798ffbf2b769e01bdcc7a7b8fe8ae49b3260ed5151c623d77c2155d","b537f57f873438e6656c7f162939cf116a4fa3575d7a46fb4cb6c0e0fd563b5b","7af11204419c230069f9bed9b3388bfe50ac032a91ffa3501f8b96d0593bef8a","0f2fb2612fb867967bcdab5ea59bf874e19b3b7a8d31e95ae5c49b16b90ec825","4eac8a79f63e27930d509fbaf614cf0c779f3777d23c8a06023867997aac09b6","f3ff1cd0b656cf7b78c2c166c9bb7d4d2be0d6509691c64a7ad11cfb9fb65ac4","d6a87d509be5c033adcad19dbcabca9fd4ecd0114b3f44e45d8ec75e9f392334","6d9fabbf693d36d0281a389a13862ab2b20d2c596292fea0f884dffc8acacea1","479a80820456c48c5e7d1b917bffcda72efa4fc93b2157b72d01d53f6e524f8c","0ddd21a422292a1433c0acb0953b95dade7945db6ad10f47f66dbc3e9656ce77","259c2e20c17b8884c5854ca8e211abc423229dbe3ac4f03fa0c7c29bdd3c5f7f","ec47dba399069e35052531e38011dca52fe56de0ed8bd96f255e05b0e02da6d6","cf9c2ac8e0974422223b788cdf400e34c7d9b0b2ccbfcceda7084ff0b55e3048","86f5468cde4828a20f2dec5bdcb5679105bbbd08c3e49c9f9654af190ffaf32e","864a1d1df8b3d7882ec6f7050b26404ebc3e4bc9a4187f39a91aba83a13fee77","8fa762cbd08bb96cc522d04427ed1dc8af9d584cdab0eba21f33898bea6af91c","05d2e21a179498afa4a9e822884830a93e3e43f5289bc1528a5910f461b765d6","ca987d92730519fada583cab88c43f20798223b2bf97b37a687ec56c962c30e4","50724e348120add710271879b067f7afe2391c12b4cfb5ebed3dbdc59f8df800","72325f82090a50015f77c79b1f13b76662e8530beb8e29ff79eebe37c5a2c66b","3293b005828fcd38f66941abb78b9610327caa62709b7eea50e23ff3342022b5","b0de3f7e8e950bed4c4b96b9326691fc84eb880b10f632dbbfc448c7c2833789","5684a8a45b5049150ae8c8f57cb1847be3a7be01fd69aef2d2111268ab4c8a69","47a10378e788231bc7fe1b5e1a0f0f0b742381722bd4d295825f5cae20479a41","69f41ba881ee73fb5f48390fa13f993437899c2c9b25b00f1e820824e2490c87","01c186e3788bc0bfd4d619555e2e15bddcc0eceb4cd256e476a04d091ba2abbb","48b020d8433eb29cc297ec5dab4e6eb62957ccbd6c1ee33d4ddb7f73fe50ec38","702a76f2b79cfb45d8a81237603017aa6c70558193325fe7cd6076023b6bdcc4","d40ddcf479ff74d525dd3b3a90c28762fd99d7688082335e2dca18cd096ab342","b357042bc9add6eaa25183a6ce1d0661f5deb5bb5b209ab614d23f5e3fe52e1f","6907854996e99a80ef64f4e8689e0d0dece79a2cc64699bcac607c5cffe3925d","f5d3367b89fb560e968721abbd5bc0e2256e104d4a15ac866f70e1dbf34e1a7b","3d8d99469fba4dd7c9d0a16c846e2ec09f2387096e0529580303341d7abd06e1","ac8297169b675b961b8f59114ec8cdae74a591288bed3dd2970dcb6b5d848509","744248d2c0feecd6166500b1591dda9f63b76fea2785027ad577c1f860b405a8","215bd227b92ae7bd162b307b8a219ee667579fa67c923a9453974d44bc2355f8","7beafe4c8d8600b6551c3efe0225e9e5b8741c2d4d157d0cad4db7a15e2d9e85","f0a4ec97e2e8780892513271b3085efa3e8db003517de72154777be6124509a9","7e6cd924c1efca33937074b64854f6d3ec5b5f43842b069ae1d57cd06553afe1","b024ab3b0f27a2f7ae139076cb0166a33efbf58beed2d3fb1a3e0b9023e714f5","882088f2e6c901ea3b9ea2d941adf65b1dfad2e67686dc8ce505da93b4b5cf49","143823ff5956604855b6e46763c7dac8acbf7d54df880cbafff282562927efab","be17eb6f5215929ca1dd4c99ba8c60a1f9dbb13c7e63580a3ddc2f016eff37dc","0df99d484a85184c5974ae113b9391ca3f53a62f75b14c15da86bfe859422306","5b7a6ac7a4a61a01cc56a882ce9202ef934b270c36e41034bdc2503cde62fd09","312b38017345b7c769d675b4f7d9acf09a5dca56784e4c704d7d4cca8317ed63","352949223d08be85d2246674299073ad656911fff4505856dc5c9b5b1333597a","9094e7b339b2e09870b2ea8d2b1561d1fb17c1949612b88353b27102cc03bd04","92b7284ed12666a4290dc253f1540066d20131b516d534e846d287cf9e35b181","f3759ba9ea4d78ec2562b8f07fe9ea054ff1edf1cf5410046c47c64806f47644","6d110d085d15792d3bcc0e05f6db2c8bad9c1cbe5b30bb53838d8269cb6035ff","15685ad1f26ffc1afd3fceb74e58a5d11b1a7f9fca35ae81969bd108a1fc7314","3733cc0202a64bfa4e475770e84694ed2eaf4771e1c20f9300ee5ea401fecd05","e4644941a867b6f8ad52590559ec5bb34410e7f0ebb6e0bda63a9f78778aea2d","147dace74af90e3d51bcb7d2719512cf97069b62a95f6a83d187eb05e8485a3f","3c9bc7d808e38c2d71af4288351040b97dbf592b9392451c3f0c804a7e52552f","0918d5f43b23422df61639b25e17b4b086c0c45e77719fe59d11582b48feb916","333fba359eb5bcd2a008312f3289b8f5c1bd9033a81496cc12a0f9e694a02404","073b28eb2fe1e92b714c449c3edfad54583eec4af09846d50f67c419d3f2487b","b29703e5b91d9502917acccd6179fd1ad9cc4fd96b8c9fde1b03ee54fc985e2d","3db30b38990ed865d5af9df7f2247cd6624fe5f9369dc071adb37606b37bfac7","bdabec662c0472d2edeb82f9dd12410174c1715d24b8a354de035cbd5f4c9e6d","873827f0324a23c20eb294026c10c90c65c4119bff0e1c797a3f39a841feb4a9","410df7da932c7bebd2751b7d057b45950a92ec0ff387324faef064ca34a1faf5","eeaba88a4b277cb299b6bc6fa40debfb1e3797d4e27f8a6e8612ca79464f4ea7","c82695af2fc1283cffe65edec4f696bbcaa07fd3f8a1b09bf7e330868b3c73c5","da899b9ee46d3311eb48bf81f8aa674601e987d77a536c4fb960437bfd7fb912","071ea0734e2c89132b62c95b8061d4c4601d00d483e2192f1285694e42b25ef4","f86952de60e0d3cb154a261b9fee5b48a9254e078ed1edfbeec1d2a5f13370af","00ed819531f370e6caa1900b6c941613d9e0e1dce0cc29db43bd6e6c44f1e2b9","4d628aeb41e8c38e97df38e9c05e6d677219fcbcd3070bc48ba4503b9c13cf05","5999a2a69d49a32805c696d7bc3d580da026c44ae0d73114fedceef73bedcd80","6b066fcec86a45f64bbc76cf462d44ed1c1fb3197385617837ce95849d1b8e11","ec394b045d221949b939c37aa631aa64509795b2ad46e9529f2972cc46e4249f","3c8b1bc22a1d2c1234c75f45f5097a6e11082591b203063a4fdbcc795ac27de8","8f67f50978be5d0b7a53bffdd836f0019b5d8df04384051a7ff8f4db25910e8b","d9308f4e10eb7d8c59e080e1a5f9a75662beaf264ecdb2f8c809aa8a01328cc8","4deacc4e614c384babc527a224198f5cd94353b609fcdf71f7c69d5aa38f5454","d8708ac688b158dd885203048c310b20217c04eb88546bd45e11e01c40a9ba92","d792d7e5a7283e9e7333273c2684925b9b1fefdcb3619874a102df5b59ff18ec","9016d17c0d55be26ded6e707a32204bb2ac13897aba283adbc0fb44108b24b59","51fe31baa3a111305e9c5119d33d24dfd594d6472ce43deb28f1bba617af2506","d63405e36cba33a559d02597ab805e10aec80856d7085ce23d89b7b575a78eeb","9ff763fb8837773703523ab729aca082c20ba9f82bfd7b7c155793a2e29ee3a5","510590c312af461071b92b32cae4bd5816002c8fcec2b998ec70aae491824b85","fbd52d199ef30bc63a39291ddb040ef1250f63d5c4b8f90ed37119b0f255609d","628039d30340e106d08cbce0d717f0bfbda4f3116acc254cb25f43d5f27c3ce5","d1f1cdc52961e0e05b1110de681b997097ffda00a8d3cb670d274b27c5fd9dc5","afcf42170a987cb01534f46207a2cbcaad7ab3f89f9af14dfa4a839a90ab39ef","c5165b5bdcaf4e1e958f52bd82815325e0956f56abdf3be17c4ae31979c74c79","ac51e0049f2013a480b5f55f860ae7cb39903f7b95aef73d6b7c0ef315adbd53","6981259fb81554e2fb9dafe201b8ad0742dc2d1c45e90cac80cdad929c408771","6e307683ac8f59b411fc38ef7cd435d500e48977b89b96f8911c071c08bba9b8","26017822fae1119a81969aa52cb76965e7aa64e8a33a7fab81952073aa0c9a25","93b67ebc9284d26f85e5731f1a212a21cecf33ac45bf6afa67616505a995e141","f60843293d66d07ae96b02e17a9c65f3cee9c6b1d3858427bef2bee215aded6d","5412eebc0b631aa7a510a3f2f162a37314c00be26263e381baa6ebdd5a961588","5b3dedf4d085ed31e26d9ade7eab41aa3f331eae0e3d6b9465c07c21cc9b12f4","7e4fedd12b30cf9f168be96cb60de7450fd055e69f9e1828722157d6e2547e53","487b04703d560ab8345f28d8e42323d2f153c966930772b6d5ebe36aa72c9a1a","0ae4c8dc857b82e3ab26461fc6ec0267fff307ba7eb41ffcb9f7f7ff0efc5805","93ccf42a9e93ad2f111b6edd6efddf081ea040e0e0473084d47d6c57a9a32594","ab3f61301847b31ccbeca5a2b1c1d50513a45cd407ca152deaf0eb6704eb261a","bacf2563a5f250bc4d87022ec1bc3085b4d916c1a331c49f4259e8eb026f1a0b","5554c30dd8d6a812c83f7b3cd514ffe139c1fa7234e8fc2004f93df934d5fa8f","ab2f09c444714fdf7ead0218a7e8967c97a9c15198ca05f14f19a8a08007617d","ce245817c1423e5f19006aaf5324874a89babd9d4485cfb0bb6800859da90d06","9b8ba93c916f17a3013b13b6de214785d02fa10fd0dca619d1883d675008591d","cbb948817811f7abbf91502469aae1831b087d86f78be7f39f0d561072a03fac","2bbaba5b81417afbe71415f37fa97076a642c4ef751d5d2a008e0c0f13dd378c","e2b75888865be0353574d7b8173a50036397d3b2182c5b2639533fa2af01e9c0","2fb584e4ff8b104f6137de0150eb63729755f9c5b8aa7f238d2204b290c44288","2831bb9ae22d3ddc254a8ab11abc3fea7f5d955c9fdbba316e583d8369b1b727","6e8969df6e4b6656f7d929121b84412c9a626aafc42cf339027a0bb5bc45b3c4","67ef414c1948c3865c24cbad69155a3a90cc620093139e019e8c5ff329fa0a94","0e684c11c8ee895ffa496c33ac81f325b2485cd54d728bed6aaa5189b6f31a7f","56cf69ba69d6659d9b25055cf30c7603a35914e162ed404e80d3c213f2d02bd1","74f9d3482b5290aad27dc9697e0cf41b36507bcea439126a9245c431597e054f","677fa1619e1a6d54b8cb69fc487823822c1310307e2fe2c243a8c43d7438bd6e","08d90295c4773de1fd6384d20f24f01207d1fc5ce712a8f5332461de842b9e20","792383b1e382c2f5477f24e549fd02a982e96cdd50fb7c4d764cd61ce51fde77","21836d03ab864195654b3da91674bd150b0e871d3a76b0d4744ad091e727d205","fd5e2a6c16d1d94264f5446bf598ab71495ff2aee0b790aafeb2f076aa031713","4d989a3b3d73c855a44b2eaf2ce516a239f2f0c6a4aa23ff1f55a24d82dfb18e","6586305b22ef3e4637506653771c647607a7c04177cd4a33a901bb9136597f9c","e8c7366264db300b06e02e3d7818b670e2de76a8235b5087103652bc44533c61","cb03d27f39ca69ddf05ab9154ee1cd76317c80c616b7724eec7f563231234f08","64cfc4f940971a56a5709006c8c859b7ab63097123bf74b4b56f3434d9e5929d","2b6159943c5afa71fd32f0692da039de8843e904f4de1dc7b06a5735c158ddb9","12e665bd51da5b11242f795346141d9435edb2b7121795909e984c7c917c8a6a","e0ba82cb270e8b7be614dd6a274fce4f71f07c7d9c369d8bdf61d2bee89502bb","54aac5101b06ee73e5570de84363a43eca769418fa753c509bb2d483fda29493","0db3443b2ea4dae520effa5b3efe0229ae172b1bfbb0f9cb53b22f4db6f92a14","99eaf78990a4adf2c24adf8f687c3ee4c09202da876fbbf4d1bf403f26b7fcd3","4cc9a5bd3257316bd17a258d55165dee361f65297d46df8bce388d1de0a570b6","ed34e9738791e6e168b1d6d834e34e153606a8f9a0d0e256b09991869b729c0b","33473087570ec627d5ae664c303deafb1c5226a5931e04098c4981578ce676eb","01fa1cf9bff499e74c19b74faccbea57a45a341825c49df904ff9fc7f86f80e2","6e4393b209ba2dbc9b4d0fffafa4c264ecdf6460a03da5a5b9ecf4bb75145e0e","a9b9895b846ee9a392a56b6a3fddc79ae073916a7233f938c7d28421ca9b0da7","e735d2a849ca12b7523228218baf89c9860955fefab7bf20f2342377e52b2a03","b6e995b5ef6661f5636ff738e67e4ec90150768ef119ad74b473c404304408a1","5d470930bf6142d7cbda81c157869024527dc7911ba55d90b8387ef6e1585aa1","074483fdbf20b30bd450e54e6892e96ea093430c313e61be5fdfe51588baa2d6","b7e6a6a3495301360edb9e1474702db73d18be7803b3f5c6c05571212acccd16","aa7527285c94043f21baf6e337bc60a92c20b6efaa90859473f6476954ac5f79","dd3be6d9dcd79e46d192175a756546630f2dc89dab28073823c936557b977f26","8d0566152618a1da6536c75a5659c139522d67c63a9ae27e8228d76ab0420584","ba06bf784edafe0db0e2bd1f6ecf3465b81f6b1819871bf190a0e0137b5b7f18","a0500233cb989bcb78f5f1a81f51eabc06b5c39e3042c560a7489f022f1f55a3","220508b3fb6b773f49d8fb0765b04f90ef15caacf0f3d260e3412ed38f71ef09","1ad113089ad5c188fec4c9a339cb53d1bcbb65682407d6937557bb23a6e1d4e5","e56427c055602078cbf0e58e815960541136388f4fc62554813575508def98b6","1f58b0676a80db38df1ce19d15360c20ce9e983b35298a5d0b4aa4eb4fb67e0f","3d67e7eb73c6955ee27f1d845cae88923f75c8b0830d4b5440eea2339958e8ec","11fec302d58b56033ab07290a3abc29e9908e29d504db9468544b15c4cd7670d","c66d6817c931633650edf19a8644eea61aeeb84190c7219911cefa8ddea8bd9a","ab1359707e4fc610c5f37f1488063af65cda3badca6b692d44b95e8380e0f6c2","37deda160549729287645b3769cf126b0a17e7e2218737352676705a01d5957e","d80ffdd55e7f4bc69cde66933582b8592d3736d3b0d1d8cc63995a7b2bcca579","c9b71952b2178e8737b63079dba30e1b29872240b122905cbaba756cb60b32f5","b596585338b0d870f0e19e6b6bcbf024f76328f2c4f4e59745714e38ee9b0582","e6717fc103dfa1635947bf2b41161b5e4f2fabbcaf555754cc1b4340ec4ca587","c36186d7bdf1f525b7685ee5bf639e4b157b1e803a70c25f234d4762496f771f","026726932a4964341ab8544f12b912c8dfaa388d2936b71cc3eca0cffb49cc1d","83188d037c81bd27076218934ba9e1742ddb69cd8cc64cdb8a554078de38eb12","7d82f2d6a89f07c46c7e3e9071ab890124f95931d9c999ba8f865fa6ef6cbf72","4fc523037d14d9bb6ddb586621a93dd05b6c6d8d59919a40c436ca3ac29d9716","758af25aa03efc1bde00bc6a70051706b52278a175b720903c7cc514da00bae2","b8d8b6d3eccb0ff6b19abe3c3ddfd654440c64268ecbb84084b702180bbe1a6f","76216f8c724be8592795bfb162f7472a7e34bb482dee730d4b68b4f5e6d9acfe","c10063ebee54fae30b3b6ddcfaf3e271f2a789c81fe1064c3a3f07cac5c80639","2153b9e7f5b25f8e6df21f15a3821add7250c47a11bfe56fd80400f82d80e749","332680a9475bd631519399f9796c59502aa499aa6f6771734eec82fa40c6d654","191bee6605de2b5210f29f22df04f5b5e6bdcc1f6e21fb07091d40eeeb75fd72","d83f3c0362467589b3a65d3a83088c068099c665a39061bf9b477f16708fa0f9","180e527dbc1f5ae2bbb79d0a3db1ada49258783d7e6299559e0f2ed663b4afec","29994a97447d10d003957bcc0c9355c272d8cf0f97143eb1ade331676e860945","f4260022f7af38e533d364ea62eb7ae01b0a32050033d7f6772073e1dc908025","9cddf06f2bc6753a8628670a737754b5c7e93e2cfe982a300a0b43cf98a7d032","3f8e68bd94e82fe4362553aa03030fcf94c381716ce3599d242535b0d9953e49","63e628515ec7017458620e1624c594c9bd76382f606890c8eebf2532bcab3b7c","355d5e2ba58012bc059e347a70aa8b72d18d82f0c3491e9660adaf852648f032","311cc121259b3e0c3c08304fc25b525aa02ba0f9bf55b3e7c60b0dbb7422014e","74c269b43d39e5ece20b2cca49c14e64c05b01e46407200d7558301d0fcaabf4","ec09bd95866efe38cd00ebb79dfa7a26563d600fa4a30db0f7c6d68f8f6d2b06","482d0ac70d56aa79941be30da6df28e926a007f835eed70cf7b5f3135368d1f6","7dd19397d5a090c9f8cd762bae67bd0ad6f782abe422594fb71168fb578673b0","84cbf6204ada0ee2f80493e55e45befa079954788718efd6dcc103183104e3c0","ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","9a0a0af04065ddfecc29d2b090659fce57f46f64c7a04a9ba63835ef2b2d0efa","10297d22a9209a718b9883a384db19249b206a0897e95f2b9afeed3144601cb0","034b8b5912823744c986986f24432bf3fa7bfa671e69316b672f3f2db5166ce4","34d206f6ba993e601dade2791944bdf742ab0f7a8caccc661106c87438f4f904","05ca49cc7ba9111f6c816ecfadb9305fffeb579840961ee8286cc89749f06ebd","6503475a288aec965a1e024aad91655a369b2fe9df68ac2eb591581f0d80234a","d5c1d1783a9084401773e253c3a0f01d88bc00a6d5eeb2c3e555d467f0878130","97ecd68a29d2595310edc6524e7f586e29ba223c362847be139c33ac28f64118","f35e4e7c5af8af03ceb1aa8e919be66453ebc1eb13247dcaec5d3931674d6396","9264536e779b2256b3180b79fb0b4fa8714b4d367d575c6c8546c7d515caf84a","f48c6fd014349ee9521aa17cca93c12e2a51f72f05222bb7d398d0a65655cdf4","380394e335fb2c2148f1b77e3184bf23bf10ee8d3182d08dcb4e6148a5450105","a8c2d879c30370eb8b34efb45410f8893889b258c3405d78e566926851a07035","471e324520c7373de5de2a810bda9703b2603962de5a3e55fb9cbbdd4ca45569","3d4d17884df27d94e6053df5fce8d80ea1f624c354fa3856026f0cf955289ca2","d913f373e79e6e95c84c8cdd143c4b792b8e5d76ec34b663bcf433406dd7e01b","388d5f3563fb454c3d1738b3689a0c4e0395d9a03191be81a4472c0bcfb2efc2","03464dcca517bcfb982cefdc316afe821aae8bbe02dcd4765dfa25bc2aecd097","59bdc8b3c0ca88ace4d08cf703a52a14f91ce05e3d66235df792915ea54f67c9","8a90c628f293590574bbeb66092271849d180a7f4812cb05233a2c4cb30e0c04","d2ab468a72716e9a385b9c0188ddd17045efb781ce90fd9f00141729cdc867e6","c3fbb898f4185e04b223a3c406f71be2ce89b58816b95096e91bd40bf74d2a08","7bac41f2fcdc718cb06a0caee8796305de3f435a1c3d5a700305f9cb26ab3041","e46abaadffe51343e4b50115f22ec40c55efc952e1a5ad8ea83a379e68fdc41b","56a44eae80f744ff0ed0ae54ed2c98873d9efaeb94b23102ce3882cbf3c80c87","c1608564db1e63ec542694ce8a173bb84f6b6a797c5baf2fdd05de87d96a087f","4205f1615444f90977138e01f4c6becc1ae84e09767b84c5a22185ddea2b8ffe","823fcbdb4319180e3f9094bc859d85c393200b9568c66f45ba4d5596ace5641d","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","0972ae3e0217c3591053f8db589e40b1bab85f7c126e5cf6cc6f016e757a0d09","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","165181dcaf69484f3a83fef9637de9d56cfa40ee31d88e1a6c3a802d349d32b2","823fcbdb4319180e3f9094bc859d85c393200b9568c66f45ba4d5596ace5641d","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","8e517fddbe9660901d0c741161c1ee6674967aaa83c0c84916058a2c21a47feb","30f2b1e9cecf6e992ee38c89f95d41aebdb14a109164dd47d7e2aa2a97d16ea9","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","f44bf6387b8c7ab8b6a4f9f82f0c455b33ca7abc499b950d0ef2a6b4af396c2a","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","0a7a83acf2bd8ece46aff92a9dedb6c4f9319de598764d96074534927774223a","4f9142ccaefd919a8fe0b084b572940c7c87b39f2fd2c69ecb30ca9275666b3d","b80840cbfda90fd14082608e38e9b9c5fde7a0263792c544cddc0034f0247726","dcd34efd697cf0e0275eb0889bdd54ca2c9032a162a8b01b328358233a8bcd49","98ca8492ccc686190021638219e1a172236690a8b706755abb8f9ff7bb97b63e","b61f91617641d713f3ab4da7fdda0ecef11906664550c2487b0ffa8bfbdc7106","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","61cc5aabafaa95e33f20f2c7d3289cf4cab048fc139b62b8b7832c98c18de9ef","811273181a8489d26cfa0c1d611178ddbeef85ced1faec1a04f62202697a38a5","487d2e38f52af45f6c183407858ea3e0a894fb3723c972140436f40878a27e85","15e56c8cb8c5515fe9794c5d223ca5c37a302c62183137a595ba657f5d961527","fda3db70b49ad94d08ec58caf0ca052e51d38c51d0461a28669a419c67edb396","bb7dd4601aaf41b0313503ffc43142a566a87224cc1720cbbc39ff9e26696d55","5ef05c11e0fe4120fb0413b18ca56c78e7fe5843682731fe89c6d35f46d0a4ae","02c3a89952ea1b30a3573246649c474cd27b17a26d532abed1e152d5981a6b97","d2873a33f67fd7d843ead8cebaeebd51ada53f5fc70d4a61e1874c5d2e3fde4b","94c6e873b76d2b5094bd2fddd026db85264bc24faa9cb23db9375f1a770312b5","2e8e67d756f97ff13764c81f098b9de13ff91e31028890f3dabe9e8d354f7e47","a3476600ff22e7d4845d951dbd0548f8d118f2bfe236aaa6ccd695f041f7a1fc","02c3a89952ea1b30a3573246649c474cd27b17a26d532abed1e152d5981a6b97","a86a43e07633b88d9b015042b9ea799661fe341834f2b9b6484cfa18a3183c74","8994f4c217d03e50957cc4693ae5fd35fd15c60c7d77a31528d90cbeb89311df","f5db90ab2b03fc1bc55b4d46df4aa6d4cacdbdd1491bcba0a3cf1a73777204d7","9fd04134a11f62f6b1523168945b42a74c35ffe1ea94dfdb08ecddf32218c5c2","dbe0161c1a41397e79211136cc6d595b10117aa23ac2f17f7484702ada81bc13","b21e6c15895ef16c12925295ebbb39f6731a0c74116f7bfdf5a9085040178bac","ea9911c1ac347d631cd840485aef26a8079f0ab64019cc90ae6c97d97dd65034","e9ff90fbab735e28c091315b542c620141a76f91bb0d56a14178908905e51b35","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","6fcdcc891e7f13ad8bd34c4de33d76d96c84f06d9ab6629620c8cf08d0cc6bea","16a187924c639631e4aab3d6ea031492dc0a5973bae7e1026b6a34116bd9ff5c","cd78f65631ff21afa0d2d72f47bd7783126e48c986ff47df22d1dc31347730e5","f5db90ab2b03fc1bc55b4d46df4aa6d4cacdbdd1491bcba0a3cf1a73777204d7","ad068305ead33649eb11b390392e091dbf5f77a81a4c538e02b67b18eb2c23b3","8994f4c217d03e50957cc4693ae5fd35fd15c60c7d77a31528d90cbeb89311df","caa292653f273a1cee0b22df63ce67417dbc84b795867bf3cd69f7386bb0f73c","cbe901efe10faaa15e14472d89b3a47892afc862b91f7a3d6e31abeb3546a453","717b25e589f53597f65f42e0ccff891cd22743511c79b50d534d2fa548484937","79d5d086cfd15de8c973783e166e689aa29100d0906ccfef52928504949cf8c2","15ecea8b0870ebf135faa352b43b8385f5a809e321bb171062da7ad257c9fd08","df9712034821067a7a2a0cf49c7bb90778dc39907083fa47b20c3e22c4e62da5","6b2394ca4ae40e0a6e693ad721e59f5c64c2d64b3a6271b4f20b27fce6d3c9c2","27ea6d85f1ba97aa339451165cae6992c8a6a7b17d3c8468e3d8dce1c97d16cd","05751acbcbf5d3ff3d565e17589834a70feb5638ae7ee3077de76f6442b9e857","54edf55c5a377ee749d8c48ca5132944906c09f68b86d1d7db4acc53eea70d57","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","bd0923e7cd1c54c64d7396fbd284983003f0e757bd67f3d6cf3a4e5d394128d7","b80840cbfda90fd14082608e38e9b9c5fde7a0263792c544cddc0034f0247726","4628d6640af9591f1671e0737b3b7de3abe790ff92686a46d6ca5b2e867162c1","50145df9cc9bdb77ac65e4622d11fb896b4730f6f727ffd42337a4fdcd2346da","0211a096d47b00b5ba4f6a2557184c649db02cb13a8d63f671428c09818b6df8","d32d132c14387d64aa1b776f426a5c3ddcf8211d8764526380dda04f9f4dd776","af1c879f74fa27f97cf8ae59ed33421826b7d00647c601cafbbeea129ed5ef5b","3b47ab89a1b5a0d3943aace80a68b9af7ae671e359836679ff07536c56ada3fa","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","ae66752cf1b4d08f0b1870dd7c848e491f078116e6395ee5171323c7ec30e92b","14a9ec5df1f55a6b37f36d5d91699092119dba1d81defd12151eb0069a26069d","ff49d78bd5a137f76e23cc9629105c1d216c43bf68f545acf3f997e838a47ba3","842f200637a0e0f390a6512e3e80c8f47c0193bbdff19b5700b070b6b29f1787","26a06ef0d60229641de4f9d0ac8566a471b99a3c124e567405a82e77116bee2a","f4f34cdbe509c0ae1a7830757a16c1ccb50093b3303af2c301c0007ec2ddf7e0","59ba962250bec0cde8c3823fd49a6a25dea113d19e23e0785b05afde795fad20","ea930c3c5a401f876daaec88bfc494d0f257e433eaa5f77208cc59e43d29c373","318ba92f9fcec5a9533d511ee430f1536e3e833ffe3ea8665d54fe73e28b1ad4","adc45c05969fc43d8b5eaac9d5cb96eccf87a6a1bd94498ddd675ea48f1ba450","5691d5365f48ff9de556f5883901586f2c9c428bcf75d6eff79615ae1fb67da6","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","a67a76d1886745066bd45956fdc5842812786be2a47285d2c59424882cefd6cf","66adf84e776d039acb0207f079934f389147264385fc8847b56481253da99fad","d2eee6a9d0b2f4123aba65f6e1bc4df3f973f73a7bdeaa9f76c3c0d3f369bef8","8f47038a38222bcbc8551a017ae2e32933ca4e6d2a4ec5cfa01179f1facfa975","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","73c82b8dd8ac2916e7cc44856da0dc795ca9952bb63baa220743d31f62b278e5","9e302a99187359decbfba11a58c6c1186722b956f90098bb34d8b161bc342a0d","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","9a06d96357b472809d65ea00b724b4309ba8c9bc1c73eadd3c465e1c336a1e2f","ac2b056c5c243b64e85fb8291efd5a1a5481f0bc246b92ea40827ed426ff408c","be78757555b38025ba2619c8eb9a3b2be294a2b7331f1f0c88e09bf94db54f3c","d68d6551207bf833d92fb7cda4d9428182f8c84eed1743d9a1e7135003e8e188","99394e8924c382a628f360a881171304a30e12ac3a26a82aba93c59c53a74a21","ed1f01a7eb4058da6d2cde3de9e8463da4351dbab110f50b55e6a7e6261e5e86","19ee405d4f1ae4cbacf4361f9a03092a9d69daa3b4ec147c346049d196b5656d","6d82ce2eadb900816fb1fa8b62eb4fcf375322bd1fe326b57ef521a0cac3c189","19ee405d4f1ae4cbacf4361f9a03092a9d69daa3b4ec147c346049d196b5656d","9d344fa3362148f3b55d059f2c03aa2650d5e030b4e8318596ee9bd083b9cf05","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","bfea7300ed7996fd03c8325ce6993eed134984b4bb994b0db8560b206c96f1f7","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","ca87e8ccd63c92b34fc734eee15d8ab2d64f0ffb85d762018bc0df29ca7185b4","4628d6640af9591f1671e0737b3b7de3abe790ff92686a46d6ca5b2e867162c1","a3913393d42c709b4faea550820241a262a4ba3577f9a00e2f8727eaa92be535","5e424456e19df83a4befc6cd24561c2564b7a846b7025a164ce7076ee43828ee","887dec57d4c44eaf8f5275c9f5e02721b55c0a34f21f5b6ed08a1414743d8fd9","2d53acf155ccbc6b7dca2cfdb01bac84e3571865d925411d2f08ff0445667ea8","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","a7161c3e94028388a80f7091eb2f7f60d2bdde6a58f76876ab30f66c26f6128e","381936e93d01e5697c8835df25019a7279b6383197b37126568b2e1dfa63bc14","9944093cbb81cc75243b5c779aebfb81fe859b1e465d50cd5331e35f35ef263a","fb19163944642017fcdcbdc61999ab21c108334c8b63377184a2a1095698889a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","1bd91f5355283c8fa33ad3b3aace6c4ebb499372943a49f57276f29f55fd62c4","6535056b39d5e025505b36ec189302e15af7d197a6afd9a3c853187eb1bea7b5","34f97cabd716ba01042042f6523183149c573b8fb15a08a3a9524bf1950216ef","01911dee2f91c28782c46d57e2e19e250f7c9db4388f8e9945476379e9392d56","95ce7b12742f82bddb85134d8ee20a759c698e5d8beefd559fd6e87112fbf72f","0b464435da3dd6473694a2128d49f37c9cf43951455c56f0aa5a940f290c69d2","75a5fcf80ec969763cb4a31d2cf8b8531b076d6f1ef8699bd9dacca43d34b571","b27117352bfa4f1e6fa6874c3f5518252ae2ff30e345d9e505409a75a232372c","d21630c0cd7409e8078cc0aeebf3cf8b915888553d7c9c2d9debd918bfd4bebb","7e7a2691f49c7d2623b8a531c9eb4005c22daa57e7789f1982c19fe3c1bf55eb","80c54f1d257a28de68ec6c23ca7da374071646182d9a2d2106a91606ebc15f52","55ba9e8cb3701eff791fccbe92ef441d19bc267b8aab1f93d4cac0d16fffa26a","a40e9367d94ec1db62a406d6e1cb589107ea6ad457af08b544e18d206a6ae893","12b260ecee756ba93760308b75a8445f2fe6a1cff3f918cf7e256e3d6d1066cc","181de508acbe6fe1b6302b8c4088d15548fb553cb00456081d1e8d0e9d284a24","ead149a41e9675c986e6d87c9309e751a8c2d0521839a1902f05ec92b2cba50b","d15a8152e6df11bfad2d6813f4517aa8664f6551b0200eca7388e5c143cd200d","98884645b61ad1aa2a0b6b208ebaab133f9dd331077a0af4ec395e9492c8d275","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","f660100bff4ca8c12762518ba1c1d62dd72ee1daa7ea42f7eae2f72e993bec6f","fd7140ce6b8fc050547d7da8696ed2bcdf4cabc4e65f40f4ac1b080f694711d8","8689dabe861fb0bdb3f577bdd9cca3990b14244d1d524c7bdb8d89e229c903a6","15d728b5790c39ce9abbd1363e0a5ed03ee6b59a38ee3c4d9d25476641baa7a5","95159570a0fc2b007b1a46ed8caf145ad6711030c0c4727cee979a3b770b0634","e5446a2b0c44d21a4e2ed885bbdb40a4e39a184f9155f13717993782e313bc7e","8683b5b593a5fd2cf99212195ba25106e61a546169068626c8a3745ec6e94bed","3f72337d957fd6c87b5c8628c85633d7314b8539cc641ea71a6f93a71f7533c2","5d0975641e296dba1ebaf16bb987a2b3abe0a62d18fa1396f57c9d4aaead48e8","7b08a55fd84cf8bbee204fa09e8ea402996a648c5af38b52d27231c60d9c8e4d","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","60d3271e8f6a7e952844b716a5f9f71744cb8d6fbeb9adaf35f1735ff7e44aa0","632e473a59bfaff109a4405851b56c61aab4a82cedd2a658b37931f98f64ba91","178871c23f0cac1cb358aa23f0ba3b1650ec3e962f575e82d33bce7550e55cce","94386e32c1da2a3dbff53bfa3aca55ef89397f09bfbb7546890031f246d65716","2b96e9789937d863abbb5e33861c941da0d0607fa548f965cdf4e0cf984579ce","ea80ad7543efdaeb5ee48a3951f5a32adaa8814fb2a8b9f8296170aa31083455","72aad439f7b0cf1c9b28cba809c6b818c72d09f8eeb5978f626d088c2d520f18","40d4add4a758635ba84308ecf486090c2f04d4d3524262c13bfb86c8979fac4e","72aad439f7b0cf1c9b28cba809c6b818c72d09f8eeb5978f626d088c2d520f18","f44c61ac2e275304f62aace3ebc52b844a154c3230f9e5b5206198496128e098","924f76dc7507df1c4140262ea2a2d8ef99b8c31e995edefc8271928a3e4807a6","3ffc5226ff4a96e2f1a1b12720f0f8c97ac958ac8dd73822bedf6f3ed3c35769","924f76dc7507df1c4140262ea2a2d8ef99b8c31e995edefc8271928a3e4807a6","9df26a86871f5e0959d47f10bff32add294bf75b8d5a4f77a19dfc41694649d2","bfdd4ae390e0cad6e6b23f5c78b8b04daef9b19aa6bb3d4e971f5d245c15eb9a","369364a0984af880b8d53e7abb35d61a4b997b15211c701f7ea84a866f97aa67","7143d8e984680f794ba7fb0aa815749f2900837fb142436fe9b6090130437230","f7b9862117ae65bea787d8baf317dcc7b749c49efeada037c42199f675d56b7b","78a29d3f67ea404727199efc678567919ecebbfdc3f7f7951f24e1014b722b46","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","e53b2d245026cefec043621d6648fab344fd04415b47270da9eb4e6796d2a9f4","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","f10a10d90bd1e3e12e1d7d027086a716dd6fa03d251597af77210e7a3081ac0b","b2bd6911e91dbb008938121d0fd7df51f00148652090bc9ccde4dc704f36f011","1bbdf84753428ed6f1533eabb066f9b467fade05180797e39cb32b4be4ba7d5d","e52d0f3e5073519a3a0a69fb0090c180f219fa04fc4053bb2bc5453a61296acd","24b30db28923568ff5274ec77c4c70c3e18a62e055f207633b95981ba94b0dee","e285a018fca2bcd32f25e2e048076b135086b3bd0d6215b1f72716129dce44ad","d9901d27accf8b30a3db21c9537e516427f55abd13ca53283c8237711bd37c16","46ded89297bd3856f536a6a990d64831ea69976626669e9371fe12e47a263ceb","823f27e48b1e7ff551b90d15351912470ab3cd0fa133bc2e1ddc22bea6c07d23","189abcb612878978d45a513656690710591b93860bc9cc2d2bf58c5f2ea9b3ae","e6251b50929025156877155e58eff37840da58c85d094e3f128b4f07e03aa66d","e6251b50929025156877155e58eff37840da58c85d094e3f128b4f07e03aa66d","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","657bfa91b3233a36081f7030fa35a16728be10e90b926a9e8ae218e9078a5e75","c6b1f54c34ab08126f8594801908410a93a64e0dff66df8a226a9b5460054f19","ca969c350e570c5fa395c4fb88ea52dfe50014890c445d2834e4f1fe96e93c2d","a6f374e4c41a9aaa10213ba98f7d1e520f4cc314c2f20770145124e2f207f11c","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","1481094055c14f5976d55446330cca137adf0b2a39dcae164f1d6460862e5e5b","914912142f2648f12b831ad10bcfacfbc02876161de095c479a1ae308067f646","b5f7732acfd56640a680acbd12caff991c839c3dfd5a4b48ad90bd7a730d501d","8b801973d33012fc9b97dcb37cfd2d5d30eed228b4d342ae3563972ba1004279","09c3bb9dac02114c00586e82c825655ea0c5031097667855544d436063322760","14e64ceb540cc27093ba1a04948aec14707da94a6ff1d9675efca976e10fea49","da6e2dde5747e6e71bdc00a26978fe29027a9e59afe7c375e2c040a07ef9ff25","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","da20ac2b80ec650f4c36df8ebff9493625634329eb0f901a0971dd6619e0978c","ef51ac3ae8d6ddc8ee29937a039cbb4a9bfe6ab34267d4c9d998645e73f91237","cc45a177fe3864f8a5579ddb987cb5db0ee47c4d39335832635c241b5f98337e","3aaf74018283ef4c49f52bcab37f09cd6ec57fff27503090bc4bb75194fd68a8","69578d34fa63a8314823b04f6f57a60671755666055a9990b070f5403f21d417","c9aa17bf9f1d631f01764ad9087de52f8c7e263313d79ac023f7cd15967b85cb","78d05f11e878fe195255ac49d0c2414a1c7fa786b24e8d35c0659d5650d37441","b93a1522b0ae997d2b4dc0e058c1d34f029b34370ee110b49654deeef5829a41","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","ae2104bdc52ab3722b5c0cfa26aa65b077e09d7288695f9e0ee9ffde08721b3d","a4038d37487d8535f99ba99adc4a01b08f038515dd939e57bd80a3743c0e5662","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","483095dc7d04bc24cc55e72a807fa8d786a52981068c6f484947f63956b0fa92","4539884fadd3b91977560c64de4e5a2f894a656a9288882e1307ba11c47db82e","430016e60c428c9c8bfa340826ff7ed5988e522348838700f3c529dc48376c10","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","2e1b0586468b145f432257bfc0dc8d40a82b04ebd00c5f92efdde426d14d122b","976d79fce50c222b3aa23d34e4165e1c8424060c3744a4a5b5834bbc644e64a6","d61d7221ed4b74db0568ffae7765f6c2a48afc64a076dd627e98dfecd1ad9897","89ac12f3bd077e0d31abc0142b41a3dbbdb7ae510c6976f0a957a1f3ca8c46c9","694d279f9a6012c39bba6411e08b27706e0d31ea6049c69ff59d39a50de331cc","e27f95d214610d9d7831fdeccba54fbe463ae7e89bd1783d828668072c2d2c92","ed48328b38a82b98abf873153e939c9baed42cbd5d5289830dd832c552db5024","6ca43ca6b5f1794be3eee4993c66f15083c3b47ee45615163ee49f450e4b464a","8d8381e00cd14cf97b708210657e10683f7d53a4eddcfc3f022be2c9bdf591dd","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","ec85bf4283c2ec8108b0b6161f155aeedfc770f42dca27bb6fca2cfb0abf1a8a","ec2ba248e2ad73cfd1989cb7f53ff1df5612f63b628e03a472308c1bab10c0f9","ea763067ac7adab4741f87de9fec3fc154ac1f3578b7e3bc0c64b42c6f6c912e","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","d54fa16b15959ed42cd81ad92a09109fadbb94f748823e2f6b4ad2fbbee6e01f","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","2e2ffb8593c9db471bac9f97c0b1f1c7ef524946a462936e5e68858ac3e71566","d4c081ae5c343c754ac0dd7212f6308d07f55ab398cee4586ee0a76480517ae5","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","a4f2c605bbc73124b1bb76faa66be28937ccfb7f5b77c45cd8022071bd53696c","be4c58de8fd3ddd0e84076c26416ce5ffcf193a1238704692e495bc32e0a6ec5","af9491fcc19d5157b074871bdceafc18dd61972020fb8778c7d3cd789cd8186a","64da3dee7d98bdc4b99b24de094a08ffb2dda8aa14270cd51fc936dc8af1cdb2","a4038d37487d8535f99ba99adc4a01b08f038515dd939e57bd80a3743c0e5662","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","152532087c2a91adb4527e96ccd7b3640f1b08c92301fa2f41ed6a53130bda67","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","6e39d03aa07f268eed05dd88e1bd493cb10429c1d2809e1aaa61fbcd33978196","aa7384441d37522532179359964184e5c8cf649db32a419542e7b5605208b45c","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","36d27819ece3bf0eefe61ecda9e3aa2e86b5949c89dba79f17dd78a2c4587a61","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","18a20ae79049147b460771dfd6b63b3b477772d763c26b367efa499c98e9fb5f","4c91908ebcc1b1c91f5c9cd7e9ffff83fc443e6926013b0b0082a6c2778b729e","ee51a4032beba0b38ff75838b386627a38c53008b8ca350bb42f192d0fb3cf58","b14b8756b166914ab1cb68c44bb579566833449d5e9d68655726f6ffc6d5e457","a09ae8631b5e442bbcdb93e3b60d6f71a54d192452af841616e2b49c5a03fb26","7a254103740333c7fb870f95ab9a26fb028cb298478f43e4750b8eddefafa11f","d54b449b0eff66bc26e09593df44512725b9e9fce4d86ea436bed9e7af721ff1","91991180db9a4d848bd9813c38a56d819a41376a039a53f0e7461cc3d1a83532","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","637ffc16aeaadb1e822bffc463fcc2ca39691dea13f40829c1750747974c43d4","7955f3e66404ff9a4ac41f40b09457fe1c0e135bde49e4d77c3ea838956041bf","f6d23ab8669e32c22f28bdbdf0c673ba783df651cafcbdcc2ead0ff37ba9b2b5","c90ef12b8d68de871f4f0044336237f1393e93059d70e685a72846e6f0ebbbff","ecefe0dd407a894413d721b9bc8a68c01462382c4a6c075b9d4ca15d99613341","9ec3ba749a7d20528af88160c4f988ad061d826a6dd6d2f196e39628e488ccd8","71ce93d8e614b04d49be0251fb1d5102bb248777f64c08078ace07449700e207","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","4818c918c84e9d304e6e23fdd9bea0e580f5f447f3c93d82a100184b018e50f5","6e39d03aa07f268eed05dd88e1bd493cb10429c1d2809e1aaa61fbcd33978196","eab3b41a54d5bc0e17a61b7b09639dc0d8640440e3b43715a3621d7fa721ae85","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","36d27819ece3bf0eefe61ecda9e3aa2e86b5949c89dba79f17dd78a2c4587a61","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","ce8eb80dad72ac672d0021c9a3e8ab202b4d8bccb08fa19ca06a6852efedd711","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","d12e9c3d5e2686b5c82f274fb06227748fc71b3a6f58f7b3a6f88f4b8f6921fb","5f9a490be2c894ac65814a1a9e465b99882490ed3bce88c895362dc848f74a8d","2d5935948312241d3195b5e24df67775c6736dec1e1373efb1b6f04447106867","686ccf874ccbf999a155208a7ec8358a718d211f779980c2fe7cca176025d769","48bf56f3c8b3d0b27f94587996400c129773ab9c4810354d89850b0bee92b3d7","e6e9bdd2f65408a0b52d8e8ca9ddb7827c5f3496561788c974e4f2fb485427eb","193772121770797ee600739d86de128cd7244e3e3e101684473eb49590dbfce1","7a6208fa971deb77dbd7c59d56f7eb5b2516d76a3372a55917b75fc931c44483","b9aa4ed5dc603ad443dac26b9c27b0680b1cf4614f321b8d3663e26c1b7ef552","8613d707dc7f47e2d344236136010f32440bebfdf8d750baccfb9fad895769ee","59ebb6007bce20a540e273422e64b83c2d6cddfd263837ddcbadbbb07aa28fcc","23d8df00c021a96d2a612475396e9b7995e0b43cd408e519a5fb7e09374b9359","9a3c859c8d0789fd17d7c2a9cd0b4d32d2554ce8bb14490a3c43aba879d17ffb","431dc894a90414a26143bbf4ca49e75b15be5ee2faa8ba6fcc9815e0ce38dd51","5d5af5ceb55b5ec182463fe0ffb28c5c0c757417cbed081f4afd258c53a816c5","f43eee09ead80ae4dcfc55ba395fe3988d8eb490770080d0c8f1c55b1bd1ef67","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","4c9784ca0ab39916b498c54db858ea27c929777f161a2450f8712a27cec1b017","9c92db9255eab1e3d218bdeca593b99355bbf41fa2a73a9c508ad232a76cda96","bf2cc5b962f3823a8af297abe2e849227dbfb3a39a7f7301c2be1c0a2ecb8d32","eaed6473e830677fd1b883d81c51110fcb5e8c87a3da7a0f326e9d01bf1812ff","3ac0952821b7a43a494a093b77190a3945c12f6b34b19f2392f20c644ac8d234","ed5877de964660653409f2561c5d0a1440777b2ef49df2d145332c31d56b4144","c05da4dd89702a3cc3247b839824bdf00a3b6d4f76577fcb85911f14c17deae5","f91967f4b1ff12d26ad02b1589535ebe8f0d53ec318c57c34029ee68470ad4a3","f6ac182bf5439ec39b1d9e32a73d23e10a03fe7ec48c8c9ace781b464ecc57c3","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","687b26db97685fcadeb8e575b6bc252ea621fef8217acd2bb788ce781a4b05b3","e4a88ca598bf561ec253c0701eea34a9487766c69a8d8e1b80cf67e60dcc10d7","281cf6513fcf7b7d88f2d69e433ebbd9248d1e1f7571715dd54ca15676be482e","dc9f827f956827ec240cec3573e7215dc08ed812c907363c6653a874b0f5cabb","baa40541bd9b31a6f6b311d662252e46bad8927d1233d67e105b291d62ace6e6","d3fa2e4b6160be0ab7f1bc4501bf0c969faa59c6b0f765dc8ca1000ca8172b18","cf24c5c94e5e14349df49a69fb963bee9cd2df39f29ddd1d4d153d7a22dfb23f","18a20ae79049147b460771dfd6b63b3b477772d763c26b367efa499c98e9fb5f","c5ad2bd5f2243c6fade8a71a752b4333b0ba85ae3ea97d5323f7d938b743cb26","cf1e804f283ae1ca710f90dba66404c397b7b39682dbdfa436a6b8cc0b52b0ab","25fd641b32d4f7d6811cec4b00c0c9a74cb8822ec216f3b74bae205a32b1de08","658f07f1b7c327ecc8b18ed95ada19a90f9fc3f0282d536ca9d6cd2d597631f4","35c8e20c61bffc19a0391f42db2fe8f7bb77caa414bd2145a8891826bfdb9667","658f07f1b7c327ecc8b18ed95ada19a90f9fc3f0282d536ca9d6cd2d597631f4","b3279a079db8ea0c8b76f7f3098f4b10266c3bb24fa21e5838fe6008e3d40043","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","8aec152ae554311c39f87fc5ec3c1f4c5d5d44e1145704782a4fdd6b16c2f1d7","9b4a1b563bc6d3d02a4a9d3e72bf699d486a6b117fdcf29199d49d3650abe122","803e87c5c27720886ff9f591a47e3281b02bf737f6c67964d72a4d8e7b905a21","ce762eb7d3137473f6b50c2cd5e5f44be81334550d9eb624dadb553342e9c6ed","3a4d63e0d514e2b34487f84356984bd4720a2f496e0b77231825a14086fb05c1","22856706f994dec08d66fcbf303a763f351bc07394fb9e1375f0f36847f6d7a5","1f2b07381e5e78133e999e7711b84a5d65b1ab50413f99a17ffccfc95b3f5847","39aa109cb3f83642b99d9f47bf18824f74eaaa04f2664395b0875a03d4fc429a","15ca7cf99d213ac6a059a5f81ff17dd2c0d4e31260821719ef7e78ea6163f518","ee130bd48bc1fb67a0be58ab5708906f8dc836a431b0e3f48732a82ad546792e","9d32f274f0b2388e27a83b6b88b33616a4b73b4d045c00d814e942c07a5c9a57","06a6defbd61ec1f028c44c647c7b8a5424d652b3330ff4f6e28925507e8fde35","9d32f274f0b2388e27a83b6b88b33616a4b73b4d045c00d814e942c07a5c9a57","15ca7cf99d213ac6a059a5f81ff17dd2c0d4e31260821719ef7e78ea6163f518","9df4d5273810ea069628b1efd0ea6ca9932af9694bfbc8dcea17c8253f1790c2","9b3ca716ad96d961aa8f2bab5fbd6752637af2da898f54c8d4021ef8ab2607d2","60d53d724e5854f545fd4753881466043628eb886159a73568878f18b3020afe","c53d0b758384bd45cd3a051a5227805b57eae8f2142e906d65ae97c8868fd45f","a844bbf1cb0bb844743b2d78eee9bdc78df80a98989deab32ff8cd3228b41289","b641f9357511425b12ad981f9ba66d964fc114b78a5761ead8595599f036a22f","3537c3f024e3bed94fedcce3444fca3c1bce744942912a5a4857f7050ab25429","96a5c70389556c62902487f56bb34259ef57439a4cba6c9bdbbbb55225b32e63","54895ba2b529f7c369600228dbb88c842c311d1fb7de4ccbc43123b357c26a90","9d0050ae8481d6e0731ed80b55f6b475ae3a1cffbc61140e92816a0933dba206","68867d1d1560d31165f817de3fceb4b2bedbd41e39acdf7ae9af171cdc056c47","1c193e68e159296fded0267475b7172231c94e66b3d2f6f4eb42ffde67111cc5","f025c51bcc3c7dacbedb4b9a398815f4d5c6f4c645db40880cee4ac6f89588de","b94704c662a31e0d061abb006d38f6211ade97422f0ae45d751ef33d46ce3042","c3e2f2b328bd55ae9a401673bd33f86d25a7d53a4f5e1fad216f5071c86c0b79","5f6e56ac166b7a5bde756afd2e573af1e38fdd5f10ddb72e46bc44f3c0a42369","9b65fd7edfcf3c4c6538d735d269647edc14856dc062e9dde80412c45ff2cf29","fbb26af430ebc8743161f6026a0722a4cee3df8c08bdc2610a1d037f733fa823","65de396834768bf2b3548447b84b774310f83f33d00f9fb951c1b338dd9b5395","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","75b022f6a48640ca4e048da35132eef2cb9445680c7e1080021ccc15f4d2bf59","ea7c9f9c4b1cd2573d49dd628d446fa7611052e00ea1a3aa385a83a7b07c7fbb","a74eec58a6011f6ba3d6bbe4eacea0935f7fce9ad34f8c8bd8ed8872ae68f826","6bd326162475f1661612f9bb68aa7833e548c7a726940f042e354086cd9b7c2d","4b3d55b3d962f8773ea297be1b7f04093a5e5f0ea71cb8b28cef89d3d66f39b0","39d7517763d726ce19f25aacf1ccb48ec4f1339978c529abdf88c863418b9316","4ce8ae09e963394e7ffe3a5189007f00a54e2b18295585bb0dae31c7d55c1b3f","b29b65017a631dff06b789071cdf7a69f67be35238b79f05e5f33523e178feaf","58cb40faa82010f10f754e9839e009766e4914586bdb7a4cceff83765fa5e46c","efa190d15d9b3f8a75496c9f7c95905fca255a7ce554f4f0b91ba917b61c3b7e","303fd31bbed55c8cdf2d3d9851668f4e67746f0a79861a3b4d947a6c1c9e35c5","0fe6e8d738df018108bd3ca0e208dfa771d4e34641242b45423eca7d7ade80a7","8210e3bdbeeb9f747efdf7dad7c0ed6db9d13cd0acd9a31aa9db59ddbbac5a15","d6791734d0fce30014c94846a05cb43560bce15cfdc42827a4d42c0c5dafa416","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","8c4f5b888d7d2fc1283b7ce16164817499c58180177989d4b2bd0c3ebd0197f7","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","ea7c9f9c4b1cd2573d49dd628d446fa7611052e00ea1a3aa385a83a7b07c7fbb","3108920603f7f0bbf0cebce04bcaf90595131c9170adb84dc797e3948f7b6d06","8aded022b77ae3c07af72765bca9421f2d990814e0f4bfca0aa97395aa4c9010","f817987f543a452afa3035a00aa92800dbd7ff3246fcbe4cecb29bc18552b081","6ab1e8b5d0a0f4123b82158ea498222a5eacbffa1354abe8770030ba722c13b7","3cda89b540ed1ea9a3d1e302a489a4157a98b62b71c7abb34f8f15c13da9717a","a1ebece06e1ac47fb3a1b07997e57aa2e6a8f5ece26ea3c4a4fcb591e05d1e05","8aded022b77ae3c07af72765bca9421f2d990814e0f4bfca0aa97395aa4c9010","fb3b5ff3f5fe7767c07b755f2c22ce73ba46d98e6bc4a4603fde8888eed14e19","41c53632da296cf700f8553a48522e993949ea8499ceac4a483d1813beed3017","03b97deb8a168b27af94dca96eba747e19faf077445102d52c618210829cb85f","6a3589af6b9ec75cd87d9516ccfb9b06ab6be6f938790aeb4b1cd4dbaef92c45","722a667fe3b290be746d3ea6db20965ec669614e1f6f2558da3d922f4559d9c4","0f1c68ddd4573b2e135748377c3705a96d6a6c123910b00d0c7e8dc2edcd7f6b","a63781a8662205b9b6d2c7c5f3bad1747a28e2327804477463ebb15e506508e1","0f1c68ddd4573b2e135748377c3705a96d6a6c123910b00d0c7e8dc2edcd7f6b","80d8f42128925d6f1c82268a3f0119f64fd522eec706c5925b389325fb5256de","b4c189c9be8cf4a7cce177fc49678e29d170e67279195207f36a4f4d184d60f2","d16a18dfc505a7174b98f598d1b02b0bf518c8a9c0f5131d2bd62cfcaaa50051","b4c189c9be8cf4a7cce177fc49678e29d170e67279195207f36a4f4d184d60f2","d3ceb0f254de2c13ffe0059a9a01ab295ccf80941c5429600ffdbaaec57410a7","8e172ba46195a56e4252721b0b2b780bf8dc9e06759d15bc6c9ad4b5bb23401d","41c53632da296cf700f8553a48522e993949ea8499ceac4a483d1813beed3017","0fe5f22bc0361f3e8eacf2af64b00d11cfa4ed0eacbf2f4a67e5805afd2599bc","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","226dc98afab126f5b99f016ec709f74c3bcc5c0275958613033e527a621ad062","ec7197e94ffb2c4506d476df56c2e33ff52d4455373ecb95e472bb4cedb87a65","343865d96df4ab228ff8c1cc83869b54d55fa764155bea7db784c976704e93ec","f3f8a9b59a169e0456a69f5c188fb57982af2d79ec052bf3115c43600f5b09e4","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","15ddffc9b89470a955c0db3a04aec1f844d3f67e430b244236171877bdb40e50","7ca1ed0b7bd39d6912d810562413fb0dad45300d189521c3ca9641a5912119a5","30af3be0483da0faf989c428587c526597b80c1e368d85281a3fbc95e360987e","74766ac445b27ae31cc47f8338fd0d316a103dd4d9eb766d54b468cb9aacbf0e","65873070c21b3ce2ccdf220fe9790d8a053035a25c189f686454353d00d660f9","d767c3cc8b1e117a3416dda1d088c35b046b82a8a7df524a177814b315bde2e3","bf834cd64464f9217cb642a48c2f5f5f1cd509e13088adac6773715fb8536212","40258ea27675f7891614c8bd2b3e4ee69416731718f35ec28c0b1a68f6d86cd6","bf834cd64464f9217cb642a48c2f5f5f1cd509e13088adac6773715fb8536212","c61aa5b694977909ef7e4a3fdad86b3c8cd413c8d8e05b74a2def595165ba7ce","bfef3048352341739d810997dcd32f78527c3c426fac1bbb2b8c14293e1fa505","1dd31462ed165900a141c2e159157be0e8701ce2a2ed0977636f1d021894887d","872321f2e59009fad1f2efde489b20508a3631e16a86860740044e9c83d4b149","fa381c11f336210a8c10d442c270c35165dcf6e76492618ee468dba325a3fc98","857857dbb4d949686de80a138aeab8e669d23397100dc1e645190ff8be5787de","d6a9fe9c13a14a8d930bb90f3461dc50945fa7152e1a20a1f5d740d32f50b313","4162a1f26148c75d9c007dd106bd81f1da7975256f99c64f5e1d860601307dad","63f1d9ad68e55d988c46dab1cbc2564957fcbd01f6385958a6b6f327a67d5ff4","8df3b96fbafb9324e46b2731bb267e274e516951fbf6c26165a894cae6fd0142","822e61c3598579070f6da4275624f34db9eb4af4c27a2f152a467b4a54f4302f","a8f83bf864a5dea43d30c9035d74069b1820f0c49824960764cf21d6bfbb8e66","f9449f2b807f14c9ff9db943e322385875cca5faa26775f64a137e4d1a21b158","8855c7125e06a2001f726b4f2f9905e916d122377f7d938936fb49606ccb55c5","8855c7125e06a2001f726b4f2f9905e916d122377f7d938936fb49606ccb55c5","d24f0b133a979dc915411e1c76d2dada47e3624b42d5838e9d6b9eef1f067cc7","755611714dbab5b9b351b51e7875195f83bb26169ae6b31486dcb1e6654ed14c","a82213450f0f56aab5e498eaae787cf0071c5296ea4847e523cf7754a6239c99","f2882c5afda246fa0c63489d1c1dff62bf4ddf66c065b4285935d03edaec3e71","d38c1b0fd8bc7e301fd467a2afd6d32b2457813c48c16afabc06d2ca5b6bda41","d38c1b0fd8bc7e301fd467a2afd6d32b2457813c48c16afabc06d2ca5b6bda41","4ed8f12983c82690e8fecd9b24f143d4a7c86d3156be7b2bff73e0761f820c8c","1d920699becb8e60a0cbbc916d8559a3579b204dd21655dd242c98fd8ae986ea","c278288183ec3690f63e50eb8b550ef0aa5a7f526337df62474f47efea57382b","3c0486004f75de2873a34714069f34d6af431b9b335fa7d003be61743ecb1d0a","99300e785760d84c7e16773ee29ac660ed92b73120545120c31b72166099a0e4","8056212dad7fd2da940c54aeb7dfbf51f1eb3f0d4fe1e7e057daa16f73c3e840","e58efb03ad4182311950d2ee203807913e2ee298b50e5e595729c181f4c07ce3","67b16e7fa0ef44b102cc4c10718a97687dabfa1a4c0ba5afe861d6d307400e00","30af3be0483da0faf989c428587c526597b80c1e368d85281a3fbc95e360987e","f29c608ba395980d345144c0052c6513615c0ab0528b67d74cacbfac2639f1d4","e094afe0a81b08444016e3532fbf8fae9f406cdb9da8dbe8199ba936e859ced7","e4bcab0b250b3beb978b4a09539a9dfe866626a78b6df03f21ae6be485bc06e2","a89246c1a4c0966359bbbf1892f4437ff9159b781482630c011bb2f29c69638f","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","98ca77869347d75cd0bb3d657b6dcd082798ef2419f1ab629ccf8c900f82d371","73acfe8f7f57f1976d448d9569b345f907a6cf1027a08028fe5b8bb905ef8718","ed8a781d8b568d8a425869029379d8abc967c7f74d6fe78c53600d6a5da73413","90ead73acfd0f21314e8cbef2b99658d88cc82124cfc20f565d0bdda35e3310a","8ecfec0e00878d6d26a496cf5afc715b72c3da465494081851da85269b0aef8e","4c78fccd1c5cd8eebde42cc078e7332f3d9b4eb1a542d9a5ec66899dfd71b93e","4c78fccd1c5cd8eebde42cc078e7332f3d9b4eb1a542d9a5ec66899dfd71b93e","e54b165a2a5a5fbcf4bcd09176e4388b514ca70a20635841937f1cc36e37fbef","6eb0dcefcf4cc9088174209028db705572e7fb7e38f3f93275bf6778afa2cd19","fa572fa0d1b1b1a7d356d5942b1d57f342880a68d1bf1ab5d00490221c471c18","17694dd0223346fa0a17e87e9ce00335569166368357b9963571aa623c5e3c27","207d46e6e557df62460be9021502fc3af96c927cef0cc5add32cb6f2d60b2e23","cf0cf6556adc9178a6251d9b12837e5d514b805cebe8de6d7a16e1e4248ec1ef","3d3d28a294ca0d5caea84d58eec474891dd1df7015f8fb2ee4dabf96d938333c","0b5b95f3b76e6cc9b716e08274d0f7486bee9d99e42dd6a99c55e4cb4ff5569e","94fb6c136acee366e3a4893df5ddbecadde49738de3c4d61a2923c6ada93e917","95669998e1e807d41471cebed41ede155911da4b63511345571f5b7e13cbef9c","48cca9861e6f91bde2435e5336b18bdc9ed3e83a6e7ea4cf6561e7f2fee4bad6","b6b8be8a70f487d6a2fd80b17c4b524b632f25c6c19e76e45a19ad1130209d64","76d7fadbb4ff94093be6dd97ea81a0b330a3a41fc840c84a2a127b32311200e6","856a8b0060b0e835bccba7909190776f14d8871b8170b186d507d3e12688086d","e39aaeef0aea93bdda6f00d27ca9ebda885f233ecc52b40e32db459916f24183","14f3c0b1b5e6adac892607ecefc1d053c50bc8a5f14d05f24e89e87073d2f7e3","f877dcc12cc620dede9c200625692cf614b06aadc026f6b59e5967cd2e30cbc4","5a37547f8a18bc0738e670b5043819321ae96aee8b6552266f26d8ce8f921d17","4d3e13a9f94ac21806a8e10983abcf8f5b8c2d62a02e7621c88815a3a77b55ae","938cb78a2ad0894a22e7d7ebd98cdc1719ee180235c4390283b279ea8616e2a9","84ba4c2edb231b1568dae0820f82aca1256a04599d398ec526615c8a066f69ec","cd80a8f16c92fe9f03899f19c93783dce3775ef4c8cdf927ac6313354765a4f2","25df98970954ccd743fe5e68c99b47d0e02720e2bf6584a6de60e805395b6bf7","251983cb99df8c624ca1abd6335ca5d44d0dd7cdcab3ef9c765b4acc79fae8fb","7c4965812974ebd1333cb09f95c4a3669e19008dfbb1e931321e08ae1f7cff09","31d3f4757bece74c888df52c8bdc4373e3f58deb518000051cadb5e85deb54de","a2be4cad298b3b474a0a71c1dd78a8bfc70b322f44704cf4329aecb873687a3a","ca8b04bea4ba551b47ddea18e385e76e555a9f7ff823dcae668d05e255fdc241","de0d160ecc8e643727bb93018015ae89510d59b7bdad4550f4318fba0a0ce2e6","acf3fff2afb5ceb54bd5ddb697b1d337338e3c23b93385f100a2046cfa700184","a2be4cad298b3b474a0a71c1dd78a8bfc70b322f44704cf4329aecb873687a3a","15c7f60f69f663374a7bc57afe164e70e3b6310bd1ee476ba911646b09c7852b","d71becf074ceaa0e91558fe51ed8640fa83a0fbf45a31e8069716edbf38de99a","ef681b070e9f3b9b28f1886bbe67faa12237c8d4691604a1f1cba614a10ef2e1","b15f5e077245fef1ecf45327fd94aa67fc4da288bfd42bf1b8a80f297afd561e","b7091d79a6e7be7bb10ca9477b6c71db4cf7b44f155912266ecfba92c1a126c1","e585a113e0abcaf3022f5cf1318e17f299f0935d7b389a23dcad9074c3922946","ae545310dfa53a7b33f574e621b14f423373dea930218d2ad290b4da0c5e8e50","ae545310dfa53a7b33f574e621b14f423373dea930218d2ad290b4da0c5e8e50","4428e4d440e1914859e8aee558f90b4829c6a45b717078490dfc2d297dcef46c","ad205fc7116808509e19ee71277d8da74157751d7388f0134d91c009b987f69f","4428e4d440e1914859e8aee558f90b4829c6a45b717078490dfc2d297dcef46c","8900bf61f4ce9517567cc6c9e41638a5bd0c4a0e9cc094190bc07644bbeedf24","cf5414a97c345c8f3294e0513a7613f5a263e1b56b3a61b810ba8279716fd38c","7778bc213be81351a01867789728c7780467c84e3ec94cfcef53a4e2dccf1b57","41a934d2efbb6cb08b205a76206fb015ebda692db4d78382ec5bec9689d6f4ac","67881ba5e3ec9746193075b020876fa94a1437fd78b2e0ad6351d11e1062941a","42b12d23ae19258081d46664270067061748dc3450a6587ce0f0998cdfba28b8","f2737333b293ff2d42ff17998b1dfc155d40463e2f05bf3e5698bfdf134c6f96","fa866d4dba8ff3030ed22ee15335d5bf5e7c20bd870142574ff96bc42da453ee","2732846b3f2c2d4155e7fc57c144805f75d43a16f2ebc610195d7a65737c9c03","1dfb40e6629cf803267a65920a3327c3fa6a5e42b4c6fb8865cc503a5b7742a1","f35c1a8bca091f454997d35340379aca49d25346e51ab1e15126760ee2e171e4","92230275025180a19caae70b82c704d73b2de644c2b4951b72b24101a19093cf","a2b176f66f0b708241265fb3b417597c9c9d21912bbb7f5cc00d99af551c2078","50072c1e4a6b693993c69f24fe86a8b7ecc62149511ef6c7c253c195b8689822","bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","b764fa8a87290c8ce361860e2f1e7daa1fe0ae2f0878768b811f103b22a4c179","6400f3eb037b0626d9521c0e2ad8472c63e2cea6a4c6367dca4521fbe267e670","b6e3e3f9a9fe42ae2ef36fdf5e3c0dfe8bb1ed3b9c35fff068effe9a1adcfa76","b1bfc58df515cd6adb9f668381f0cf756b1dea5ff7a441217e3f1b02adcb4934","87b5c15396f3d856dc28c87697340b562421e19b32ba3561f577bea0266e04ee","beb858dcadd9d0d8b6b29b079fcbc10ae4d16e4107a20b44a3e368b40a2b8958","f1ff1256aa3dfb128fea71d59eb70333c293901d41af02a57f9a49d50d5566c9","1cd6db390decb9108f876233e988e048fa2312e9989b1dad9c1dd8f75d7ee747","11e28b9d4be52d9be02ab1ad06188ba4eef973165fb2be275a63bb78715f21e6","a05eef32267435afd51237181a9b274f093413780e27ece641be39b1007ca8ea","8eed79b20fc435cb01445e2fe2886e3d0b2fb569be2079d3e0c10d4b970f8c0f","ec04dab3c169d0a84c2be3b6c958d4377b0f13765579bb12e1f272c620462fed","291ecb0d4e9f8c9da4dec8da57dc20e5d9aadea91e3922677aa2a92b314c68e2","4bd31df4b06423ca648d2ebcb28cab4291e5f32f6fa1c32f191ea85dc20ba286","11bbb1fa863ae398559633455196eb277d4b4fe549a72053e3d357d2f8fefb70","6c1b497aeb9135ac66891d783a34dec6d4df347126ebe9c3841110f0a614e0c6","cef73ddf0336cb343be88b61a0448483029d438dd66ca21722aeabc66223bded","8cb6c8db9e27d0c6dba28bf0fcd7ef7603d0b5b2b3dce6fffc86f3827a8a00e9","d07ef5953b1499ae335c75147c658d9c037fc649544a4c85883f10eb9e5878e8","34714fae00aa0544916ade4018d18a04432db2b4b49c6cd066825ac31734eb40","5cb3b7b2b0997e451f91ab009ff2d66e7cd5f77838dc729a2e335554fa098a12","bdbe3e5d1f1f3dd035c551b6f94883212ccdbe9b3610f65f49138980e0efc0d7","eadae8542e5f360490f84d8da987529e415e265da584dd12e3e7c07a74db2fc9","9a82178f67affe7ca9c8b20035956d1ad5b25d25b42b6265820232ba16ba0768","2151db9166dfd90feaa67f0c3a07efcab39e1640f1b26abc81632d8e1bf95fcb","2f6fda81a8ee3f78205dcf8a69e6f5afd8ee577b8f423fed0a72c346509937a0","37389b1222c65e82f8e2670d586d788911f317548c3ead5c5535d2495fd08572","1ce0883eaaeea383c10e3274b4e5189915beaf4ec3f74fe609afd44d16bba02e","55a525e18db580413a78fa364a54faf071c028888d5432fcf015d229c5fafc28","9190c744aa6c9c2d69b5e283f5559a5543a201c518b2fe14ea4e3eb7e42f33e0","057ac92d0a839b0a3bd91d86b9288991ff6ac9ea72b64877464f2b12b1d117a1","528f3448c98e09174ca4186540000bf77f81fddcb587e0db9626ea825dead0ab","305af5e4e2f1f3b99d43e285d8dde8a39073dd9e40a2c5682839e7f19d66688c","5cc755647e5205f5acd69ad6fbb5bb41c150ea5ce229ab8ee34fc769ffecb7ac","aac2532c6e0b1183dd1f7d746013af0dcde78ad82879ac599f17c5563bb2f1ec","9ca2b093001037c017169b747ec9616b26b42ac9d8fd60aa2b0d9eb6b8c1cf95","5e8f7bf17b0f8382eff0d93f1ffaafc4f7fd15293b4a90edd517dca2a3ff6020","e7705224440c17c183317a861a0f1392a9c0746c3a06549c09e2d511a8c0c32a","eaccaaec4001b7c7e672f371d466e96fcbe3782cdbb7eb8ecbd132060515573f","f3eca6b9a668c7872bb132fafe6750c582771c40a66606745c2c01dbec8d4c5d","8f4e60cefea06a80cdd3a6a19fd2070910aa819fa934b58e9dc4ac726f1ff74f","325574dd9f2eb185c39a1ee5bb5bf656cd448954ca5485e0987d29574abdc699","529e1aa76e7ed000983d12eec4eca0f6d38045e9d0bc8440083d86aa4897549a","452234c0b8169349b658a4b5e2b271608879b3914fcc325735ed21b9cb88d58d","bb793c133cc27a55ba9d4b1200b3687ce0611c19599cde5d3de8f7fbc0fef8bf","98384d00d93891fe98678e784b367046cf9563d169801d9bb07f5a4e5e111400","1481128ac360e7a5fc5944efc36b7634b8e5eea8870d3e5cef6647af83f98c8c","b5b9340f337ae17e2b59afc4c70a45b698a0227a81daf16f4bdea22757d7ba74","3aec561fe42dc4beb19e50b9711580620d5b0988ca0295ad0f4060a5669ee3ba","801e735da27b1fcb22b4d79bbe1240f211889d633026cbbd1469f941245ab419","5265fd19af035a75b0ea228cdd98820babea56b2b79c75517c0158ad022ae16c","d9fdea96fc90cc8d970044bb7bbd75766899f06a6214383bbc3b95c061bdf733","b3952aed8c195a401b42a8995800b5c1ea4d9d390c1a5e3521a1a3c3653f9b71","69c63d594f437c04b4971e171b8b3eff3d926141b87c4a898cc139b39ac86666","9d1111657ab26039a6aa9e4ecf8781761d7d2d9c06a858cc5aeaba1cb1843890","dee56fc4336a6b0d2a62202944b58a9f6d6d44da4316899ce0d696db1e70b062","b7d79703a6b079433e574c48b15c09ff6b8393f5c5543d602af6015255b311a8","a1606f5fbacd567a0a959d20770235b0314dc5290b35a72423018554084555f9","a1938b18ba00cf6748e28d118ddbacf7a64ac4dea4c716b59800893ca436c891","dd583da911f7a80691b2bb8ac51812cc3ec212701b18e9eeec4c146a15c9bc09","4bf1c83a0295f179ca8448739d51a9ec666c04620e405aea6090e4a8a5448e4f","094afeea046af64e4f9d208f4c29679c6c67ada2936d5971b8d0c0c2209c7ce7","62c18f3dcd6b34927f0955db584356e0a50406c54c2907d50f230635b3ee7015","e1859a0e22638f4b1dd11f1bc1f7863276aed1f26f95f51137006267da4ffc72","0ef9deaaa2e3966b75fa47589adbc1e09508038a01f7e269edb75ca651f99007","b45e83ce8c638ffc41ca1320a0df7df2348e1b542ccf97a11009b632fe3f55f7","1e25723a824bf34765354db205b0d80711a26398787c68d5ef396b6f2590c0de","456925082a6ed3743051b5f43a9d1d0ef3cfab6011c7127b1a1b07ec05103a6f","b540b013865f607936aa93f33f77b24fc2a0e226d9822d6f792123709d1327bc","a4d23c6939d0d7d6a4c7ea1e50450acfc9cd84b222a680f9b68045600ac82d68","08c16959ec8837f09a87ce55794eb7738cd9e45aeb57150ff4e194a0b921507c","3e487f6bec4dc003a15857317a60984f7e2d219f4dd161dd2648da688a32b61b","3f8cac8a68a1705d91cde45ee7c6e7bccdc1cf6c21584de2c704911422fb1e12","67edc242276dadbbbc28207e2664389e3841e93ac6f1ad7a0176ebe3210c9796","e79425934516e5f649b676e3c79a008575ed9a2b5e3dc52158efc17850cac713","29ac796ed582df2596b941dba22e926bc45ba3ad193dabc9bed61a16ac0f880e","67212984c3cae97f9106024fa0a6c68def468f25c8fe8ce8ca8345c6757d0bff","bf302a4dd151f9b6d5b23717badf6a8c9db55aeb46caaab1b218584c620d2731","267955641d808610f54ba868c23969c1f9b0ab5625dbb009ab118a48cd2e0ac1","1bbdcd1d35b298423310d57b3505ba435e6210a73ea7956f1c691b542c9ba0f8","0b9166a5a7de6e46cf3a998919fb5c4d9481e00e224f774c3ab4304391f25432","6a0734acf6d43bcda7138e9d4ba1699b8aac0f429ee2376cd6a73fdb2e0bf5be","d6ef5a0d31e83a8dbf0536a902a39f52c3b1effd5785f27c78446798d2647735","33046905a0d24a8c7f090a507398345cd481d88421417d7195b8350ddc9f2a9c","2df33dc903a5ba6c6c87aaa4b298f7f8ca9c97f8da584ad17f8e77fea8ecfc73","06831ab18de121f25e834350bb2054482e3426a2d4ef52557a0dd9cbcb220785","50f356b1512b533e8016c61b0a2dee79a2d80dfb8acde7cf4a1c2a38b1c1a092","d902a0ee0d97330e3b2f30ac8b60a2a488086bf3cd53b2ef66f8f524d8d439c8","3383b72797fe7137d9b36f758ea8e577243eaa58c6d02b694506b2098fbdcd14","b813574ffd805424cfa47afe92c610260a52c92c1eb83139b55b5b6bf8e3c1c6","35596efcef6f1987b72f8ee498da18994f181027ce33895fb8fca923fd732e18",{"version":"8ae5f77a947f3af79012421d027e8ccfdfc4b004eb753e77c26845d4a1907de4","affectsGlobalScope":true},"d75f91913d91912ae4614c67bdd571d83ec96cbd48f0c09080276cc9735847cb","bead864cf78c8114985dfe22b5c845626ae18780b496e1b1606037460fed4f4c","465f2f07e504612e41ff8512d092b81eee67d9e9129e8cd80a1e2372bdb3a8cb","c62e1ffe48fd382d3168c57201f5aa103f6f712badb8f1721ae8f4714ca5e79d","627ef20fe381a2df1a4d46f73825af7383a02c34de6e6f4b09e884281af12fe2","0409a0fcd94704a3209c7e9e777ee686c38e2af735548d629b6ecad7e76fa1a5","fd6ac613fc0fa02304f6de03d33c97c2c4333811b4e9735951137dc8e7902a90","7da34b64d04b1b17c96fd642090ba4f11b68b7d4850e5c0420dedc890d40b70c","b4512b5346597e3ce452cef2eb23e4df7db8d387893ce3bd87cf7825b96bca91","f6695bdab228ea4eba58c191e5e25a6cd6912bb2fc1b56f19352a598454be429","d1b756347f48dcb6af5d119817c298d25bccbca1d99c317bad8a1c0924c98389","dfcf6400dbd3005f4395a5a77f2736e401ffc61af05528dc139b267fcb07fc4c","9b50ee091a0f3aa69aa51ab09233b0e834772a5e537dd1c85fc9963256d82d17","46acc28f4b194c3cc7d1a7d79310ea91925c449cb272aa820628a8609dd0a447","78647004e18e4c16b8a2e8345fca9267573d1c5a29e11ddfee71858fd077ef6e","0804044cd0488cb7212ddbc1d0f8e1a5bd32970335dbfc613052304a1b0318f9","b725acb041d2a18fde8f46c48a1408418489c4aa222f559b1ef47bf267cb4be0","85084ae98c1d319e38ef99b1216d3372a9afd7a368022c01c3351b339d52cb58","898ec2410fae172e0a9416448b0838bed286322a5c0c8959e8e39400cd4c5697","692345a43bac37c507fa7065c554258435ab821bbe4fb44b513a70063e932b45","62dffb621f2ad8a13b6333fbdb4bfc920554b17788a5a3b7a992005c4af95ade","c1c8ccb14c76efb31ff84038ec7833a5715ba23e681b158b3c83cc012b8c3cfa","18e6ed3c86de189231cf81b9ff2652d2af7309ae7df74a88a788629c4d3e2b03","522edc786ed48304671b935cf7d3ed63acc6636ab9888c6e130b97a6aea92b46","a9607a8f1ce7582dbeebc0816897925bf9b307cc05235e582b272a48364f8aa0","5b9c46dc4452a581c3c258232933b8139cef89e44568eff6192440f462fa31ca","93d913df60b5b895aa5fab26ce7b65dda14cdae7f10f049a8c65334088a2e00f","6758f7b72fa4d38f4f4b865516d3d031795c947a45cc24f2cfba43c91446d678","1fefab6dc739d33b7cb3fd08cd9d35dd279fcd7746965e200500b1a44d32db9e","997b94a03707d35abe497e427bc26b403a538838c3a82f2be71d85109b88e32b","bdf7abbd7df4f29b3e0728684c790e80590b69d92ed8d3bf8e66d4bd713941fe","8decb32fc5d44b403b46c3bb4741188df4fbc3c66d6c65669000c5c9cd506523","4beaf337ee755b8c6115ff8a17e22ceab986b588722a52c776b8834af64e0f38","c26dd198f2793bbdcc55103823a2767d6223a7fdb92486c18b86deaf63208354","93551b302a808f226f0846ad8012354f2d53d6dedc33b540d6ca69836781a574","040cb635dff5fc934413fa211d3a982122bf0e46acae9f7a369c61811f277047","778b684ebc6b006fcffeab77d25b34bf6e400100e0ec0c76056e165c6399ab05","285d50a08440314f7aea3246a5e15acbc38e2867ff07d21ef457ae8cb4e8a31f","6b590fc57c7619b9b80bbf5a86add80a4772b9ea1216213c7d7cf46264d34dd0","be8f369f8d7e887eab87a3e4e41f1afcf61bf06056801383152aa83bda1f6a72","352bfb5f3a9d8a9c2464ad2dc0b2dc56a8212650a541fb550739c286dd341de1","ebef680e3597d7b3c8a9fc9e5581eb078461fa1406ded8d9859353dd6286eff2","9a3a69ddf81eb8e4867373e5c86196e5df49ae408abaff7872118e4ad52b3637","764150c107451d2fd5b6de305cff0a9dcecf799e08e6f14b5a6748724db46d8a","b04cf223c338c09285010f5308b980ee6d8bfa203824ed2537516f15e92e8c43","4b387f208d1e468193a45a51005b1ed5b666010fc22a15dc1baf4234078b636e","70441eda704feffd132be0c1541f2c7f6bbaafce25cb9b54b181e26af3068e79","d1addb12403afea87a1603121396261a45190886c486c88e1a5d456be17c2049","1e50bda67542964dbb2cfb21809f9976be97b2f79a4b6f8124463d42c95a704c","ea4b5d319625203a5a96897b057fddf6017d0f9a902c16060466fe69cc007243","a186fde3b1dde9642dda936e23a21cb73428340eb817e62f4442bb0fca6fa351","985ac70f005fb77a2bc0ed4f2c80d55919ded6a9b03d00d94aab75205b0778ec","ab01d8fcb89fae8eda22075153053fefac69f7d9571a389632099e7a53f1922d","bac0ec1f4c61abc7c54ccebb0f739acb0cdbc22b1b19c91854dc142019492961","566b0806f9016fa067b7fecf3951fcc295c30127e5141223393bde16ad04aa4a","8e801abfeda45b1b93e599750a0a8d25074d30d4cc01e3563e56c0ff70edeb68","902997f91b09620835afd88e292eb217fbd55d01706b82b9a014ff408f357559","a3727a926e697919fb59407938bd8573964b3bf543413b685996a47df5645863","83f36c0792d352f641a213ee547d21ea02084a148355aa26b6ef82c4f61c1280","dce7d69c17a438554c11bbf930dec2bee5b62184c0494d74da336daee088ab69","1e8f2cda9735002728017933c54ccea7ebee94b9c68a59a4aac1c9a58aa7da7d","e327a2b222cf9e5c93d7c1ed6468ece2e7b9d738e5da04897f1a99f49d42cca1","65165246b59654ec4e1501dd87927a0ef95d57359709e00e95d1154ad8443bc7","f1bacba19e2fa2eb26c499e36b5ab93d6764f2dba44be3816f12d2bc9ac9a35b","bce38da5fd851520d0cb4d1e6c3c04968cec2faa674ed321c118e97e59872edc","3398f46037f21fb6c33560ceca257259bd6d2ea03737179b61ea9e17cbe07455","6e14fc6c27cb2cb203fe1727bb3a923588f0be8c2604673ad9f879182548daca","12b9bcf8395d33837f301a8e6d545a24dfff80db9e32f8e8e6cf4b11671bb442","04295cc38689e32a4ea194c954ea6604e6afb6f1c102104f74737cb8cf744422","7418f434c136734b23f634e711cf44613ca4c74e63a5ae7429acaee46c7024c8","27d40290b7caba1c04468f2b53cf7112f247f8acdd7c20589cd7decf9f762ad0","2608b8b83639baf3f07316df29202eead703102f1a7e32f74a1b18cf1eee54b5","c93657567a39bd589effe89e863aaadbc339675fca6805ae4d97eafbcce0a05d","909d5db5b3b19f03dfb4a8f1d00cf41d2f679857c28775faf1f10794cbbe9db9","e4504bffce13574bab83ab900b843590d85a0fd38faab7eff83d84ec55de4aff","8ab707f3c833fc1e8a51106b8746c8bc0ce125083ea6200ad881625ae35ce11e","730ddc2386276ac66312edbcc60853fedbb1608a99cb0b1ff82ebf26911dba1f","c1b3fa201aa037110c43c05ea97800eb66fea3f2ecc5f07c6fd47f2b6b5b21d2","636b44188dc6eb326fd566085e6c1c6035b71f839d62c343c299a35888c6f0a9","3b2105bf9823b53c269cabb38011c5a71360c8daabc618fec03102c9514d230c","f96e63eb56e736304c3aef6c745b9fe93db235ddd1fec10b45319c479de1a432","acb4f3cee79f38ceba975e7ee3114eb5cd96ccc02742b0a4c7478b4619f87cd6","cfc85d17c1493b6217bad9052a8edc332d1fde81a919228edab33c14aa762939","eebda441c4486c26de7a8a7343ebbc361d2b0109abff34c2471e45e34a93020a","727b4b8eb62dd98fa4e3a0937172c1a0041eb715b9071c3de96dad597deddcab","708e2a347a1b9868ccdb48f3e43647c6eccec47b8591b220afcafc9e7eeb3784","6bb598e2d45a170f302f113a5b68e518c8d7661ae3b59baf076be9120afa4813","c28e058db8fed2c81d324546f53d2a7aaefff380cbe70f924276dbad89acd7d1","89d029475445d677c18cf9a8c75751325616d353925681385da49aeef9260ab7","826a98cb79deab45ccc4e5a8b90fa64510b2169781a7cbb83c4a0a8867f4cc58","618189f94a473b7fdc5cb5ba8b94d146a0d58834cd77cd24d56995f41643ccd5","1645dc6f3dd9a3af97eb5a6a4c794f5b1404cab015832eba67e3882a8198ec27","3642861c448ff35e1d7cf53e690bc6de07d8179bc870d4f46ed7c92a25700eeb","91b0965538a5eaafa8c09cf9f62b46d6125aa1b3c0e0629dce871f5f41413f90","2978e33a00b4b5fb98337c5e473ab7337030b2f69d1480eccef0290814af0d51","ba71e9777cb5460e3278f0934fd6354041cb25853feca542312807ce1f18e611","608dbaf8c8bb64f4024013e73d7107c16dba4664999a8c6e58f3e71545e48f66","61937cefd7f4d6fa76013d33d5a3c5f9b0fc382e90da34790764a0d17d6277fb","af7db74826f455bfef6a55a188eb6659fd85fdc16f720a89a515c48724ee4c42","d6ce98a960f1b99a72de771fb0ba773cb202c656b8483f22d47d01d68f59ea86","2a47dc4a362214f31689870f809c7d62024afb4297a37b22cb86f679c4d04088","42d907ac511459d7c4828ee4f3f81cc331a08dc98d7b3cb98e3ff5797c095d2e","63d010bff70619e0cdf7900e954a7e188d3175461182f887b869c312a77ecfbd","1452816d619e636de512ca98546aafb9a48382d570af1473f0432a9178c4b1ff","9e3e3932fe16b9288ec8c948048aef4edf1295b09a5412630d63f4a42265370e","8bdba132259883bac06056f7bacd29a4dcf07e3f14ce89edb022fe9b78dcf9b3","5a5406107d9949d83e1225273bcee1f559bb5588942907d923165d83251a0e37","ca0ca4ca5ad4772161ee2a99741d616fea780d777549ba9f05f4a24493ab44e1","e7ee7be996db0d7cce41a85e4cae3a5fc86cf26501ad94e0a20f8b6c1c55b2d4","72263ae386d6a49392a03bde2f88660625da1eca5df8d95120d8ccf507483d20","b498375d015f01585269588b6221008aae6f0c0dc53ead8796ace64bdfcf62ea","c37aa3657fa4d1e7d22565ae609b1370c6b92bafb8c92b914403d45f0e610ddc","34534c0ead52cc753bdfdd486430ef67f615ace54a4c0e5a3652b4116af84d6d","a848339c272ab23e686b5d0b81297e3a7116ba7d27589c66ca1f4ebcd65e7f19","566315d39e476ca9e7fd0b1908074cb2a5ff9246cc3ed7da64cde5ad30f7e0b1","d53426ee3b9f2f4f8a2705ee72112fe3f356906f84ad4e94726169ae98fc67c6","9c8125fc43f5fc74a40240438d849d56ec7e5eb68961ce8af70a930ffb0580b3","d8d07d4c2cb69335afe919f64e519bd3972d8265ba1a073e4e7a2f1a0ddbe2af","fd3d0e2bc2829d94b6ea717f0217cc1fbe7f7e5c3e6dc20554d8682d3850ad72","e71863e8db54c3584405caa0331efbf08ab6db455b192e95ceb44a2905eb9124","a229c67e3306551dbd0310b21712247ffed4e881c7a834a19d62a149c8cbd3d1","83b5f5f5bdbf7f37b8ffc003abf6afee35a318871c990ad4d69d822f38d77840","634e56b085407249a5c67e6520fd7de77060f28c61c901e2e4d23784c204596f","2b913fdc511103566845e87443ba097601c6c338485faac13fd153fce83b4931","b86ef9f4a38b5f28352d7b2a9f9a64eb0097cb01dadb9f6e57843b143c2e04fe","23ad184b6ec52e8c1eeee56ffb3ee922481330716025ab133fe1f0425bddcd78","6eeb6d606b6732d26e0e97803684e9e989dd7ea4bc486dac0284f47743a2989b","6c468c7c33e01a672c907bb52fa16a29a930897b4883c895eaceb1774aa3e574","f753928cdc4391702905204cb54c5335545c786311c5f52ed9dade3f55040faf","5b9b98f7e8368c0d1890d2a8602b2c4b1b17e1d796aada894c6510fc12df3130","dafdf0b0ccb55128f83fe0acaddadfb5d223887a7e8d59a0623860a68b1f59a7","c2f53ed16441846ceae0301cedcb20b1996123cf242682a31df63ab35b87d983","fd77d9bad26c739ff2d8e9535f2bf2773bc340eb2e70c76a8d59e1b10d6543be","37dfcf681f7dfa16001120800a5559d418c84bba05f74806169a953930ca1108","79d11430b9f2221d493c795b35cf48f59243eb409f9f700bb7a21e62e1b042f0","bd02feceabd8455fae60013855ddfb8976adb97303d8d143b9fbecf8ba0844d4","800f43c93f6a536e168df302a7c6b22939a0162539fc0e88489f2521f2f92c1f","8d071caad80707dc1853c718e6372349df8fdd4790ac57550cb243545ac91806","7b8f4bcf71399d7bbad22014a4eeb382841c61ad3aa079943ed287598e70485e","fc5115956fdfddcf86a30a1ba0cc02927cf7035a2bdc3adbc8766b79242e0eb4","6bc0e969085d2ad0696627de23af748de2afae059856a22fa0465036bcf2b6c9","8df723a2830a0ddeab63edecd8430684b2a156fbd0458199e0e6a67124beed8b","c7f6351ac45abfc84332fd2255e4fc9f40ab81be67418f95653c5b635f06489c","ff1f7ea08241096cff8b3116afcc8babfaa1b9e319df043cb4a0c44af8e08034","b203573913f773b35d92a3a499a7873038149a35e0b23c7e189d7590b27f6da0","1c465dcd7e295ca87621cfc722410abc34d2fb38133cc4d39a88182e7c1776f4","1ff6207c7c85da59a11b2a1ef4cfa88347b52f117faa4bdbd6e6bdb60d634719","74f9f15dd600e9737bffdc26343d74b2d17adb91536fe4e29a9d110295136334","c3789c53874f2aba5a7c21e1ac1e467f95522ba5a0c8f9c8b8c519efa7aec51b","ac2b859d346b9c79548810c0b5821b05a6a766db90bed7416f7ec0cc6bbbd3bc","68408a0a4000e2d3da6984c995252646d3ce12a0d593e97c12b7f4fd0ee22c86","8da99e8ca9c8fced530f92f1f2faba413b961735ef92da80c577f981b767e9a6","6e435451aa68a09910fa0614230388c54d8fb90bf8a212432c63fe97b5fbdd22","5679adff758cff74c29356edb81be06914d582569bd183a6fa97262ede66ebed","eab879e68089c36bb373977a6e9338fa19a607f5581d30f2e5252d9333590922","54f556570c3432145b4b37c21b0213d77dae9ad1ea9cb193d991c061a5279b82","2fac6a45f688a1be6081e321a9ca7886923ecfc3a9083959485567ffc38b1dea","2f5ff35a589b58b99c7d787c696155959a4057dd3c29db745ab2c0f88cc2e03a","d7863230f391379b9286d46393b4b7d2a4d941f961187102f90be7f2b044daac","b8bbadecf2b1ca66f8ab691aed9910b37b3d3532ac3de360ea0141630d7701a2","5fc9e50135f4163989ce74b83b68a5ee44d151f04ec44078adbe913c8dad694e","321c7e382d36a823c6bf9ecb6cc8a4e5bf60265b4b37c86fdfcc85973ede2c1d","34a80ad568a06a539e43bde102bed1fcb8bec196811caa9abc3a0cf44a95fdde","faf4a3ee383cc6bb81207d4f8730e6d90ac38a010ded7583e4ba1bab1cf57b5e","2fc5b4b281cccfd2ed90d0384b2fc521dff07929703adc5d373c7ecfbe1d85e6","85561bddf43096a73eb5f16e829bb4beee1906b56027dc4a9dfdc5356f36e864","4f52c5d04464feecaf4e55db0a0cc42d38b84a502afb54082ed6c2c8352c90d5","3a2a7e7343d20346af5b944a8d39d1756809c86f05bd95c4f62d53fb27a14a73","30f861484a42eaa6830f91343556e401e0c9399b851f3a017cef5ffa233e8b98","af6cb3ec64660a2456997a8c5069e6e344aedd526418d727266807663f21df9f","b2e5733fe24d67d3a10bf0622cf5c18f099688d0e83eeffbff63ee7f323aa13c","e243dd83e46a4fd3614589b4589042576f86d4748866b9423c77dee1318847c0","01c647e587a25ca60be74675a250f685c646c0b36c4bfc1b5db9e55cd2a19593","bceb3703983ccb7177c4f8f21ed775c0ae7672559c90059a7814b04065ae04bc","645de8c678f8f5ea6f52b1636c900c3084debfbeec39595b269bb888481b6451","a0cf73046c0cbced0a194418eb5425fe8411221be669eda86673ea614f957fc5","862c4e5b58ec0f1bdc47454a69dd6d190d25b4625ed16622a395fa3f8ff22751","56bac357cefcfd19e72e66bd6984bb39adeef3d513f6c5f396d97040b5a5dd4b","2879892d07d8b20f92c025c73f2aede790f931b26cbf6a3e4c189b6deabf5322","702caf4b27b5454a3305f20cea27aaae0c5673b91df4936a8559f3112e4d68b2","0456f6abe968e44aa231527842e90fc493ccf0086c044685cb66fc9d307d5767","f72df3c4dc2fe8a3b939427b555b31f20678886d856e224cb070afc785a3ea2d","07189c6298f1b1a9f590baa5cf542937e44abc98ef7111a719262893ade1510f","e1a3930856d8f6a01240c81768c0219e4b1021f92e505f67b95c45fd7f11795c","5f019a25680faf51002b5ccf104dd61a93f95cc6821ed45fe905f7ffd6d44335","5881743bcc06d8169dfbbb238422a9d75d3930b09b59e099d0aa4ebdfee7dc0c","d962ff332884aa5af93c4601189c35747b6724765a3cd697242b5ef1e02cef70","e5af1a573638d8532157d7c69bffe9aa3551ae84db39d02d255efbce2207b342","e3d196421e621fa84174dd79502e01d2e00d67e23362a8c530f7e05cd68e8ea1","f5e8dd756948f1c077b3ecccbdc1f95aa5a5edf4f58dd079667d4611814666e0","214cbcbd70d482acbe40ed45aaa8383e98c86a86706afa85cdddc9719ac548ab","73f84a43613929bfe3efdbc61d2dc1ae39e5a32c35795f7806cf0a60c83e60a0","6957a2d31554536d37e96402c117b2429f2e9baee89f26b87caace936ca2ac37","bad9e7bf88505357ad4e64ec0a87b7abfdc783fbba6d3c257d2eee2493703304","c90c20f613309279aa05bcb314e75d762538bdb1e5bb1ace75d1c1ef2a979637","923b19f9e0d134113ed5b15f48a046db1afbab4e34abad9993ba873b9e18dc7e","3c4ab379d2e80517f92e24479d0161f58fab9ec7b2b508d2f243ca765aca0050","e18dd77323af9b0e4f7b8a4de60688b08c157814a59383dda5b9dacce2230f46","ae76106be2fe3281cd7e96b9dc9e12b4583e61e31bae624656ec0feeaf75371f","afd70a57b376a4e926abd4c1c8e9310fe96c969d5a0197ffcb565d001676a9f6","d7538da5cadf8bd654a7725666b4382a9ae6f9aed039098a36ee878ca6a3bec8","8d48652a8cb3ab8370fb264ba855d9f5f232553a3d9f5bd25a88b290e3e23c10","6cd4ec90f2ed6e15bd4e940d5ca7aa38cd570d1cb1d0b9952624e5c8ddb4dba4","a7f1293a7400026dc420559629b54c8493343200ff36d92a8d78502a9282a35b","d2f3f85583a57ad1987ee9f6b8b174499e9c5d7115e37dc9a62a2dcb9b054d1e","7ff52e014e5f1f653a7c3d0f5f323e8e7daf5db30abfee1380b78dada4ec2da9","be6b8d983bd7d37162db454ea038196367a799156c3caa33927494bc99d885d0","b343cbbbeae17e5c0ac05bab9dd4e08c57a1559cd31659d7e152bd122ae646d7","42c67685ee5027789a51538b046b3a7a11a2b19705ebc63ce3f0404b8e9fb0f9","693104e41fb5dc31f325c518cce5eef5513d91a650148fcdecc064d137f8581d","c54d981103b6a51e2e7f52821795ea2f8a2e08093cbeeec3016613697df11d87","9f1a99a5145d55e9543b58d51eef81ed14318575355f554c76c97ec043d31131","2829c78953b67be242428630b35cbae50af7dd9c9b24ef5c467986a1f14d94cb","da3eab33856ccf1f35e8e9ded34994f2b4a23422f1e0e99f38805f66d4231a3b","43276dfec18eb7175615c6327a4ee01a116de68e37cebb56da1dd742225d3ac9","bc6e29688d6a2cae05887ddbb04aca69aff1e5102ed1074671445bcca1c881d3","51718633ad06a6d05d68a9ac009d49e97b84d980ed06b1cd04f0b40398310d43","ff90a6bc7812f609903f41b98c60f3edc2d593483fdeb9bed20cb93e6527a777","7da854941074e76cd1ed6f23c7ae615e931589f9cd3ef919ce832f47d666ab6d","2c6dafeffbb2afc2c681099fea24af5b76c43553d40867e25efe097ed4c78965","64135cfd2a693174828c8e842198f5e6854e6862df1ea685d62bc1a20fde9006","8c525341425df5d0863a79895b37ec46d306f98d856f6094b52c87c55a77fd31","dc8a332007798357766fb7131b180bbcd917b5cd98916d827d9a05edb9260e0b","831444604ca9fbb1f144fb399b92e3de5ce9d6c4c651f061fa5e34f72e29197f","f5831fcfbcf7f09591af1e5dec357cacf57b7e1259267a4ae5769b7f83f8a441","aae56a55145c92171dbe7280fd6c0ae4c286b2933b4b0ea56d398f6abd82f454","2b8d26d51897913d32cca6dfcbf2c509e35f77415e50a93466d560cf42ef703e","4fb248f0a9fed6d8658e6bdd6c1422b1a7fd9b27cf30bd3b1a5a26fe4d7d8963","d51176c3c6362a0f9a59184c71f3b8d8471b6a6a4060258c4264722fc5a11463","a2e88c1cb313192e2e5142e8898dd35b39a4f30d272cb07577787510df606bda","32b457a43b19f02c0fa6b92ed3171e2052cdd0eb2819fddb60b7324d4bc3b406","e172920ce3b5f5d4ba43ae4a4a2c6a61ea5960f267e5d25cc84dc12527005f6b","0e8785bc79cbfc14a2c4a001e272ff0ec909ec94564705e85664db9492265e1b","20c8eca485f3f73c9d5855a1c99029f2907846b88d0ec81dcc11d6abc20f5653","25c8897df13b2f74c1c3e68c3e8d1f22bd7adadbb0ffa6e48e14e09045694ff5","253db8a1162220c88e504d2e31af9a9afe802a498a8b4920ae5b8751bbbc7bbb","df35bc4ff5f2fa4cddd5d499477c595ea76644bd03150922e0c20184ce1f76ec","d8c33684d5af091b42e5e4fac2654ae0e4fb707ecd56d2b5ea954f1754dbff36","07d5c61850d955ff344ccacc4c35a1cc1b534ef92201da4d555e3cae26ca994c","19ba4067fc331691fc5af2aff7dfcf39a0b6d50b5bda255e3c6682b32983e5d5","a22fb21723983b4e2edf3d34893256c8b6075f77254f394048541f5a4eb25d15","969948f990cbb4f0b594d8b3e66bc37d04f4896314afb888e507ae0fb9aaac51","8b9782193fd21acd035ca67a18e607ca68e8345d5931962ff5862d89fae1965e","107c2243004cd47d8a63b15b42644343db310383b8008237f7563710116589e2","9a3a28ed970a073f6f87f9827839c2d06ecdd05f45e07ce30899f72ca968b46a","08107d403a7a4235fd239bd1185800d10f646ea07a71b119c2252713d466920e","175707c3c7618f8e3ea64636dc591ed6892328fa430149d3ad414018751da8f6","4b086cd2bf1f7fdac4fbbe9acb863b29040fd8ac4188c5d7a5b3c95bafa1b380","2a7ef8d34c40308dc2a2b05a78b8ee602f205e82e4eac3f44f1959e95bece679","022d05125afe3135d923892f13d1b176003560edd270900f52957a07e1efeab2","e0fa1fa96fdf10e88c8a23aa4eb2566232ac5f8d93961815158a7c6b22d7efaa","0a6a304a71bc56611b60ad013e583564b6056b8265961123d77fd65fd8b74061","63bba6da188f796caf21284a73dab06f85bd17042bd5ad49c0ec81451fdb0f5a","5f2a79b58c58371b68d6f3a3a225e0804c6ce517c423c8a1efec234765de7586","358a84f9e1f6680ffddb329a580be5f932c7ff10ced8d60f43904f66dddebaa3","b60efbac98231283107121b5b3327f56a6632c2d14d7616920bc309a4f6d4bc3","0e58e6f3fa554921c7950ff344d6c299caf9260e4c78bf7c699a6b5a6d02e6bc","3eb80f1addaca2a298abd6186a2cfe98567d88635f334a0f2415438ec5f2d3b7","1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","8d5af927098c40f41f315552e7ff9ee9376b26fc03e83421a0cf2d93907ea346","c993b44ec48e09bf9e9b512941379656f9090ddf81f7ab61b4d8a6cdbe7ec409","54f323b0c25677fcd7dbb6541667f131e17bf49d48b6efdfed72ae71722fe8f5","7668c31fc1a0d6c5ee0ae1048d41f7232a56fbe18367929f78bd0c77303af11e","8b41773894ca3ba064857d72a6cbd669b299e47915c3b97cbc2a613735cbf35b","badddb55fb1a8186abb7d4b972820f9e5763916e59e9567a847d0237ba0f72d7","74689440172e6a26a40b93a21ca3f263e2d06bada97b270a884737f921e7818f","9c3ded425a22114083d56daa858d27b46bc1b059aeb023f504574312ab1439ac","08f50b290537a8bea3a96920b5d5664d4cd23472161af28c8bcdc5091250c3ce","c4d0d823f114af573cdd62f5724648cb9df7a7ca1f8473ebe65b7d7df1789422","e16aa5f3e598ad86a044934071f16729c0f95fd77794f0ada7a88faa2f66c185","098148c34c5cef91a12c622fadf8d19a7f513206d3dc61fc31af13fb361d99e9","4130eea8635f6d6bc82a8a9560b8064c163b1029d3efa39815fb53c4aa51c145","f1c957e436f37c6bd81fd6bc6a13eb1bf7a9ad5f297a167db0e96415f621ed66","98144631dc436418a7b927607618136353a32f4ccc420b76358a730310bbcc8a","026447d4bf29241ac992589ec620a86b13c76bdfcb1ff8dcc7e26f0eb2d0d210","12f79c131043198b4d0f789df3cc4b90d5cc00dc0c64afbe9e6965f4a55b3d61","fa890a742e523ead1ac2d8738c29c843d2a1acaa98da02a7667fe00d177aa196","b99faf232d2c47ddfdfa086a4bb0665bcb25e3a3989498d467caaa79200afb06","21e4a665ab9901d7a9f42aa585fc3bfba8ef4d090640a1e412669a0bb392edb2","e7d94b0ae7d41c1bd5f1aa4c2bd62676af83e1fe743316bf82bb32ec1be11421","aaf88ec377baa9cf35177eab96b5db57bcfdc5bbe34bf38b1805d883f6b2cfa4","d4b211bb230daef2a02fb8952c1b21730d4d14d70baba4f04c5efce000205ea7","8eeb941ef7939f9f0180fafe779c7fa9e1049b5716a654fc25463fbf472d3dc9","80e2b75b44778105663dee124d241ba133250df92d3b5760784ef9683c622c1f","e23514abb70d5803377e5367af5a9554b15529d97b658930335b195f9d5753b2","b5af0716932f268f2a4a41420d7ba9fdbc037e1bb406aa57caa7616b173422c6","af67cf7922d64c7e1cc0a0c327191d97ef6e1d54f7f1661a06e7225fa8b35e48","67ae5eaf9ef6ed32a30aced05943e9f83df215d62f80076f7cce3a55d08c8722","8bf4808d0cbdfee342649aaa6744ccdb7f3b98c127985024474f961e3a96d038","27e56c281e88ef3107c9ce67f02bdcfba297804d3d14006a3e3d59f45a3f1d9a","42d00c41e9cffbb3cfbad77417055030f952fe8d7dbd8f646fd0005153b6e821","ecebc4355edf1384d191afa1c0c4ccacadb199ab55c90c9c450720425e975fc5","77ff7b7d3bef88309b2c6b48e2fcdb7db8000b57f7f627b9481b014ef2db7581","b8d5fc4baf94f4aaf437c2505b751083c58983a126fa712d34ac5e4e7d064ee1","8f3a98972a1f230e69a9c11e2b78ead1761bcba0e6cd7ba029e1e57cb5f89eb8","f681b47b5e0275d8a2fe219e40d2c80fdac5c6f865af6fc61df0f15c59c6c9ee","17bec14562208b93665ecee566ecb99baf6ca82eeb92ab1eb9e3442aafb26a99","fb00be4532eaf1800d8a2a625a8843f5d8f122990d2bedd72ebeb90a555f8cd8","374ddae0cfbf334836cfbaf71ec0ab9c16e677306d31f6e843e428119a90dce7","688e6406967d02af975bd78a3015d9ea0d1d3bad93d62df0329bab69cd278f97","d8fd376b0555bd256ee497d88cfad88d6edce66b0136c57ac4e06c2c1226b48f","ff7dffb4be5f70292b1f549465c45ce1d458a01d2759f3dd868e3332238fc196","86c34259aea465046e20934622b636b353becb8039a4dca2f8bfa4d464c7c775","78132a6534235c8722a8379a56908419aeaf1600571a8242f6e6da9a0155209d","af9718b28820fe36a656942eae4b2c168d941365a617c7de32bd8266932d2e36","e8938c8d0fe5db23a94c59c3692123f412b448055b384cd75c5bd4154f751804","fcc86c5d15efa5071b246959d96b0014ca03166c4bc39bfc2c6438efb0146fef","eb76861bb142f7c50a48d0dbac8de02f7dfbe2a0c70120eb9e4bfc323416587a","39d2b1cb54393286008cc6e0abfef5355a90db0c82699e0539940c3f8520a571","b3fa01d3b343a9030cb5db64e92ae8f7c080d112ab10df2fd74749f807860941","dcf1aeb81aa85d7a1d8e18258951f8932ca5054b8328a14d57468bb1dc1f5761","2705ae1316f3fc38cc78fe19804febc29cd0bdfcf9f2f8793f2e0b5027a03ab7","5c119adc328a715876fddf2bd524f3bc70f6fb5fd4a0eb5556fc866518efb50b","f8e2b838c2608e4eaea27dd7b38287b07aab797e0f9f284517ffb1999a40f877","af749248609a54482afadefe764cfad1bf0b8b914f85811779263efd477231eb","10c691b2238b6c7986320254892c8ec4ff8ad59094faf014eb1e98b6dd22a710","86c5cf3adca2cab2ce87c4019af6b9518652429e2a5410c90437e34388dfb73a","84d0cd75d493d265d23c6e35f555e6b61493a52568d77f0cd6b6366e3aadf2e8","4b4e0536ba7ce60e1fd7d20a69606b0f9ca379d404b96d5448ecde76dcfd85f6","7557c95d603b0edac412ba0795763be8b4d8eedd091eea3833c089418cd2bc7e","9b05c1fe6957b7ffa5dfa7a0efdbeb5474287f2fc0901538d8c12cadb2dc37ac","5ceea05f226c767328c25d8f27be23be239b25f1e4006147edbc7c1f6d22a203","5cb1edcd242b32897f6991a9ed63e278d7e8b82096f3b2aeafef286d228f5c04","c4bfd8d3f107ccdfda906af71a082e4b3395a1bacdf0bf258716b072d4c3d55f","14094294073478ac05eb8324b4dbc56b31906442a5c0260b3439491a3acbb358","0859aeb3f2d267724c4d790d8abbf407848594eabea961af6286a8de73cbb456","358fef0918e52549e05f9e0b5691f7f40a2427541ea272823b41971b3339aa56","92a8868749a414f611d80c981a3e2f8cb36c0162423bb7c0ed6ff11ccec9d4d1","530b23aead4c1e998264286a7cf03ea5fd5d964035561e512966d9dc54ea11a5","503b9f1d1d217b76ede3d4fec4bb4f8a3a113c1022f47f693de4ff7bb058e550","a11fbe6195482d2427d56961e07cdadfb09926dc967629dc71631ef4875efeed","7a5829a31122d44a5d7bab52ccb0f78bbff05fc257ba7a9dc3e93e4c98fd7e9c","c85837dda158e72a5ac20be9b03e348e25452069f37a912cb92364c1a3238169","0efb52f50a1da290edf3cb7638088a44d8da50df35c966e155972223fa251052","e0d2a7019958b958ecccb8bdb3914a300aeadb1817063b8ca4b60bb6f2827eac","099e1e7fb08fd74bf6214f41fcc1fa22709096a43a927acdc6202b98a442a7a1","33202822492d7a6e36b845b4448035c625276476cb9d558493d66833e1cbd919","58d107490a995203c8179112ac6d8a323eb76333d82780b5b78c39c76f4d07d7","659fefd9546a002f9f7509a31613b7854da4b7be542eba9f62bcf611b127fd4a","6ab5d352b9a94e01fd5a2135e40db058c2cee58de76e0c49a74eeaa0dd880f5d","2724e8e18f79e1c85d80dee9c0e3b6c965dbd70387f952ac6b58b926bf79bade","9d9c330bb61dded31005ce687d6412b04dfbfed733f27b8d57a29703ab59c584","e1a1621ffe361fe0d285e06846d17050a643c20c550fda006a34b916873bdbe6","ab198c87b96ead12614b334b92499119b27bacfb20624918ad8be64b3000d2d8","559140f20a495af9fa4e288937f81523b010a79eeec84dad2bbee87dd4aa2087","6505d49ec3d1cf019d7f914f62947344818053e742a0f151549ba5704f3bf3cc","e2621cd981e4e361f88b0fe2a2463da9e9ecbb9170d2b1988d7833bdc7f56078","0965eb804af0866c00632447063788b7d2fdde1eded4868baa13128a84936e5e","fc407ef348a98257c67ffd8c377b3ea5f6ce88a0e6fa657e9cc24e866be3da22","d2cea10a69f6716f202d9c6963cee0c54ade8319fbc6343dde815918f8382c12","9a6fa82c8ba263a1ccbfbd0b76be4853e4ce80088c19a05986053d1236d43daa","771736b1b19b7ba3ff81131b4e4e3f2602affe9014bc348d055ab1f29fe8e111","a0cb8606eb67d99e44ad83f758850f9ec0f93ee41ff1438705d730ab55e2152b","10d4be4e93c6aad31c4c0596e8faa91c136fce7f844b9857c43ca2e772f29af6","b631b94a548848e50a2d73cb75d665fe501f56ed71492ba35c71588e3ecc3d24","82bdf9c5e4707f7e99d4f2aa9d0322cc7763beaa4f4aadb8975a17958a543a53","a2e59f767d7d5ba0ad1a3e163959d89329b14cb38cec4fe1a1c3f00855794933","debb3ab7b5ac10a524327fcd29a9954f0d4d3bbdb7a139e50a52cd7a2d9714bb","905938b5b97268d568b5079729896ab9d85dcc7580a7f15f312669fd324aff34","d56beda91955d2405674b64e09fa5d3b201ed523fdaa4f22106f265abe0b52a6","8814fa8398cd0c43ba36ab4b3e0cbeb684929c2ee75b6dfc17fca5779a54b312","09cfbdc7ecad1afdc03f862f6b055dce06adf42d4751469dde62bbd0bc66e4d2","6d1c39508b7cc34f216cbe7fb50f4cab696a701cc5f16f8557fa1dd92dbe22bc","0232138c115e763ca41fb2c99345f5d00b38dca6aa318f92496969ed3976ba26","7dc421746b898f625a41eef01991552dc2a736743b6896b78b2474dbafadd9e1","729f68032b902fce0e4518d639b90b3ae566f653322f6ee134fe074dde5194eb","f451bb486dbe9dca748377e54f3c6b265bab7ff92d4ada0807931d9d1eda05b3","dabab4ab3b7b0d64307a30a214aa8d84b3218a6c13b17c55adda70f3e55718b3","9c5c3add0cd1a4a2c3b148bef1000628975c30f7fecaed66b952635b17921f80","fd670008e1c0b86fca825b0870ad25726df1a3fd5e27b57d7c1cb0c30713369e","e5eb34a6d6dcbd488012f8f35d7fd747433bbedeadcc5061a7114b54265ef6c3","0cfaa3d88b15053e766547c7254bf7ad1925ee306a1e95b2d92784d4e9857e0a","bb4ccf042a5fc0a77e455b15a1d6dea6e646811797ba1bb271f45a1814d127d3","8805654981638cfceb30d0cb69d9d55e7624fd153a07934660bf39f6fe11fa7a","ffe45a0886ac155ac748f57afff2d307a24195d1365a9068805035a42fc36535","209b6ad1436a8bf2196ca677e430a8d05534e9fbbc7c049b0408ada826a658ee","c5c2d9df867da5ece1608d7e8f339f7af9c6e07b07bdb2389f979d5954ab402b","b8bdb2db25b4100161e1c2e14c949d11459b518519127fd60fdcfa0adfb148b5","751d1a0f997306f1717749c227c7d15132331fa0c944b0b9f8b6d7b94e9ed0aa","8d274b8270e6f65dbb08924820976639ffc3e2ce3762863f4726b920bfe51a86","a8afb2426aae23fc745745a06c6171cffe9eaeb6be14d8eb2e24556b68f2b87e","01f21dec5d7e2fdcf8f298e4eedac690b92ca61e741d8b642e1b96ecd24458f7","c80846bdd075b043f17ad6c0e5c9f042b96c92904bab296d5546b66a0715c5a2","512db3d42fc11be2a41f0b504025d28f4952f3dad5d6bf8c22b234cf86b1328f","18a9089b46e0de4ebc1e7d2cb9996954b92db8b00df49eee73fe0ee230f78912","13f7d75a5b0bf0e80b0a2f659d4845a80929b7483138aa7d3b7f18390cb81573","95c29bcfbacdc30a6cb53ed70ec819849d2b1a919064618667000b739748fa3c","0d8e5dab8f673629c413af62dc258bc8434502b624e4dd0ec74a6f5d78901e84","b4f40889a37d3418a4817a44eb2afe9244e8739cfbc5839988aee305cf0d0568","cadf30e71517e0bcced437a7b108e8ca6d07523a5f6a5c04ee94b73d9c74e1d3","2a1ca525d4ccfe46df2ab79badd4c1d297fe137d92ddb61f283b6ab67bf33b5d","272c8775891922a95c49a17975029ff4ff2ce8c1ce6fdf19c010b6fd4510b767","b12a9ef1c5688ed8753797bbf3eb3d178dde3d8a7e74632caf38c04d9d2df374","5ea9983857848c97e1076f184a1f66ae19d7c786fcc6ef2a7b6e432c3d5f6a55","e7818f9b49f5aad015055446fad21bcb18221d90866be6869eed9c094d895a82","9818c9ea597b096e8a25ab57e559f9aa77a0ae77e95ac7683a30114233e109e2","51853d4d3bfdd8e95f1ce82a0d7c1ec9918381f23e5c7a22e74eb4e5cab8520f","07b368fe05496c6190d450787b41f409a78650e692f909d33bebfaaaa39215ca","91eb21bd82cc331d43613634c7723068ba7daaa7447d055779568fa831e65972","f25684e86972a0268a5275aa9016965ba4f3559a0b7d17123fa42be8505a1de9","d9bb2597305abd711c1870db94603cadc5d5c104f1d7f48a66d987e44072dfe0","94608743beb1c14e145861941191ba8dd8b092fe9f952cc361386929edde5297","fde1dcc51826b1de121ca3f31a34515777369ede0d9cdee92d9f69fcebe8c080","4e1d0821975eccac0d8dd05114cc8a4af85384974b5cc36f4f794701148ca571","9382cd80f51e70c7fdd16fa8aac523300bb2c0f84bc4e68f97d3be01861f327a","b591e541ae1f473ab7156a78db4628669542899544a5d59a42a4bd496458f92e","648b01f7b1a4b0ed9ae3975354d423aa471b4e7553f6ef1603dd75dfb850bf78","3cc973ce6de3b1438b1d08c5a0b415e65334cb4093ab45288ddb06f29a0a80b1","bb487ad87083eb51dc9989d6271c49bf600945ff6878c30b0cb04eca2c69a017","7f24d392a436c24f098e5de4879f8319da3d582d3765eb8ae5445c97790094bb","323c61bc70555f8cb23aa26d69ae084bd6e00934053bc79dfdf7778671c0410b","14b2bb335421928573d218b6e0ef4d32e819743efb9ad53d537c8590eb71a9a2","e13fb28e621f669a9a710a71f352fe060a70be237fa78e659e28acd2dd3f6cb9","c53ad6e31d7d703f61512a6760525bd2a362ed9d71ab87f7149b1fe991fb179c","43b95f7d3137ed93183aeea38092eaad1a29184717b8ada87d46941d0e72a973","8cb4a0da83c7e8e6dd38fc0a35150947bdd3df3c367e913f64a4ff6bf90ab695","8ad2a2cf8cac4806b41a83d7602d74a544df79b49fc3ceb09c385505163ab57b","546979cac4ef9c08209d6c8d27845e9f951bc6b1a8ad5f0332fef8e0dd5c1842","695ebf21677adca99575db290ebaaab052cd9b67db3e58b96ea9beffa2b8520b","efa83a855d11ce8b33380473d417f2f37b551a06aaf7e3fa4f1f2ad58386ea12","e8b58fbefa86c7c46084ed86bdc3fa22350df97d30328facc63fbd9c3f42f5ea","95d3cc26a98244ac9df2be6ea562e5df482c72e4218ef0d4dd89af87022cf229","97e350f1868b36b39c7fdd0d64bd91dd48e355b452dc84de6fc4bd05196548f9","0e64fb82055afeaa4d099a6549bae27defee10cb79e47ca69c25f66fbeac42a4","49a59b64320f39788cc504f35e12f01961161f7ad92e2fb688e0173d51d2901d","f7750c9359fd236aecf8bc74e47992c17ae8596a8df28dd134e6c56b418def07","cd54e59c82e4cac94f28705937a3340add15d9f82bd6b9014745f6e47d4d7076","d4c41976704a37da423464fd9bd8cbadba63372a996107a11c919b449c1cff6f","fba20a0ee9a7515c3739f9006e2225d0371e8c87bc29f334de0cc509399c79e9","b542cc10988bd6f8d96b234974156f3a094609f66d8ea64000ff8cb4d8402779","19b8859e2fffe28d35df9074227bcd7aea54542366578863736c0ad847ba8f75","f243156e2be74a6d3cfc55c9e15df882344402d9a1089c32eaa131a43f38c718","7fc3c1b288bf173eb7c6de841002cb9e337d027c0cec0bfecfd527f2cff484aa","ab7e5d40b1a24221da3a66b6b695b345345b80a79f0a287a9e8694a6c4fbe812","7aa57dd1af7fab949ab2957a779e6d619ce7b73aa938aa7331b63035587d645e","b6ea8d8b96cffc63051a7c9e995f4e2236b37413958d6b421e8a1109d350556e","e7d30568e771aecc7b55d92186593d0b54238fa438a8d32d5e65cc5e086f2d06","03200c67d843971eff3cecac9aad1223c956a9c5517aaab15e56f84974f9cc22","8ec07cf076bcd9d7ce5965917bf7f00681f2faeda773a41929b538d425b0287c","d6503783c2ee47092c86a7244e24ebee738d98cf640bacc2a047a01d72624844","148b30bce91ec08b57b53310519a473c2146535948d2e9f66ed507b236c6d7e1","6db4629ddfd86e4a6cab3d8c37cfa9ea64558c7150cf51a85491c5595f415784","18ac0fb6ba31c2b39b750fb8508cd8bb0fe1ffa534c45af9169e96c50d02ea90","0ba6c5e2b5d570668fa700fa4989a2cf0478f9eaa6f4e068b808641d747ddd74","56fa44665cca7c25b7f88a5771c027200e5ccc32a1a4182ab15ead1b6d53c693","ae93912c15f3df75766e7c50a2d7b0d89f41560f0906dc1a70ab45d3b3f30bee","56886eab67b8aebec58790f12d701573eba1a69c4f370914a97a8b9c29049502","fea7827f32ef9ab636f46b24db0d928ea653aa8e337968b3e6a1d6371ea57de5","dd66aabbd86c4044cd215b2d2d4b2ff58dfa06997abe9940a8e92cea05289cc9","261318119ec3cb7c7994e9f6f3711d16886fe603fa88367b7c12a6fcb928b17c","32ed86a16c9ec31f803d60ce6f71cfcbe4f273887c85aef23aa2273a7b7b8450","e011accf14484d69822014b24f0d6079e83653a5ba371288a1f9cf059eb18d9a","ef48460a8c6fffef0d8aff5d6b5c02f1502b2c8d7783f4fba45b048b41b21706","89cafe13391ac478ed904d77682174cc242858d736a5e4a9d079f32a7298c075","bf9879eb8a89aa02a8608ee2322295adedcfe63b329aad3447ffef609fcd22fa","ba0f122a56cb005bf8e9d98fe54293c9da7e9c18af91603a061b5af6fab76645","6825eb4d1c8beb77e9ed6681c830326a15ebf52b171f83ffbca1b1574c90a3b0","1741975791f9be7f803a826457273094096e8bba7a50f8fa960d5ed2328cdbcc","6ec0d1c15d14d63d08ccb10d09d839bf8a724f6b4b9ed134a3ab5042c54a7721","ac393d11e2c585763ce7a8b9118ba4a809cc19f9bf6d647657d38268ed5d3b56","b61028c5e29a0691e91a03fa2c4501ea7ed27f8fa536286dc2887a39a38b6c44","a4bf154e0f9d56112713c3a7d2d60c85d667cae17e69f7869a32578881b652a8","d5f65e3a5277cbd0b2c89da26703c5879cc428da7ca816d1d1fcdfd7c0a2500e","c784a9f75a6f27cf8c43cc9a12c66d68d3beb2e7376e1babfae5ae4998ffbc4a","feb4c51948d875fdbbaa402dad77ee40cf1752b179574094b613d8ad98921ce1","51d4fca2239d818a6254ba46be06e4def3be685ec034e9255cba403d3b27a07c","b457d606cabde6ea3b0bc32c23dc0de1c84bb5cb06d9e101f7076440fc244727","859cf43771b68e589bb12c6e5cde3edcde4b530c7d324f455af2b9e61d4f4768","9faa2661daa32d2369ec31e583df91fd556f74bcbd036dab54184303dee4f311","ba2e5b6da441b8cf9baddc30520c59dc3ab47ad3674f6cb51f64e7e1f662df12","b7e91960129ba8a3c22f2402dc8d901b07a44fd11085309ba4780ea044f08323","63755cb31b18682d2891af837239ea195dcc306f6c95a4bdf39cd37962cf19b4","701af13c15ee086b3da938371f82f8c654442a8bb27d02e128b6de8e3b50faea","fc03647279912a7affdfc30afd791ba3694f9d96a002d2dd5c7b171ccecc624f","b40885a4e39fb67eb251fb009bf990f3571ccf7279dccad26c2261b4e5c8ebcd","2d0e63718a9ab15554cca1ef458a269ff938aea2ad379990a018a49e27aadf40","530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","0c46e15efeb2ff6db7c6830c801204e1048ccf0c8cc9ab1556b0b95832c9d1c9","c475aa6e8f0a20c76b5684658e0adaf7e1ba275a088ee6a5641e1f7fe9130b8a","a42db31dacd0fa00d7b13608396ca4c9a5494ae794ad142e9fb4aa6597e5ca54","4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","db6eec0bf471520d5de8037e42a77349c920061fb0eb82d7dc8917262cbf0f17","13c83c04f3cbd2da8276c6290b75f295edf309b4f907f667f1b775d5f048f47e","ca70001e8ea975754a3994379faca469a99f81d00e1ff5b95cabac5e993359aa","d6fa1d345cf72ead5f57dd2561136b7d09b774891d81822087499b41b3f04913","3bdc578841f58bfd1087e14f81394ece5efd56b953362ef100bdd5bd179cd625","2bc15addade46dc6480df2817c6761d84794c67819b81e9880ab5ce82afb1289","247d6e003639b4106281694e58aa359613b4a102b02906c277e650269eaecede","fe37c7dc4acc6be457da7c271485fcd531f619d1e0bfb7df6a47d00fca76f19c","159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","2a3e6dfb299953d5c8ba2aca69d61021bd6da24acea3d301c5fa1d6492fcb0ec","017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","cf94e5027dd533d4ee448b6076be91bc4186d70f9dc27fac3f3db58f1285d0be","74293f7ca4a5ddf3dab767560f1ac03f500d43352b62953964bf73ee8e235d3d","06921a4f3da17bed5d4bc6316658ce0ea7532658a5fc575a24aa07034c1b0d3d","90ee466f5028251945ee737787ee5e920ee447122792ad3c68243f15efa08414","34c17533b08bd962570d7bdb838fcaf5bcf7b913c903bc9241b0696a635b8115","1d567a058fe33c75604d2f973f5f10010131ab2b46cf5dddd2f7f5ee64928f07","5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","5e126f7796301203e1d1048c1e5709ff9251f872a19f5ac0ee1f375d8128ef9b","147734cfd0973548fb6ef75d1e7d2c0b56bb59aad72b280784e811d914dc47d6","d2594d95d465026ebbee361f4819dc7b3146f4a8b42091ffb5dd90f9ceb345ab","e399d54c1b272a400ed446ca35d5e43d6b820723c2e5727b188ebea261e7cc2e","123568587c36c9f2a75091d8cdf8f287193855ba5aa10797b4fc320c80920b7f","6deffa531bdb8817b363505e88d957653d0c454f42c69e31588d00102cd1a076","973551068756351486afe706b240eb4dc83678ab2d829a1c6b1a19871394fd5f","e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","9b7b0209a8841f5ffa60ccdfae26f7dc70ea4e7e446a603ef4732e84f1bb1b4f","5edc4b81a61ea5e0319b32d8f581d9643cb747cf44477b16af048f62d358c433","d47c9f84b00def208cbfdd820f8d10425ead9dbf36350d77fb55d5ef6857dabc","3bc5f767d5e0cd548c92e4623e0a7f4486889a72d2ca9cbc81df760669270dcc","20cf19c8028a7b958e9c2000281d0f4c4cd12502fef7d63b088d44647cdd607b","799780c3726407eaa2e09e709c376ec459582f6f9c41d9643f863580cecf7ff8","37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3",{"version":"52e29afa525973fc7cff28c4b6b359d91ad030d4aa198f060f813d4abcadb099","affectsGlobalScope":true},"a890cccdc380629c6cd9e9d92fff4ca69b9adddde84cc503296ada99429b5a3b","168b6da36cf7b832173d7832e017bc6c6c7b4023bf6b2de293efb991b96bca44","05b39d7219bb2f55f865bca39a3772e1c0a396ea562967929d6b666560c85617","bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","2c49c6d7da43f6d21e2ca035721c31b642ebf12a1e5e64cbf25f9e2d54723c36","5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","e1744dbace6ba2051a32da3c6b40e0fc690810a87b9ad4a1925b59f8f7157a34","ba8a615335e3dfdf0773558357f15edfff0461db9aa0aef99c6b60ebd7c40344","6921769648e4b83bb10e8fcf7011ea2d8f7de5d056daacf661648935a407376e","dd21167f276d648aa8a6d0aacd796e205d822406a51420b7d7f5aa18a6d9d6d9","3dea56c1745af2c31af0c84ecc6082044dc14cfa4d7366251e5bf91693eecd8b","eb6360635bc14b96a243bd5134e471f3ad26b0ecaf52d9d28621e443edb56e5c","3ad73b5b1d43cb8ba3975b2999396e10bf3ed015b3337876079caf07f22501d9","62a64260ea1dada7d643377c1a0ef3495363f4cca36adf7345e8566e7d7f419b","8b15e8af2fc862870418d0a082a9da2c2511b962844874cf3c2bad6b2763ca10","3d399835c3b3626e8e00fefc37868efe23dbb660cce8742486347ad29d334edd","b262699ba3cc0cae81dae0d9ff1262accf9832b2b7ee6548c626d74076bff8fe","057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","d94034601782f828aa556791279c86c37f09f7034a2ab873eefe136f77a6046b","fd25b101370ee175be080544387c4f29c137d4e23cad4de6c40c044bed6ecf99","8175f51ec284200f7bd403cb353d578e49a719e80416c18e9a12ebf2c4021b2b","e3acb4eb63b7fc659d7c2ac476140f7c85842a516b98d0e8698ba81650a1abd4","04d4c47854061cc5cefc3089f38e006375ae283c559ab2ce00763bca2e49516b","6a2146116c2fa9ca4fefa5c1d3de821462fc22e5330cda1196be15d439728c51","b30cc18b84468d3fa20ac04ca5ba9bed5a03431fc8a22bcf2c266c132baa1d3f","a54f60678f44415d01a810ca27244e04b4dde3d9b6d9492874262f1a95e56c7d","84058607d19ac1fdef225a04832d7480478808c094cbaedbceda150fa87c7e25","27abd2f2ed5aaac951b12b8332aac7970c9cf0cfd88c458f0f016228180b4293","901c640dced9243875645e850705362cb0a9a7f2eea1a82bb95ed53d162f38dd","ebb0d92294fe20f62a07925ce590a93012d6323a6c77ddce92b7743fa1e9dd20","b499f398b4405b9f073b99ad853e47a6394ae6e1b7397c5d2f19c23a4081f213","ef2cbb05dee40c0167de4e459b9da523844707ab4b3b32e40090c649ad5616e9","068a22b89ecc0bed7182e79724a3d4d3d05daacfe3b6e6d3fd2fa3d063d94f44","e70d18d1352550a028f48d74e126a919c830267b38c76ddae4dc1571476a462a","5624b09ca38ea604954f0422a9354e79ada3100305362a0da79555b3dd86f578","24830e279f5773a4108e0cbde02bdcb6c20b1d347ff1509f63eed031bf8b3190","8899fd9f8ab5ce2b3af7ba0e1a47eede6a2a30a269283cc4a934ab755d0aadaa","f10759ece76e17645f840c7136b99cf9a2159b3eabf58e3eac9904cadc22eee5","363dd28f6a218239fbd45bbcc37202ad6a9a40b533b3e208e030137fa8037b03","c6986e90cf95cf639f7f55d8ca49c7aaf0d561d47e6d70ab6879e40f73518c8d","224d293a02b7d22edb77b4ab89c0d4f63b95ecd7c0698776719f33863a77ffdc","1518707348d7bd6154e30d49487ba92d47b6bd9a32d320cd8e602b59700b5317","ede55f9bac348427d5b32a45ad7a24cc6297354289076d50c68f1692add61bce","d53a7e00791305f0bd04ea6e4d7ea9850ccc3538877f070f55308b3222f0a793","4ea5b45c6693288bb66b2007041a950a9d2fe765e376738377ba445950e927f6","7f25e826bfabe77a159a5fec52af069c13378d0a09d2712c6373ff904ba55d4b","7ffef1ed1c2bc7d9cf2fc134a7e8c68b10416cdbe8e70da8a4bd7ad5c8698d9c","63c0926fcd1c3d6d9456f73ab17a6affcdfc41f7a0fa5971428a57e9ea5cf9e0","eb524eabfa1809d54dd289374c0ce0ed4f145abb878687e4fd5e67f91d7d08a6","4ef0a17c5bcae3d68227136b562a4d54a4db18cfa058354e52a9ac167d275bbb","b748dd4ccc072a2b7194b898dc8996a2cb56bfa15ccdb60ac0d2f9eaa8e28e9d","64269ed536e2647e12239481e8287509f9ee029cbb11169793796519cc37ecd4","c06fd8688dd064796b41170733bba3dcacfaf7e711045859364f4f778263fc7b","b0a8bf71fea54a788588c181c0bffbdd2c49904075a7c9cb8c98a3106ad6aa6d","434c5a40f2d5defeede46ae03fb07ed8b8c1d65e10412abd700291b24953c578","c5a6184688526f9cf53e3c9f216beb2123165bfa1ffcbfc7b1c3a925d031abf7",{"version":"cd548f9fcd3cebe99b5ba91ae0ec61c3eae50bed9bc3cfd29d42dcfc201b68b5","affectsGlobalScope":true},"14a8ec10f9faf6e0baff58391578250a51e19d2e14abcc6fc239edb0fb4df7c5","81b0cf8cd66ae6736fd5496c5bbb9e19759713e29c9ed414b00350bd13d89d70","4992afbc8b2cb81e0053d989514a87d1e6c68cc7dedfe71f4b6e1ba35e29b77a","1810b0b14614e53075d4d1b3e6be512bde19b1ed3a287925c0d24bae8585fa1b","1c390420d6e444195fd814cb9dc2d9ca65e86eb2df9c1e14ff328098e1dc48ae","ec8b45e83323be47c740f3b573760a6f444964d19bbe20d34e3bca4b0304b3ad","ab8b86168ceb965a16e6fc39989b601c0857e1fd3fd63ff8289230163b114171","62d2f0134c9b53d00823c0731128d446defe4f2434fb84557f4697de70a62789","58991bee61cc543cdbee6836a7cfdcd30da7bcf3279befcf7c7cd53b3631e523","ad56682261a42ef9d7361cee603cac6408cfaee5d5e34e7b9e311b28535dfa20","94200029a0b15ca22eac7555fb3417a82b7213e09fe9dbb44c997fc63c3a695e","642187022280f3f607c62b1ca148c25fbf6ebb89973f00b5b141d50e4f100bf5","898f06140d379f3f727eb5f16309229ac1d66a5184d05bd504ccbf2fcf6eefab","a6bfdfb9f84da27becbb64ae356d8e9b6c81e95444a75c693aa262f9910ff3cf","a9452e81c28c642c2f095844c3473d979eba5ae89726ad52b15ea86b3e112ee2","dc4a2cf12254395c8ae3fb4c61e6fd9f7c16110be66483599f9641941416988f","82b4045609dc0918319f835de4f6cb6a931fd729602292921c443a732a6bb811","3b10140aae26eca9f0619c299921e202351c891b34e7245762e0641469864ffd","c0c0b22cefd1896b92d805556fcabda18720d24981b8cb74e08ffea1f73f96c2","ceec94a0cd2b3a121166b6bfe968a069f33974b48d9c3b45f6158e342396e6b2","49e35a90f8bd2aa4533286d7013d9c9ff4f1d9f2547188752c4a88c040e42885","3261b6d56270a3d8535f34c2fdad217cfba860d0f74f154f0a6a2031d0c8daf9","7eca5b6e1cd1c28637103d2b6c44e8b89035a53e515ff31ae3babc82e6c8e1f9","49c9c8316d59f6175e6e0439b1d5ef1218f02ce622d1a599449de30645559eed","e4c48be0ffac936fb60b19394739847145674582cbc7e24000d9fd35ab037365","215de2c70639abaf351b8ff69041e44a767ecffc5e8d2ac13ca3f201853fa1fb","d228c7773484140fac7286c9ca4f0e04db4a62acb792a606a2dda24bef70dc21","8e464886b1ff36711539ffa15ec2482472220271100768c1d98acfdf355a23ba","fb0135c4906ff44d3064feebd84bae323ebb7b59b8ce7053d34e7283d27c9076","178c8707a575baddc8f529a6dbd5d574a090e3498b2d525753db7938c74227c3","ae81e464a7db70637d07b93582b051487c7d119ac7e1bab1b1582a96e631b3f7","148634fcee440c7bd8c1339b97455aaadc196b0229ffc8dc8b85965a7d65b380","d3c60c4cf88594f84f7f5ca5f87d59090787bfcf032e86d4f03d58394b826910","f3c3f17825c6a78681186da04c2f3a0f1c60cfa95f3d4b82bbbd6ebd57214a6a","8a2c67c55dfab4ea1f6e378cfa4b5cb60d8e8931316500f5b59c201674f6105c","b7b45ff1345f8e6bd6109a5b6ef0394c2e3bcbe48830516d9e78e20592ce468a","e5eb4863b7fc8515078dc09cd2f98fd179ff1a55216ecdc57d2dec7ce13e36c1","81785a3ea03d6db981ddfcf8fb1bd1377f985564def845c55e49e16f171deec4","537a2b61594512c5e75fad7e29d25c23922e27e5a1506eb4fce74fe858472a6e","8f9a2a6ddbd11ecbbc430ae8ce25528e696206f799ef1f22528569caf6ce580c","e05e03e1687d7f80f1569fdae117bb7b97feef1e839a61e1b3c61ffca8cc67c9","b311d973a0028d6bc19dfbaae891ad3f7c5057684eb105cfbeec992ab71fbc13","8a49e533b98d5c18a8d515cd3ae3bab9d02b6d4a9ac916e1dba9092ca0ebff15","fcb26ad5a6c39ce71dfac5dc16b3ed0e1a06a6dc8b9ac69112c935ad95fcad69","6acdef608420511aa0c9e3290b37d671bab4f719ffc2a2992c2e63a24605a657","291df5da0d84d1452cd68abfbcca08a3f96af610bf0e748528ba8d25784ce2b1","176cda558a7f76813f463a46af4607a81f10de5330c0f7a43d55982163aa0493","6621af294bd4af8f3f9dd9bd99bd83ed8d2facd16faa6690a5b02d305abd98ab","5eada4495ab95470990b51f467c78d47aecfccc42365df4b1e7e88a2952af1a3","07a9aa7f3facdfac577ed4aa0c166295d54637508942a2154566d87804a33ae2","4a34de405e3017bf9e153850386aacdf6d26bbcd623073d13ab3c42c2ae7314c","993bcd7e2dd9479781f33daab41ec297b8d6e6ccc4c8f9b629a60cc41e07e5c8","714a7869be4ff21fa7be0dc183569db5e6818ca22882a79d2bb3a7801f5bfab4","dfa99386b9a1c1803eb20df3f6d3adc9e44effc84fa7c2ab6537ed1cb5cc8cfb","4cb85ba4cf75f1b950bd228949ae508f229296de60cf999593e4dd776f7e84e8","e39730c031200579280cae4ea331ec4e0aa42f8f7ad19c3ec4b0b90414e40113","e90bd7922cb6d591efd7330d0ba8247ec3edf4c511b81346fd49fff5184e6935","1b581d7fcfacd6bbdabb2ceae32af31e59bf7ef61a2c78de1a69ca879b104168","20f7f9e30ac8cbf38189b3adafbd945a755a049b082f27d89d1d5d52f46818fe","c749b03596746c41abf1e8ed6b5a6a1bcd316c00dc39a337cc152780efc593bb","846953ab15b2bf3a06da6ec485be611455c5c83a02102138dd01102f3e6307de","218ed8ccd7078df39a26ccc59a094919d7ed1c0cd0b0182233deffda851ac3c6","8422f4ff58293a827a8bf401bb36f7eefbf981ae9aac48643d19c1e5439ee1bc","f70ab2e7bd23db437c2d5ed8690c401a921afbd5d3998a6dd2aab90d9efbaf35","fdda29d1f7eb83a912e34ae73f4e6e612350a7d1a496d5facc2f75487e2a1601","8ec6b7dc9062dd5c3c2fcc54bbf24e1e8a32b29ed902abe9192ddd0fd5f5f2a7","52e7386606a26e912bd39cad7752cc33009aefbb062d4a45e557c29095987095","3a6ce66cd39bc030697a52508cfda7c248167467848964cc40bd992bd9ce71e0","b4ec75c8a71c180e886ffccb4b5391a5217d7e7077038de966e2b79553850412","58c7522c1b1c94667777664bb9b26be14159220a28abf43e42807815e3102e14","d1666062675fe2f5408bfc458dec90de7279820eea20890b19484250c324b8ea","aed88228359e87a1b1a4d3d45f5b6555724c01ac81ecd34aa56d4a0a01ba6910","25307c3fd3840b5bd50bf95240a134854e80f736a4666711ea8ea40ba706eaa9","4fce1ce36a7f6fa69d3954cd685d27995123b683d31819218d204ca6bdcbfc53","a26bd8cdefaaf5a4cfe2c2f9e5b9114072f6d274ed4422eb7dcd1f72705a7eb2","5bbcd14f0138f4e65971ed5cb5606e8591ffefe3ac78ac310b164a975ea38f4f","0220b23c1c15820dcbb94eb74b8671020b53cd192a708e4d1828f290149e7e89","654bcc87bc095d6a2248a5889ec057b38cae6052744b48f4d2922a7efac4554f","cad0f26943006174f5e7508c0542873c87ef77fa71d265968e5aa1239ad4459c","0be66c79867b62eabb489870ba9661c60c32a5b7295cce269e07e88e7bee5bf3","eed82e8db4b66b1ea1746a64cd8699a7779138b8e45d495306016ce918b28440","3a19286bcc9303c9352c03d68bb4b63cecbf5c9b7848465847bb6c9ceafa1484","6cdf8f9ca64918a2f3c2679bc146d55f07490f7f5e91310b642bc1a587f2e17e","3b55c93b5d7a44834d9d0060ca8bad7166cf83e13ef0ed0e736da4c3dbe490a2","d1f8a829c5e90734bb47a1d1941b8819aeee6e81a2a772c3c0f70b30e3693fa9","3517c54fba6f0623919137ab4bdb3b3c16e64b8578f025b0372b99be48227ad7","19b3d0c212d241c237f79009b4cd0051e54971747fd89dc70a74f874d1192534","4adc1491e1338de6745d009222786747f50d67ac34d901420fbaefbf1b51b58c","4cfbd2a7a4afee212bfb0c9c3cb6e4c7d48366e0565bf5b43a4cd96c91cf14bf","37c175e28375e157933b40ca98eeb608e05f2583821a0fae564dc04614d2d95e","3f20a041a051abfb2b47a66611cf4bcbf263605f5469ed7e8b51b3977892d83f","7de33f94f482eee2f6d1d8f24427b737e2c4006792ec4c2b87da0a426e741c4d","79134a050ccec1692c31f1dacccd05ce4fcdacdf98f0fa56546b98eb8bdefead","24f1b6865be734484de2baf99146122137654c5f5f28086c5cee97b998bfcd5c","398feb1537ae0409646b0489bac99a9f0d757a2048f0009255f8e35e9c0f9828","3da4432a9c24123f98f6f1ddc5cda9c9eedf0a8853d06321803dbc5a116e5270","afc60e07200c5eae65b702f95d83096de54d99fa6eb2e0154e83b5e11c520bda","f4651affee2900f19746d1bf0fb1c45e77f57576197561ddc90b7272835c3f37","19527fc5a08c68414a234b02ae9b9619cdb4b811435d12c0af528e5640236f6b","20a629bc3f82d238f596230637365b8aec8284c963d13dafdd4c8e2746be5e64","01c48e5bf524d3fc2a3fa5c08a2e18d113ad1985bc3caea0503a4ea3a9eee64a","68969a0efd9030866f60c027aedbd600f66ea09e1c9290853cc24c2dcc92000f","4dbfad496657abd078dc75749cd7853cdc0d58f5be6dfb39f3e28be4fe7e7af5","348d2fe7d7b187f09ea6488ead5eae9bfbdb86742a2bad53b03dff593a7d40d1","becdfb07610e16293af2937e5f315a760f90a40fec4ffd76eb46ebcb0b3d6e16","710926665f4ada6c854b47da86b727005cc0e0831097d43f8c30727a7499788c","3888f0e43cd987a0dfa4fc16dd2096459deea150be49a2d30d6cf29d47801c92","f4300c38f9809cf811d5a9196893e91639a9e2bb6edf9a4f7e640c3c4ce765ec","676c3327721e3410b7387b13af857f4be96f2be91b3813a724eedc06b9ce52d7","10716e50bcd2a25cecf2dd993f0aadf76f12a390d2f7e91dc2cac794831e865e","81a8f1f6218d0acc8cd2cf8b5089d21b45cf812bb5820affe3bab058b46cba7b","fa69921924cf112fa523a18215a3bfb352ac3f498b46e66b879e50ca46cc9203","9b82a268ba0a85015cb04cd558582c7949a1b91b6761292b9360d093c18e1dd1","ccfb77fcac04c34442ffca82ae90c8dd2a0ec1689ace547fab9a0ae337dd4752","7b464488950d74ca5037da375308fc0c94a539378fd0e9554556df45483aad02","beebde754323e430b4ecf5b9f837a05b1667b3df86bd924b52c4f80f20b3d660","40eda068f71d159edc51c273a01948282d6e3d38dd2430944595d526dc4b40b9","c790db6044ce1bbafc46f13bde46b9f0065de155b26a199f442fe064f6b05d63","05a618d1e5019598f7d2256ce7a51d4bf70b682cbb8604d847c186e1df619a65","f405e934163ed30905b4682eb542bb2d446e59c477871be9d29f92ab474d522a","8294ddd1c6ea4ed9ec190a2d41500539c1623e274d5a67786d6b09849cb98d45","aab16135be8081c563dcbb33c25bb4bbf2065c7026d7228e6f1cd8153d8587e7","666d6d6d9f2298f8d8d17ac7a34ac9ca9a59e09fc97b1ae505df6ab4934e2dbe","f3941ac359b8377c0ccce596a2bd3cde8986279f42d75290b0272f3ab1aa604d","de3d39262355af808ff74b3df62aaad0ad3cbde76c13fb4fa6fb6e4cc817e78e","8c38034476af70d7ad430f69cb960c5bd6efc9962f266b39ed54dd8e9cad566c","757f7967151a9b1f043aba090f09c1bdb0abe54f229efd3b7a656eb6da616bf4","786691c952fe3feac79aca8f0e7e580d95c19afc8a4c6f8765e99fb756d8d9d7","734614c9c05d178ceb1acf2808e1ca7c092cf39d435efc47417d8f744f3e4c0b","d65a7ea85e27f032d99e183e664a92f5be67c7bc7b31940957af6beaaf696844","5c26ad04f6048b6433f87556619fd2e50ba6601dcdf3276c826c65681197f79d","9c752e91fe237ce4857fbbef141bee357821e1e50c2f33a72c6df845703c87d5","f926160895757a498af7715653e2aedb952c2579a7cb5cc79d7b13538f9090bd","255be579a134ab321af2fefb52ace369a11ffb4df09d1fbfc1ed1a43c1e5eec5","7abc0a41bf6ba89ea19345f74e1b02795e8fda80ddcfe058d0a043b8870e1e23","ab0926fedbd1f97ec02ed906cf4b1cf74093ab7458a835c3617dba60f1950ba3","f1a661906cd0e7fa5b049b15bdef4b20a99abca08faac457eeb2b6407f30d12f","7f5a6eac3d3d334e2f2eba41f659e9618c06361958762869055e22219f341554","626291e7b45a4b6871649c908fbbc5ac98009a5182e2594fbfe80b860f513c77","4093c47f69ea7acf0931095d5e01bfe1a0fa78586dbf13f4ae1142f190d82cc4","4fc9939c86a7d80ab6a361264e5666336d37e080a00d831d9358ad83575267da","f4ba385eedea4d7be1feeeac05aaa05d6741d931251a85ab48e0610271d001ce","348d5347f700d1e6000cbdd1198730979e65bfb7d6c12cc1adedf19f0c7f7fca","6fa6ceb04be38c932343d6435eb6a4054c3170829993934b013b110273fe40af","396e7b817fc4f5461b92f9a03325c2ebb09711aebcee5c41c5fd3e738eb78526","4116c4d61baab4676b52f2558f26fe9c9b5ca02c2792f9c36a577e7813029551","a294d0b1a9b16f85768553fdbf1d47f360dbff03649a84015c83fd3a582ba527","8f2644578a3273f43fd700803b89b842d2cd09c1fba2421db45737357e50f5b1","639f94fe145a72ce520d3d7b9b3b6c9049624d90cbf85cff46fb47fb28d1d8fe","8327a51d574987a2b0f61ea40df4adddf959f67bc48c303d4b33d47ba3be114a","00e1da5fce4ae9975f7b3ca994dcb188cf4c21aee48643e1d6d4b44e72df21ee","b991d92a0c3a48764edd073a5d28b6b4591ec9b7d4b2381067a57f36293637d0","51b4ab145645785c8ced29238192f870dbb98f1968a7c7ef2580cd40663b2940","100802c3378b835a3ce31f5d108de149bd152b45b555f22f50c2cafb3a962ead","fd4fef81d1930b60c464872e311f4f2da3586a2a398a1bdf346ffc7b8863150f","354f47aa8d895d523ebc47aea561b5fedb44590ac2f0eae94b56839a0f08056a","b152c7b474d7e084e78fa5eb610261a0bfe0810e4fd7290e848fdc88812f4504","67f2cd6e208e68fdfa366967d1949575df6ccf90c104fc9747b3f1bdb69ad55a","603395070ec53375882d53b585430e8f2dc6f77f4b381b22680d26c0a9595edc","cef16d87ff9aed3c5b96b47e0ac4277916c1c530f10eedfce4acaeacefddd3bb","fab33f402019d670257c8c833ffd78a7c9a99b4f7c23271e656cdbea1e89571f","976d20bb5533077a2135f456a2b48b7adb7149e78832b182066930bad94f053a","589713fefe7282fd008a2672c5fbacc4a94f31138bae6a03db2c7b5453dc8788","26f7f55345682291a8280c99bb672e386722961063c890c77120aaca462ac2f9","bdc2312da906d4129217238545d7e01e1d00b191beea1a9529b660de8b78834f","62b753ed351fba7e0f6b57103529ce90f2e11b949b8fc69c39464fe958535c25","514321f6616d04f0c879ac9f06374ed9cb8eac63e57147ac954e8c0e7440ce00","3c583256798adf31ef79fd5e51cd28a6fc764db87c105b0270214642cf1988aa","abdb70e24d3b39bf89aa07e769b33667c2d6f4ddcb4724735d72a941de6d4631","ff4aeeeaf4f7f3dc3e099c2e2b2bb4ec80edda30b88466c4ddf1dd169c73bf26","151aa7caace0a8e58772bff6e3505d06191508692d8638cd93e7ca5ecfa8cd1b","82f75b2de1456b0be46945c6c68547f032f11238d07db45bbc9c93fca6abfe41","812e55580eb591f3c04245345be8c9dce378b26238fb59d704e54a61e6e37c83","1de7ee494c7ac185e6abf94428afe270e98a59f1bb4768e4bea7804645a0d57d","2c12f912bab4b1eb797b2fded3f295fee98736f8053a08d0032becbecb4b34b1","5776c61de0f11da1c3cf8aafc3df524e8445201c96a7c5065a36dc74c2dc0ef6","94ffa91cb9f8eba1f468c5439994d4544ad24658e1192060f76267b767114445","7f0f90d0ffdd54875c464b940afaa0f711396f65392f20e9ffafc0af12ccbf14","483255952a9b6240575a67f7beb4768bd850999a32d44d2c6d0ae6dfcdafe35c","a1957cc53ce2402d4dc5c51b7ccc76b30581ab67bea12a030a76300be67c51d8","8149e534c91fc2bcb3bf59f7c1fab7584382abfc5348055e7f84d2552c3de987","c280ec77789efcf60ea1f6fd7159774422f588104dae9dfa438c9c921f5ab168","2826b3526af4f0e2c8f303e7a9a9a6bb8632e4a96fece2c787f2df286a696cea","77ced89806322a43991a88a9bd267d6dc9e03fd207a65e879804fa760292a03b","c8ff3a75cd1c990cbe56080b1d254695c989136c9521cb1252c739788fe55c83","485f7d76af9e2b5af78aac874b0ac5563c2ae8c0a7833f62b24d837df8561fb9","8bdf41d41ff195838a5f9e92e5cb3dfcdc4665bcca9882b8d2f82a370a52384e","2b234fce994b272403881b675d6ae2e2afb2a8be8bdec71002ff8ff2d5b59bd0","97ba9ccb439e5269a46562c6201063fbf6310922012fd58172304670958c21f6","50edac457bdc21b0c2f56e539b62b768f81b36c6199a87fbb63a89865b2348f0","d090654a3a57a76b5988f15b7bb7edc2cdc9c056a00985c7edd1c47a13881680","af777ff8499a24a68cb126af515862005397680e49482aa651828f119348f666","f0c1b4e9f73ba87ae28567faeae9227669c2b079261011a2227161bc54c288e6","2ca3317f639612b70990766074be04582c912e3ff467be28e13e5aa6e16e22b2","9bfb6c3d3353f7433d46099b9d64830fa27302f7c2a78858f79fa6a4e79eea29","cd2d686672591f0c3515dc41ceb87040504d37fc680d6149b072064d535320ca","08db8c4c22bcfe09cf073c307e095839e0681ef24a05b6d570fa42d42931fa6b","b8a478a0e8ef11eeaaa669a19857fc52d6a47be63841796c01af5aea94c0b8e9","96d497d78ecf5692fc0c726f4c9ecc73a6aee359969c0ca688bd302c3da4f1f2","d890e678ca6c26148d844bc1b0b917c6a3fc86b2ca41f72a76937b0d090dc90a","bfa4007aa06b4a3fd12ca9524e847e817727adaf59b8a2589db44bd96307bf25","94142c60f6763ebe3eb8e026d3f0bbee464e032d23fb4392ad46dbbc814941fc","76c940de465a6ea834192d366fbd749c70c4019b0131ab8cdcb18a2f094b8b3d","cd07801eead800b4d413a7401be57fe697b89edd87a4441ce9ebfb970e257c78","9d3ccf4720dc1bf6e10e9fa6a1e0c2888758cbd6b6f749337ec974ab2b1b687b","ab65710910c2a238623b1b7bf65d16011415115483c127e38108469e52f5550a","4de152c4e6b37ec1fb066a53d8e82576597e39f6527067d65ab8a9fc28cfc902","119900f332a140cae511d9a9000e70c46800ee52ab57f6985db0ce315b58b99b","f4b6e64737deafa929a7f23f75fc5d2498ddd6aad2a0ba56e500065c2d7d24e6","7ca1377e4e33c766c296b517213dd447050b1c41664ef80b4185b2349ce2ea9b","020484d9a245eb9e966ec5cfd975e78bb56a7a26379ebe60df82c3a00d4958fd","dcea23cd5584921b6d88f81aa8e7c7d89e2d0ebad4a2694ef86c21abff8466b1","688f726a5b4e52f1a5e47f39c61a2e14b6e993b10633d2b446dc0950f1dc32df","5708e3fce57d71befafbbbf4311d96d491d43944cab32cb462e4258ab4297230","b550b07a36a70e783f3d66548f3af2e5e7cd359956d8f7015b086bfb60b05877","a0baac19c64f2b264606af44a3c454bca52f4ef473ad0cfc9d1ec2130fa0afc6","6294bd7af76f4227284c0d959cec8f9b6094e4e56c358b5222922229a6cbdefb","a8848fae1eb136b693b27da65784f50c1b9a7557a7508607009aed51c2d4eddf","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","2c56f8ff3d5728d333914f53fd55c7b0489de260146bad58bfd35be635b88de6","b442c8f57e427b233d751600ee8d65fb79644827484e0558b650a2613e49d058","8442a409b52755b9b689e885b23d3323503ae3d702b1f403182f12a569108dd6","567d21f76b698a7b919f431571efd8d6b9c77771f7578dfe7ff7955a616a5f69","fb60f2f372e45b4fc93dc188e8cbd05c188d2800ec99c5aa5493c1a610c9888b","3d00e023e3688c6f096f626f3730372c3be894b447d6c016d9b188f7a80c4b13","c0c8b93cdf5af4bc0c2e200f11ae84eea4e9bec75d053292e740b8f0406f4490","7d5997ece7fa1ebf08b85ddc3facfe58eac03540e5075ef135e403783e2904d5","0bac905fa20beb4186047bc05d200387faae4f8621b9943950ab030b44d5a9ec","8e572129bf621373246c09214b1883eb17054ed8f98246330517d84ea871819b","4a1fa907c6e2ac86bbfa5060df51c835f0388a8a09beb2302a6745f4ce4423bb","8e8cee69abe8e47e56e66bde839f0bcb89bc3b4f70982bfe5711086c9667e484","90dace31b44188f5e69e0db307a5d5ee75cdd49448e5f1051cb0685412e237e7","18af7ddfbe8f3ce968b6fa6103ac6821d6743b13fddfff82b905f3634d175d42","11358fb4674be69e5d66c1ffcbc30d3f3439bee0ad14c22ea0d54e99005afeb2","49c0c71a7a689cfdb899e0be112b60f3ad81c48351b525a2df4ceb84c9993689","532fa377d6541a9136337c33300f65509e7848dcfdc1ed45a1e83a7b1ab636f6","a6e0494efc8e67fb537602c8a2ccc12842d31baca1f44105b1633b2234d081fb","f8ab097583fdbd9fd19e41f6dab0b80230c763573d797d489d317cf2e4947d05","17732ae88c786321274aaeb8be7bff6e593f58165cc308048b04fd774f71c387","fa6dc413af2a0a49c5da32f515436c5198a67cf2a9609457c4bf558f3091717d","112ef039a661c69dc6b4009f99ed00c3db657e758113ffb646850316fd0e7e2e","406e96394c75ed1f16f888b31ca5669f88c147febaaccedcf29cb6ac769d113e","d944782be675688fd42ab68e7fc6829d6b23da05c6100050dc969dbc8352b5b4","0ffbc5360a4479b3a3e8919106395280092d73dfb8752c786092fea30ad9c532","3b9c9ef706a2523f5d830035532b01024e9b4b4c8c6525a4605e95b62ce0ab75","eed10a03074397f44a507e7efef479417533b44faccd45a032552b63ef9676e0","5f1f14268f34a7d432a70ec6e242e90664cf41c1ec1d0b8eaa0e3d51ede10b3b","71bee888a5593cb1772bee9802608ac73236314be0be152b2506e397a6aa15db","81b9125fd2e9a38f45835e923e6921e6f1ce16ae20bd76a5735ca4fba1e02823","4a1568c93ffa2eb14b6c37a9b1e290fef8fc247174d3cd3a12ab6a7b6f8bda96","f36d4defbdabbe1c8431e792e4c8564e89b31efccca3dbd44d5c08c8599afc39","9668e7595463a581861063d068556dfbc5b1c2387aaa0e9e4c34be80c490b354","af6dbee44f05aa6e6ffd96ddda435530104893dbf3d3dae1733849ae40242c90","2a208a0a0bdbd0f969207ee87cbeb8255b2180ff944983743f0896c3cc43bfe5","dc72831c19173841c7cad0d3be1f083561126a41f6b6c9469a801c212fff1a48","3ce4f3d6fa505f086824fc70cac8004ea00c860309efc88adcfa19444e3a78d2","7823b2db0a9434ed635fc74e3b1f7ecdd272845f32312d4ca7b07733a310feef","f5223d0e4384bfcaf06bd4625fe46a431fa903adc2e0266377041c62a51f364a","c9ce2fca0c61765fb84d3e5d989c049588a351f5fa1a6641c61eec48afcd651f","0c4036ede1cac9c1eee393affc4bd39e00752cfc175021a4f6fc858ac74f9512","c1f42cfbdc3f1ec7898ddca3bce2cfe28b6e00f5563f2e04157e71586f22d7c3","2b21454057e973fc5b61aa1410d91fa612f75c296f1f157cf4bc064823254d73","39c804163bb11d5dfcef643400a714874bd77504e0bc8c536b8abb3a86343934","8783fba6e4de6cfdcaad946416cf228b9719ca91fe25e6330603ad4eae11e891","f213834463c410972b6716af790e31093fe52506d808483cde4aa16387c033e3","7f11f8392f2479e2dda86a0a0ca7c9fdd38420d51b89a60f5ecf8d01058b15de","ef286d08d1a63c316dbb1b59774eeb16b99d1a9a67f2a5836ce693357b877736","a7b79891405b752102c0704912e3e87d81fc8b31bb188369acfcb04ae8c70d5c","7867a16ec03ac5a240411be695acfa5f15a8646ef8d27723ef1598b2e47f83f0","bbeb24a99db942616e79e671a73cb4067fd193301b6257ecb0893afd6b6ebb13","92784b5d9bbbf5be7758798420ce25fad16e48a155541cd0a5bc8dd4e27963cb","b961dda657653c7caa45d421e2ff27b1614149c2357591c9fbb4ba4447d52505","499cc27f96de7b782f4c8e9e7890f4928341625e1b944c6f1030a6fb0a000dac","f9a6d14295abd0722680c5fca582c7ffb65c2f52dd06d5468107c2a3272d3dca","4fb134ab8fc42241acf3d83be19625a45331fab41852a61f412fd70706a5a95e","60dbc377ac419b95f49e3c66d674571a7b630b2562deaacf19b55c935161440e","caa0f5f1a1e23ba89a21d3ea53dbdafa890f8b0a4f93f6a311f3e26cbb99c595","f84e062b80f3b13e8b073a124199bef416981ddc648e5b840e33d0e435247e64","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","b5cabc07f60a6837f37da58c359db96ccbf648fc2f360dbfaa65d84bcf4e8fb3","4644933212aa152273164eda21e4923403b433ad923c9e455e4a4eaf464a1c86","46af7fe8ee6ecda28fcd45a4151139befaeaaace12c9997ca82fbc05b13d5224","7e0800fe33293dfe0abca62cfe9298d8ba11b286c9b5656f974068add2d0f6ab","9b0d541ec8c10c2eaded0c4d377ed5f3db13a325540d6fdcfd9047af4dc1c82a","3489fcbf65af2313061c1f991092bf04e4e5be374fe81153924b18790b5eb37e","d74790493f984cc9c878e884ef239f7e07f00d9d98b58d12373c52c41910969d","5a43c450885953e983a7bdb15af8b338aa98308d9c4d49621bff6604ac5a3612","3d976e2ff5440b23278099ddad82f404bd91516903bab1ae56f6761ac45a1c0d","1029fc84f877c680a7a4048166c497e6d8222d6bb584f1a0364c3c064f75d76d","c18f5132d5601523711f9dbcb7e953fc819687e2e81dbd6823fcb7257feb667d","9a131ab1982ce3d23b4c0c46344f5a24814574613e0858db3f7c862ac3628698","c81d17a26b3a762a65847e9a88739bdcbeeaee884a785fb0c804b605201bcaf2","deec6107c05388f74ba6125f1fbf87cabd3203a27da9a43327add5643bf8989b","765b53a34f41122c30d5e27ca003cccab2b5c624c0f7f7b6e82c03476be17d2f","7da9f80b1f52eda22786290afb90d5c0781cd8dd7f051dab9e0f17dea8ace30c","72a5f36a1d9c1c841705be785a70022fc52aae6625b4712211528611748466f0","9511a2caae1cb7bee70386460fc5f11d50b9ea5a3637d47e87235548b9fa2f25","e33fdb559c5378b67b8d83922617d369328df9c00a1ae92788e65b11bbcf62ed","ac79eb84308548438299ac94a308380af4862f76116e27b8b0e0b163040c6cc8","8fc6ec17571ec38df9ef5ab173b074098d228c86ad0bed75fc3584e04b1e5873","131a67321c1a7a83a5016fcc82038fca9ecf4e4e18fd73fa3f7cb8f5de8dfca8","3dd3eefa9dc74d904f68fc3f8d57aafc12889195b91db5926be278bab12d7fc4","c59371cdc14bec542744157d8749f98b8ccc2c84ca3f216c4a96587c9f32eb9f","ab085b3af5c842e4b4ae4680a7b4d35f2169298e998ae490dac27a1befbc3aa2","42aa39b83c17b7d8043633d6353a26112d9402ae536cd27cd41181c109705688","6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","bd821b87e2c0fb5f509cedf47da465c447451835ce0fe2a752c4fc53a9f95a5b","f1d7352c0f7041abb43e1054abb14fb8c53a13dd54bcc1d67b97d2c02bb5028c","fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","08f88f75fc2f516413477606a4122b6d3f6eb6680e8eb79f3fda5a5d2ed306df","6ab9821afd2a06879620eb4e041b9492a90f294e9b733ae5eb022edaa3964a45","003533cc3fa10cc457668d4256d21a65706a67a04251962cfe85d240502f8d67","6c00cb8a4b187505dfe21aff242b07f69f84f5c832e8ab4357af69daaee1b0df","de14ddf9d780367c6a117bd8a1718d491aff66094186523b3eea680ea7035a7c","ee06b94d0521cfaf91e4b003518eeefc45bbd594b0c22955fe35be282958252b","9e5f8fdaeb03f1699392b4724a58ca7b47c5cbb6762920d2bfc722c265495ede","d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","a1597b0039f39e9f3eeaf120f02d0c94a826fad30b027a2abfdb8d580c89be70","04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","1de82ba3718b2b3bc5333c5bc35da5cfc46d1b654edc012de46bbce48126fcce","db3f5c9bddae907704adbaa6c995fc676421fc505df2face87116b815033edc8","834a5a18981597447a238bd451218d64723ca51248bdd573ae93eb4e88d1bcbb","aaf8ad95184997a377e021a4f94903d8caf7cdc238e7a614db26904f05d9c95d","c817ccaf32fa5b6a49cf1d9534b126efd37e0eb6b4101d1956b907172d31dc55","d5ed6cb70237fc11404db1e21e2a01f9f48b6a099b70675c37602081bfbb7ddd","39d2df87461d48225f33e56c837024baa41c41fcd191a71f7957dc4ad7b6aac9","a4482c3afa3df96e58a1e8f3d648403fdf171bcd0fc5f68e4941220caf9b335f","ab8919767d93c2f3fe75ef82d53f759c9050392e08952d377eddc0e4d20ec606","dd5ae30c9502660f3a0136bad4d2e909ec1616fab9598f840f4f9ca5a33549c3","36be1fb8405d8e41ef0877a0da9794687e7eb6903bd5380365afbf0229367618","b46074599d7e0c688befe94a993461e45eb105762cb52ee4a9c79b4a48998e49","ede09dd61bdb8dc6f5c73f70044e7694796f2f7c496987776aba6cb9de03a64c","e120c26b5b34ec0c6bf9818b40b011d561897a90d640d5332b9940534591aa49","798a9d087b7571e705001d142ed4cf1338155291936323a370dd928476356ae4","aa3aa185c5525c41c6aefcc7bd0c4b4065d7624202674350364216ebd3e01cbb","a84b78b4b26f9e20e88b1e387c9c33bd6e6e6954dfad426c183df69c779cd6de","2bad09c4dc0810666ef5b6150aa910dd711051ce5f2184050c9859c708092a36","eece99a6cf69ff45c5d4f9e0bfb6450f5c57878d048ff01a6a6343cf87e98230","f7ab1fe738bbe7fdd1e9bc9887f55ac0d7eda0d234a7eb35c77304430f7d6715","1f763e81e71ac8ce0dd1b82e67cd9d1d2e56e77c844b46349e1623c82df9b130","1a9c0db9d65449e9dbcbf23baa3b8bfa48806cddb2adc5e172eb8eff5afbb702","4dffcfc24d378d52ade01a1ae0c5baf6dc7a50c35f8302be34f06b9eaa5798ce","6586eacd77a813c50d7d2be05e91295989365204d095463ca8c9dfb8caac222d","3f2b3c5d3f5fd9e254046b9bf83da37babd1935776c97a5ffc1acfce0da0081e","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","7ca332b2062975d290fae189a280511410818c2aef1abe0446d17c5afa27ac8b","760ec35283b516ae48e5a1a791dcc9a34e8413da185e73352c76ed7265b7ca18","004af9dbe815a130618949a667ae0740cdfe5508cb130101edb47e3ff9405525","0e755d7e043943155eac7c49b775a097561f635a68ed5b4e3d30b18432b8ec11","f5f2db80672964282af20a5a9183b52c2efa84313e94c2a0cb60a279f9c8bf61","5451d739e02baa57d5cbe7ec203c4113b3f580532a27eee35ed0271354b3905d","1a11a3b124d03e7d22b9ec02155190b7a0ec28a0adc60f02a26ba1fcf9f6eebe","f123144284323e95c6472910aaf7759e0b5c283a91c9f5898c871c8356473562","674e5ceb7c87726ce0c273714bc5e967f8bb5a4da79a0a832f5519d4bc9671ff","a6f2cbac79f537420b448852640a4b874ee6f96d3634edb2281d4ce30c2c363a","90452b720567c8d45702fc1768d787b46f1e51dd75aa2099cc9c69694d71e10b","070054ad95cc9df822616a350eb7430d9f950f38c659aa3c7b556833ade05ac8","9e5eb3592db8a89cf1ff90431b72c501c65bf71e7d3d9b8a7ed729a66eb90bb8","2e4761495c584b63ae7a595c38382ec0010e2fde757217240fab91d2824e0757","67456e44c1b5b4f939e34f5dd93c976c2008741090fee937cc07e3998bbf49b4","2d04d76e167162105882e857f1ba3532372dbed3b96b7807cb0e9403c44c2af5","2e28bcd8da13f0ae02e22b86363dd9ff5434d2a86adf0570c3ebbdd0002e704a","d8b4b4a7e0944cc330afb521b65013fc1a7a167cc224229236587dd958c599fe","e74fb24e65cc26fd18bfc26f31d74d4034266c88e1ec5316e86cb667efb83af4","d9326cb92315fadb6b2d36b851d1b5126de6cc7a5ea173c18e2ef9863a5cc682","fa2262f2fa618ab5dfb092d200840d8c5705ebc7bd9814ce78345c8a817152ac","c78a8159daa7433fb625c93e07c8fa783779be29d5c6418c0e466cf4ac1fd01b","d08ade9e94bea745ece50402460a3fb8af42864aaf80ac0e722403391fb9c1e0","7269bf92cd7306b35b46df17a4d931953f670da4d96174570e1a78bb3832543e","5cd1d38f0ed0104ffc75437525ef04d7dfd7feac739aeb76018cb750846057b3","5622fe533b72309857b6625a3758d953d0098f4b2f35c36c325583d1ef70e61e","122f7dfc5159ad838cbadf9b452d8365de37c60601f9c616fe5836e9e2ac7b08","7bd6577fff72f67e86c50af399bc51eac7634d90f9db5be96c6042b96f615db1","85eaf9aa51bfa3defa3b8d2d528fade55abbac3c35bd080d9b0f71039789e6fe","c8747ad1b95da079d47e7e03414fd597824abbd3926cd5a4e8d7dccbcc895c9a","92253ae7695c5c12b9882f8f8042c847f95168e7d981550f43a61b667617c2ae","296759d7370a9435b779d37ac780ff96316bd3b35c3c6e7cf88d5d6f6ec72a2d","2ede07fcb653ffa0518525f6e199c36b04d12aec9b27db80b81f818289c364b2","322d17a36cd5a1185092419f2bcdb8c3b5d9a7c3be068b34096355e8b10401d3","0b1ee6b7a1a25446319247a3e4f23e3b9703b23bd93317c2f6e91c2704170b5b","ddcb02048d7f0bcf093e8d679fa6108029e9e4192c1d3be6f6fbf91e9112f95e","be809bbbda6ac7f5dd3615ecdb9d2fef448f5fb40874cd2b2279708e907d9391","b1bec4d354d7e84c8665ba5283eb743eb5d63c46305c6915f186092690cbde86","029ac13b591af6e0a48078de25743c3b7fab62f6939a5855c6b7bc0a9fc4278e","c37aecc992f5e2faf1624be0d04e0057d6c6ffa27297c76ef397d0d3a77e096c","6a38b5c7a9598589c50f912d6d63ec4bdaffc7aca5dcfe01624755b49ece887c","61122756611e0412676cebd84bc3fd2d155ff42401459d44f96da00d9a63d6f3","d98ebc337353d3df8304e5948c7e45ac0b2be2f70778c0cf023756fac54969c5","b7189a0ee83a535d31ce124f92a8d796a46384d1df01e08b4d6c15337cd96492","a9ebe3c4f8d3c26515e4b7d67b4b9284276575fd814a81e4b416233694eeefd6","3c2d5486c350e33e64a60e3a68c8931d753267f3d81250fe506bbc47aa904f58","d29a177972b76187824e2e3e82465f439d27cf5eed0f7d4392a5f79510a87527","e1c248fbd422f3a981c7b6956ebdd06b60d056621e4ff5c473e9bc7a41b65e57","697fd414eeaa958a27c50fbeae40b2c235e1ea8546a5cdac6bda108518bce8de","1456474708a83b459e15a5c9d6cb1c8b7a2805672981eb6b2b619629782c116d","c83a1f1409c9eecc9e5a99faf34c5ad18e0d25d79e2f6a1e0de0aa9294027166","49515cb879a1864f53b9c66af9f8c44e6b335eeeeab76058658975679a042245","e883cc9465554b78bb22f1227ff90179536c7a4a087478dcf055596886a882cc","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","0627d6e13c3cd9afced7944aae953f6754f36c2f07665344531bc5bda4987b7b","2423c49ab6f17f04d19438c22fc8b12a4c4c0d0e48ede80ee72d35a39a7c4ee9","4e5ae7d9eeacb4d370774bec74a487dde7b0e8c585d641b3282637875f39bf46","e39d64fa6d219bc0c6e1cda6d36c7b03ea0c3660c87316b9cc66f970c9e6b517","bd4c9dc7a4967479e0f6bdeea7f149ea17385e90158a09ba962798477eab94e4","01720b8cf1e9f0b2ab2c6ffc37569310be6da79582947230c0f16656700a1aa7","681dc77c3ba725899fc1c4672f473bc58f3bf6866efab16940459b72b566c783","586c88e1997a026767853125b6d6fac108d222c87212fbf653a619a4c1ca0fb5","7a80760a2cc6bf365e9f551ba5dec04f0720da03ad38ac7dbec114cc2d71e7a8","870f5057ceb84f6adb1fb80a91217ec69cd621ed18ade0daa7e0901d06db250d","89f64dde62e64301d28f7779b8277bd2e4d2a35eb7445b564ff26a96642c97b8","65a0f7c7038826fcaa20129ea56bd13412fa31d892c83d4988cbaed8d9259df4","27b35493a8b1cb87e37b61f89a71dbbf2b0ade587cbaea41f4fd42435130e8c9","67d4e628cbdf299d19519091e11485b5e499fc54c9ba235a880290384d37b029","8ff4003e1803103a6076b70f29f3f66c02d066cf0595b8e89ce1b9e032d1281d","4572b8cedb87424ece15bfca8641b2ac81327b9237abc1c5ec09e869bfe0a206","2a157d89581058fc5123eb42784ca0425efd27c4920e05198fd44d601863e3ca","e11eafc9fc302bd6fbfebadae63e0dfeebebabbe693e0a8533f5ceb8e298cc5a","b269e2e7a0da57df4c8187a8d9b2f19ea8d847083a76006b2d063815c0e26c6a","3bb0e7164c489a33d87553a205349f258d7b6276928a6851749371cf00f62957","6c7005a836d02d9c33236211e98d2c4af57c12e3bae66f83d1da40bcd11e6001","6827f9fb458c8ae59d46b92aaedfd1b331c1d2d648b45bbf803bf62de2744368","21705dfb221510fa0df11bedd845f41653a3cb9e1f2d31e074eb6a86d056ca24","815958473a2740225d150044c5c07a8ebb9cd6918d91c33d491316560a610850","a638f23d9f46e4b5d274347810efb52c99d45f7d836601bad6b83b7f8d15b8df","3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","46899ea33977cc9709846fa0df32edbaa610d261a7020e487c09c5b499723634","df2ba32dfae996beb1face17a5bba909d7fb8f6fb80ac554e7cae50e8b00a4c7","b4a8d900684e3167a5251e7614843bc889a307bd79226054124286743475f2fa","5feab6c5b5962b943354bafc10e79ab8a495786c1141358f2a44fe2108003828","91dc8945750895c8ee8cc8549f81b4f0a7a6248af72e48359f8cbbc5b8bec77a","67e1ae275bb047700f4384559e596bcdc46a9e7ba1ef6ab275e60b8059f077ce","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","9d9b52c50efdfc1d23d4aea99074009a932068cb786992776c233913bff1eeb2","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","01d41a3a15d66ee67269de43391515c09168a7471c48285b7e5d83b83ae55e45","ee99229ab961469b6ed742992b7cea157297c7195ba04a45ed5930ceb333ca67","c69af7b25f8a8d4b7b8838b522886284f7beb1f565ce9f5b88165faf4c05ad7d","af1ae61fa804143b4395dc1f3b7c338b446450058a50f390d8a7c2ef5be66aeb","fc6e63b1b6efc9580c932b49e05e6ce89167c66b501f38686cfde9e79886cba9","36b31157d249a48c94c688a068a6ba0cb9fcf5ebd8e885ceadc22f4b06bc1b10","ad50407bb2fcb7350c4064e45eb4fe476260b2ddab238ad7040062343172dab5","e628b4571959be85ca1a0e1b3c7aeb49d77ba34366bd5946fa91d5e7d5b85698","687328599f9da16db4de865a31551ad92748615189922acb8c7cc63d288112c3","496f83044ea343e084a0ba958b4ca51e9cd34fc9236b2cc67e055ec0ef9a776f","7d27a4f4911b76f63cf27e82491e16fb9503e46200327540095c47c852ce8294","1e608f854283378394db786419b48b6ca7328d98b4982ca98920eaf3e7915b40","d20487022be9d0cb0a97a6c6c29c39fcd2bbb4adf6b4221c1db43471295b8fe7","6e61b0c6ee8e9bc4030d443b88effe1fd08e8e03b823b67207af2ed733ca7759","4c3134a6838b6317d7ea6a814e46c863eb59294b8002f8c89a87431f6c05f6c8","310f5494c9138ac424718c12079e5ceff457abc6e56313e04b1144679c8015ae","8cbf91182610d564e9a12bb08a1cc7188aef1eb91c47880f34d82fb4be476b64","7e35db14e6142836599b82529d8857d18cb4159b149d2bb9672a8d9d405cdf8b","e95dd5f3dfe8086d0036e18380e4bcfec3f7ba6066571af75151fa2fbef70902","2b96dcd296aba8e2dd7298f4d4044bd89fead8afd23f33f600c583ae830d298b","746c9066aa38f4ef87fa23ab1041ddac3fab63aebe422dc0ec651f84215060f1","aa486ca9420abcca34b2f7d5eadb073469004cfa7de94c7316f56e728524d425","8a37c9256ec99b4afc42330094c2b5432ccde10de3fb47e6da33340605581bba","1540da88c3ea4884ce26b0d21e6b00de19f8736216ed16cb0a5377a052074a2a","8ea9dcb8c1c8975dd166d18b50d90b74ae67119925a7c8e580d82b6e32c68448","5c4864220944cc58ef0b09c34c6e2d0a894239565119013c491cd2e2eeade5fa","992a01bd398e03657efd0e7ad2e2e8770b6721795cf070dcb9092fb84daaeca8","6c773406bcadc99ee82ac6f2dfb6d7d06e5461af9a9158c4dc0424d1e72b0008","5c892ebae648a1bf31665b2ec91e0cced5c2c6a41d4fca7f451c17804d31b286","dd5e059dccb6d3b9229cb8a29fa9eccc7f823fcd5afad9156e994c89fa480307","a6b82b56abc4609c0c0f7c6466cad1850938e5f02250bd6756e046329d66878f","9c12b4c2541303f91fb78071186b053914013d045be702ab296d835c8c388be2","f1af9c9990b8983d8c61de9101f185e446e8e50c6ded809084c85621a99e4f7d","524beaf1985bb3a724a2e5d5037f2b4d25cbd66fbd5b65ed92fd7bda8cecfd4c","4dc259419c0dc8ed07b0df815ae9d3fe5e5f9577c516df926f50abfa1f0eef76","401faeafadd9e9fae2a27f6ac8897f26d703487f7322958843e93bcdf280f629","31b04dfc1ca2952c69725133aede38ccd355b5eaaa5e2124ae9af9bedd22c419","b8d5550c2e544a598895390d0918a9a1fbbd716b7396cc367bfc8705726957ec"],"root":[437,[544,553],[951,959],[1082,1093],[1095,1097],[1237,1253],[1272,1277],[1306,1325],[1536,1551],[1579,1583],[1606,1617],2133,2134,2141,[2144,2157],[2197,2233],[2235,2246],[2536,2541],[2547,2584],[2685,2690],[2706,2708],[3111,3116],[3134,3149],[3159,3185],[3228,3237],[3251,3288]],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":true,"declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":false,"outDir":"./dist","removeComments":true,"rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictBindCallApply":false,"strictFunctionTypes":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":8},"fileIdsList":[[971,1018,2778,3186],[971,1018,2778,3003,3216],[971,1018,2778,2869,2982,3188,3216],[971,1018,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211],[971,1018,2778],[971,1018,2778,2819,2898,3213],[971,1018,3187,3188,3212,3214,3215,3216,3217,3218,3219,3224,3225,3226],[971,1018],[971,1018,2982,3225],[971,1018,3187],[971,1018,2982],[971,1018,2778,3189,3220],[971,1018,3220,3221,3222,3223],[971,1018,2778,3216],[971,1018,2778,3198,3220],[971,1018,2778,3199,3220],[971,1018,3214],[971,1018,2778,2930],[971,1018,2778,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3216],[971,1018,2778,2779,2828,2860,2869,2888,2898,2982,3186,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3215],[971,1018,2778,3045],[971,1018,2778,3003,3094],[971,1018,2778,2869,2982,3047,3094],[971,1018,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089],[971,1018,2778,2819,2898,3091],[971,1018,3046,3047,3090,3092,3093,3094,3095,3096,3097,3107,3108,3109],[971,1018,2982,3108],[971,1018,3046],[971,1018,3098,3099,3100,3101,3102,3103,3104,3105,3106],[971,1018,2778,3094],[971,1018,2778,3066,3098],[971,1018,2778,3067,3098],[971,1018,2778,3068,3098],[971,1018,2778,3069,3098],[971,1018,2778,3070,3098],[971,1018,2778,3071,3098],[971,1018,2778,3072,3098],[971,1018,2778,3074,3098],[971,1018,3092],[971,1018,2778,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3094],[971,1018,2778,2779,2828,2860,2869,2888,2898,2982,3045,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3093],[971,1018,2778,3004],[971,1018,2778,3003,3034],[971,1018,2778,2869,2982,3006,3034],[971,1018,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029],[971,1018,2778,2819,2898,3031],[971,1018,3005,3006,3030,3032,3033,3034,3035,3036,3037,3041,3042,3043],[971,1018,2982,3042],[971,1018,3005],[971,1018,3038,3039,3040],[971,1018,2778,3034],[971,1018,2778,3017,3038],[971,1018,2778,3019,3038],[971,1018,3032],[971,1018,2778,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3034],[971,1018,2778,2779,2825,2828,2860,2869,2888,2898,2982,3004,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3033],[971,1018,2778,2984],[971,1018,2778,2983],[971,1018,2983,2984,2985,2986,2999],[971,1018,2845],[971,1018,2778,2845],[971,1018,2778,2819,2998],[971,1018,3000,3001],[971,1018,3002],[971,1018,2820,2822,2823,2824],[971,1018,2819],[971,1018,2778,2821],[971,1018,2826,2827],[971,1018,2778,2819,2826],[971,1018,2778,2793,2794],[971,1018,2787],[971,1018,2778,2789],[971,1018,2787,2788,2790,2791,2792],[971,1018,2780,2781,2782,2783,2784,2785,2786,2789,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818],[971,1018,2793,2794],[971,1018,1437,1438,1439,1440,1534],[971,1018,1437,1439,1441],[971,1018,1437,1439],[971,1018,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532],[971,1018,1056,1059,1327,1433,1434,1437,1438,1440,1441,1533],[971,1018,1048,1437,1439,1534],[971,1018,1437],[971,1018,1375,1376,1381,1433,1434,1435,1436],[971,1018,1032,1048,1056,1059,1060,1326,1434,1436],[971,1018,1032,1034,1327,1328],[971,1018,1327,1329,1374],[971,1018,1327,1373],[971,1018,1029,1375,1381,1434,1435],[971,1018,1032,1433,1434],[971,1018,1429,1430,1431],[971,1018,1429,1434,1435],[971,1018,1429,1434],[971,1018,1032,1375,1433,1434],[971,1018,1056,1059,1326,1375,1434,1436],[971,1018,1375,1377],[971,1018,1377,1378,1379,1380],[971,1018,1326],[971,1018,1032,1326,1375,1376,1381,1428,1432,1434,1436],[971,1018,1032,1048,1059,1375,1433],[971,1018,2350],[971,1018,2676],[971,1018,2636,2674,2675,2677,2679,2681,2682,2683],[971,1018,2636,2674],[971,1018,2636,2680],[971,1018,2636],[971,1018,2636,2681],[971,1018,2635,2636,2641,2642,2646,2647,2648,2649,2650,2651],[971,1018,2635,2636],[971,1018,2678],[971,1018,2635,2636,2639],[971,1018,2636,2639],[971,1018,2635,2636,2644],[971,1018,2637,2638,2640,2641,2642,2643,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673],[971,1018,2635],[971,1018,2585,2618],[971,1018,2585,2617,2618,2619,2620,2622,2623,2624,2625,2629,2630,2631,2632,2633,2634],[971,1018,2585,2622],[971,1018,2585,2620],[971,1018,2585,2618,2619],[971,1018,2620,2621],[971,1018,2617],[971,1018,2626,2627,2628],[971,1018,2617,2627],[971,1018,2620],[971,1018,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2622],[971,1018,2160],[397,971,1018,2160],[971,1018,2162],[971,1018,2158,2159,2161,2163,2165],[971,1018,2164],[397,971,1018,2170,2172],[971,1018,2167,2168],[971,1018,2174,2175,2176,2177],[397,971,1018],[971,1018,2169],[971,1018,2179,2180],[971,1018,2166,2169,2172,2173,2178,2181,2184],[397,971,1018,2167,2169],[971,1018,2168,2170,2171],[397,971,1018,2170],[971,1018,2182,2183],[397,971,1018,3240],[397,971,1018,1619,3240,3241],[971,1018,3243,3244],[971,1018,3238,3242,3245,3247,3248],[246,397,536,971,1018],[971,1018,3246],[971,1018,1618,1619],[397,971,1018,3239],[971,1018,3239,3240],[971,1018,3249],[302,971,1018],[52,303,304,305,306,307,308,309,310,311,312,313,314,315,971,1018],[255,289,971,1018],[262,971,1018],[252,302,397,971,1018],[320,321,322,323,324,325,326,327,971,1018],[257,971,1018],[302,397,971,1018],[316,319,328,971,1018],[317,318,971,1018],[293,971,1018],[257,258,259,260,971,1018],[330,971,1018],[275,971,1018],[330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,971,1018],[358,971,1018],[353,354,971,1018],[355,357,971,1018,1048],[51,261,302,329,352,357,359,366,389,394,396,971,1018],[57,255,971,1018],[56,971,1018],[57,247,248,475,480,971,1018],[247,255,971,1018],[56,246,971,1018],[255,368,971,1018],[249,370,971,1018],[246,250,971,1018],[56,302,971,1018],[254,255,971,1018],[267,971,1018],[269,270,271,272,273,971,1018],[261,971,1018],[261,262,277,281,971,1018],[275,276,282,283,284,971,1018],[53,54,55,56,57,247,248,249,250,251,252,253,254,255,256,262,267,268,274,281,285,286,287,289,297,298,299,300,301,971,1018],[280,971,1018],[263,264,265,266,971,1018],[255,263,264,971,1018],[255,261,262,971,1018],[255,265,971,1018],[255,293,971,1018],[288,290,291,292,293,294,295,296,971,1018],[53,255,971,1018],[289,971,1018],[53,255,288,292,294,971,1018],[264,971,1018],[290,971,1018],[255,289,290,291,971,1018],[279,971,1018],[255,259,279,297,971,1018],[277,278,280,971,1018],[251,253,262,268,277,282,298,299,302,971,1018],[57,251,253,256,298,299,971,1018],[260,971,1018],[246,971,1018],[279,302,360,364,971,1018],[364,365,971,1018],[302,360,971,1018],[302,360,361,971,1018],[361,362,971,1018],[361,362,363,971,1018],[256,971,1018],[381,382,971,1018],[381,971,1018],[382,383,384,385,386,387,971,1018],[380,971,1018],[372,382,971,1018],[382,383,384,385,386,971,1018],[256,381,382,385,971,1018],[367,373,374,375,376,377,378,379,388,971,1018],[256,302,373,971,1018],[256,372,971,1018],[256,372,397,971,1018],[249,255,256,368,369,370,371,372,971,1018],[246,302,368,369,390,971,1018],[302,368,971,1018],[392,971,1018],[329,390,971,1018],[390,391,393,971,1018],[279,356,971,1018],[288,971,1018],[261,302,971,1018],[395,971,1018],[397,971,1018,1264],[246,971,1018,1255,1260],[971,1018,1254,1260,1264,1265,1266,1269],[971,1018,1260],[971,1018,1261,1262],[971,1018,1255,1261,1263],[971,1018,1256,1257,1258,1259],[971,1018,1267,1268],[971,1018,1260,1264,1270],[971,1018,1270],[277,281,302,397,971,1018],[444,971,1018],[302,397,464,465,971,1018],[446,971,1018],[397,458,463,464,971,1018],[468,469,971,1018],[57,302,459,464,478,971,1018],[397,445,471,971,1018],[56,397,472,475,971,1018],[302,459,464,466,477,479,483,971,1018],[56,481,482,971,1018],[472,971,1018],[246,302,397,486,971,1018],[302,397,459,464,466,478,971,1018],[485,487,488,971,1018],[302,464,971,1018],[464,971,1018],[302,397,486,971,1018],[56,302,397,971,1018],[302,397,458,459,464,484,486,489,492,497,498,511,512,971,1018],[246,444,971,1018],[471,474,513,971,1018],[498,510,971,1018],[51,445,466,467,470,473,505,510,514,517,521,522,523,525,527,533,535,971,1018],[302,397,452,460,463,464,971,1018],[302,456,971,1018],[302,397,446,455,456,457,458,463,464,466,536,971,1018],[458,459,462,464,500,509,971,1018],[302,397,451,463,464,971,1018],[499,971,1018],[397,459,464,971,1018],[397,452,459,463,504,971,1018],[302,397,446,451,463,971,1018],[397,457,458,462,502,506,507,508,971,1018],[397,452,459,460,461,463,464,971,1018],[255,397,971,1018],[302,446,459,462,464,971,1018],[463,971,1018],[448,449,450,459,463,464,503,971,1018],[455,504,515,516,971,1018],[397,446,464,971,1018],[397,446,971,1018],[447,448,449,450,453,455,971,1018],[452,971,1018],[454,455,971,1018],[397,447,448,449,450,453,454,971,1018],[490,491,971,1018],[302,459,464,466,478,971,1018],[501,971,1018],[286,971,1018],[267,302,518,519,971,1018],[520,971,1018],[302,466,971,1018],[302,459,466,971,1018],[280,302,397,452,459,460,461,463,464,971,1018],[277,279,302,397,445,459,466,504,522,971,1018],[280,281,397,444,524,971,1018],[494,495,496,971,1018],[397,493,971,1018],[526,971,1018],[397,971,1018,1046],[529,531,532,971,1018],[528,971,1018],[530,971,1018],[397,458,463,529,971,1018],[476,971,1018],[302,397,446,459,463,464,466,501,502,504,505,971,1018],[534,971,1018],[397,971,1018,2135],[971,1018,1535],[971,1018,2136,2137,2138],[302,971,1018,1535],[971,1018,2135],[971,1018,2139],[971,1018,2192],[971,1018,2191],[397,971,1018,2191],[971,1018,2186,2187,2193,2194,2195],[971,1018,2186],[971,1018,2188,2189,2190],[51,397,971,1018,2427],[51,397,971,1018],[971,1018,2248,2425,2427],[971,1018,2247,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447],[971,1018,2427],[51,971,1018,2248,2425,2427],[971,1018,2425,2441],[51,971,1018],[971,1018,2425],[51,971,1018,2427],[536,971,1018,2350,2427,2503],[971,1018,2504],[971,1018,2420,2507],[971,1018,2350,2427,2501,2502,2509],[971,1018,2508,2510],[971,1018,2350,2419],[971,1018,2420,2506],[971,1018,2350,2352,2427,2481,2482,2501],[971,1018,2350,2420,2427,2501,2502],[302,536,971,1018,2422,2504,2506,2512],[971,1018,2420,2427,2448,2484,2485,2486,2498,2503,2505,2506,2507,2511,2512,2513,2514,2517,2521,2522,2525,2532,2533,2534],[971,1018,2350,2351],[971,1018,2448],[302,397,971,1018,2350,2352,2416,2420,2421,2427],[971,1018,2248,2351,2352,2353,2354,2355,2421,2422,2423,2424,2425,2426],[397,971,1018,2350],[971,1018,2248],[971,1018,2350,2515,2516],[971,1018,2350,2427,2459,2463,2473],[971,1018,2350,2450],[971,1018,2350,2459],[971,1018,2350,2427,2459,2462,2463,2472,2473],[971,1018,2350,2427,2449,2460,2472],[971,1018,2350,2427,2453,2462,2463,2465,2466,2467,2472,2474],[971,1018,2350,2427,2475],[971,1018,2350,2427,2453,2462,2463,2466,2469,2472,2474],[971,1018,2350,2453,2472],[971,1018,2350,2427,2472],[971,1018,2350,2427,2452,2453,2463,2466,2474],[971,1018,2350,2459,2467,2472],[971,1018,2350,2427,2476,2477,2478,2479,2480],[971,1018,2481,2482,2519,2520],[971,1018,2450,2454],[971,1018,2450,2451,2452,2454,2455,2456,2457,2458],[971,1018,2427,2455],[971,1018,2455],[971,1018,2427,2449],[971,1018,2351,2427,2449,2450,2451],[397,971,1018,2427,2449,2450,2451],[397,971,1018,2427],[397,971,1018,2350,2427,2449],[971,1018,2518],[971,1018,2350,2461,2464,2468,2470,2471],[397,971,1018,2459,2465,2469],[971,1018,2427,2461,2464,2468,2470,2471,2472],[463,464,971,1018,2483],[397,486,971,1018],[397,486,971,1018,2485],[971,1018,2350,2490,2497],[971,1018,2484,2485,2486,2498,2499,2500],[455,463,464,513,536,971,1018,2427,2447,2483,2484,2504],[464,536,971,1018,2350,2422,2427,2484],[397,971,1018,2424],[971,1018,2523,2524],[971,1018,2459],[971,1018,2526,2528,2529,2530,2531],[397,971,1018,2527],[971,1018,2263,2350],[971,1018,2350,2362],[971,1018,2357],[971,1018,2350,2357],[971,1018,2350,2360],[971,1018,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415],[971,1018,2350,2356],[971,1018,2387],[971,1018,2350,2358,2362],[971,1018,2362],[971,1018,2350,2361,2362],[971,1018,3150,3152,3153,3154,3155,3156],[397,971,1018,3150,3151],[971,1018,3157],[397,961,963,971,1018],[960,963,964,965,971,1018,1078,1079],[961,962,971,1018],[397,961,971,1018],[971,1018,1077],[963,971,1018],[971,1018,1080],[971,1018,1296],[971,1018,1297,1298,1299],[971,1018,1278],[971,1018,1279,1300,1301,1302,1303],[397,971,1018,1301],[971,1018,1304],[397,400,401,971,1018],[400,401,971,1018],[400,971,1018],[414,971,1018],[397,400,971,1018],[398,399,402,403,404,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,971,1018],[400,425,971,1018],[51,421,425,426,427,432,434,971,1018],[400,423,424,971,1018],[400,422,971,1018],[397,425,971,1018],[428,429,430,431,971,1018],[433,971,1018],[435,971,1018],[439,440,441,442,443,537,538,539,541,542,971,1018],[302,439,440,971,1018],[438,971,1018],[441,971,1018],[397,439,440,441,536,971,1018],[397,438,441,971,1018],[397,441,971,1018],[397,439,441,971,1018],[397,438,439,540,971,1018],[943,944,971,1018],[397,941,942,971,1018],[246,397,941,942,971,1018],[945,947,948,971,1018],[941,971,1018],[946,971,1018],[397,941,971,1018],[397,941,942,946,971,1018],[949,971,1018],[971,1018,1388],[971,1018,1391],[971,1018,1395,1397],[971,1018,1384,1388,1399,1400],[971,1018,1410,1413,1419,1421],[971,1018,1383,1388],[971,1018,1382],[971,1018,1383],[971,1018,1390],[971,1018,1393],[971,1018,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1422,1423,1424,1425,1426,1427],[971,1018,1398],[971,1018,1394],[971,1018,1395],[971,1018,1387,1388],[971,1018,1394,1395],[971,1018,1401],[971,1018,1422],[971,1018,1387],[971,1018,1388,1404,1407],[971,1018,1403],[971,1018,1404],[971,1018,1402,1404],[971,1018,1388,1407,1409,1410,1411],[971,1018,1410,1411,1413],[971,1018,1388,1402,1405,1408,1415],[971,1018,1402,1403],[971,1018,1385,1386,1402,1404,1405,1406],[971,1018,1404,1407],[971,1018,1386,1387,1405,1408],[971,1018,1388,1407,1409],[971,1018,1410,1411],[971,1018,2846,2847,2848,2849],[971,1018,2778,2848],[971,1018,2850,2853,2859],[971,1018,2851,2852],[971,1018,2854],[971,1018,2778,2856,2857],[971,1018,2856,2857,2858],[971,1018,2855],[971,1018,2931],[971,1018,2778,2911],[971,1018,2778,2898,2930,2935],[971,1018,2778,2930,2933,2934],[971,1018,2912,2913,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944],[971,1018,2778,2898],[971,1018,2778,2930,2935],[971,1018,2778,2934],[971,1018,2778,2942],[971,1018,2914,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928],[971,1018,2778,2915],[971,1018,2778,2922],[971,1018,2778,2917],[971,1018,2778,2923],[971,1018,2971],[971,1018,2968,2969,2972,2973,2974,2975,2976,2977,2978,2979],[971,1018,2932],[971,1018,2945],[971,1018,2929],[971,1018,2980],[971,1018,2778,2861,2862],[971,1018,2863,2864],[971,1018,2861,2862,2865,2866,2867,2868],[971,1018,2880,2881,2882,2883,2884,2885,2886,2887],[971,1018,2778,2878,2880],[971,1018,2778,2879],[971,1018,2778,2884],[971,1018,2778,2829,2842,2843],[971,1018,2778,2841],[971,1018,2829,2842,2843,2844],[971,1018,2891],[971,1018,2892],[971,1018,2778,2894],[971,1018,2778,2889,2890],[971,1018,2889,2890,2891,2893,2894,2895,2896,2897],[971,1018,2830,2831,2832,2833,2835,2836,2837,2838,2839,2840],[971,1018,2778,2834],[971,1018,2778,2835],[971,1018,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997],[971,1018,2778,2987],[971,1018,2946],[971,1018,2778,2869],[971,1018,2899],[971,1018,2778,2956,2957],[971,1018,2958],[971,1018,2778,2899,2947,2948,2949,2950,2951,2952,2953,2954,2955,2959,2960,2961,2962,2963,2964,2965,2966,2967,2981],[971,1018,2710],[971,1018,2709],[971,1018,2713,2722,2723,2724],[971,1018,2722,2725],[971,1018,2713,2720],[971,1018,2713,2725],[971,1018,2711,2712,2723,2724,2725,2726],[971,1018,1048,2729],[971,1018,2731],[971,1018,2714,2715,2721,2722],[971,1018,2714,2722],[971,1018,2734,2736,2737],[971,1018,2734,2735],[971,1018,2739],[971,1018,2711],[971,1018,2716,2741],[971,1018,2741],[971,1018,2741,2742,2743,2744,2745],[971,1018,2744],[971,1018,2718],[971,1018,2741,2742,2743],[971,1018,2714,2720,2722],[971,1018,2731,2732],[971,1018,2747],[971,1018,2747,2751],[971,1018,2747,2748,2751,2752],[971,1018,2721,2750],[971,1018,2728],[971,1018,2710,2719],[971,1018,1032,1034,2718,2720],[971,1018,2713],[971,1018,2713,2755,2756,2757],[971,1018,2710,2714,2715,2716,2717,2718,2719,2720,2721,2722,2727,2730,2731,2732,2733,2735,2738,2739,2740,2746,2749,2750,2753,2754,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2774,2775,2776,2777],[971,1018,2711,2715,2716,2717,2718,2721,2725],[971,1018,2715,2733],[971,1018,2749],[971,1018,2714,2716,2722,2761,2763,2765],[971,1018,2714,2716,2722,2761,2762,2763,2764],[971,1018,2765],[971,1018,2720,2721,2735,2765],[971,1018,2714,2720],[971,1018,2720,2739,2756],[971,1018,2721,2731,2732],[971,1018,1032,1048,2729,2761],[971,1018,2714,2715,2771,2772],[971,1018,1032,1033,2715,2720,2733,2761,2770,2771,2772,2773],[971,1018,2715,2733,2749],[971,1018,2720],[971,1018,2778,2870,2871],[971,1018,2778,2870],[971,1018,2871],[971,1018,2870,2871,2872,2873,2874,2875,2876,2877],[971,1018,1048,2778],[971,1018,2902],[971,1018,1048,2901,2903],[971,1018,1048],[971,1018,2900,2901,2904,2905,2906,2907,2908,2909,2910],[971,1018,2970],[971,1018,2417],[971,1018,1032,1066,1073],[971,1018,1032,1066],[971,1018,1029,1032,1066,1067,1068,1069],[971,1018,1070,1072,1074,1075],[971,1018,1288],[971,1018,1281],[971,1018,1280,1282,1284,1285,1289],[971,1018,1282,1283,1286],[971,1018,1280,1283,1286],[971,1018,1282,1284,1286],[971,1018,1280,1281,1283,1284,1285,1286,1287],[971,1018,1280,1286],[971,1018,1282],[971,1015,1018],[971,1017,1018],[971,1018,1023,1051],[971,1018,1019,1024,1029,1037,1048,1059,1334],[971,1018,1019,1020,1029,1037],[966,967,968,971,1018],[971,1018,1021,1060],[971,1018,1022,1023,1030,1038],[971,1018,1023,1048,1056,1334],[971,1018,1024,1026,1029,1037,1334],[971,1017,1018,1025],[971,1018,1026,1027],[971,1018,1028,1029],[971,1017,1018,1029],[971,1018,1029,1030,1031,1048,1059,1334],[971,1018,1029,1030,1031,1044,1048,1051,1334],[971,1018,1026,1029,1032,1037,1048,1059,1334],[971,1018,1029,1030,1032,1033,1037,1048,1056,1059,1334],[971,1018,1032,1034,1048,1056,1059,1334],[971,1018,1029,1035],[971,1018,1036,1059,1064],[971,1018,1026,1029,1037,1048,1334],[971,1018,1038],[971,1018,1039],[971,1017,1018,1040],[971,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1334],[971,1018,1042],[971,1018,1043],[971,1018,1029,1044,1045],[971,1018,1044,1046,1060,1062],[971,1018,1029,1048,1049,1051,1334],[971,1018,1050,1051,1334],[971,1018,1048,1049],[971,1018,1051],[971,1018,1052],[971,1015,1018,1048,1053],[971,1018,1029,1054,1055],[971,1018,1054,1055],[971,1018,1023,1037,1048,1056,1334],[971,1018,1057],[1018],[969,970,971,972,973,974,975,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065],[971,1018,1037,1058],[971,1018,1032,1043,1059,1334],[971,1018,1023,1060],[971,1018,1048,1061,1334],[971,1018,1036,1062,1334],[971,1018,1063],[971,1013,1018],[971,1013,1018,1029,1031,1040,1048,1051,1059,1062,1064],[971,1018,1048,1065,1334],[971,1018,1066,2692,2694,2698,2699,2700,2701,2702,2703],[971,1018,1048,1066],[971,1018,1029,1066,2692,2694,2695,2697,2704],[971,1018,1029,1037,1048,1059,1066,2691,2692,2693,2695,2696,2697,2704],[971,1018,1048,1066,2694,2695],[971,1018,1048,1066,2694],[971,1018,1066,2692,2694,2695,2697,2704],[971,1018,1048,1066,2696],[971,1018,1029,1037,1048,1056,1066,2693,2695,2697],[971,1018,1029,1066,2692,2694,2695,2696,2697,2704],[971,1018,1029,1048,1066,2692,2693,2694,2695,2696,2697,2704],[971,1018,1029,1048,1066,2692,2694,2695,2697,2704],[971,1018,1032,1048,1066,2697],[971,1018,1032,1076],[971,1018,1030,1048,1066],[971,1018,1032,1066,1071],[971,1018,1131,1132,1133,1134,1135,1136,1137,1138,1139],[971,1018,1029,1032,1034,1037,1048,1056,1059,1065,1066],[971,1018,1029,1605],[971,1018,1619,2131],[971,1018,1655],[971,1018,1622,1655],[971,1018,1622],[971,1018,1622,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2010],[971,1018,1622,1655,2009],[971,1018,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2025,2026,2027,2028,2029,2030,2031,2032,2033],[971,1018,1622,2024],[971,1018,1622,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2025],[971,1018,2034],[971,1018,1621,1622,1655,1694,1882,1973,1977,1981],[971,1018,1066,1622,1971],[971,1018,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968],[971,1018,1029,1066,1620,1622,1655,1736,1821,1969,1970,1971,1972,1974,1975,1976],[971,1018,1622,1969,1974],[971,1018,1066,1622],[971,1018,1029,1037,1056,1066,1622],[971,1018,1048,1066,1622,1971,1977,1981],[971,1018,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968],[971,1018,1029,1066,1622,1971,1977,1978,1979,1980],[971,1018,1622,1974,1978],[971,1018,1749],[971,1018,1622,1655,1754],[971,1018,1622,1756],[971,1018,1622,1655,1759],[971,1018,1622,1761],[971,1018,1622,1645],[971,1018,1066],[971,1018,1672],[971,1018,1694],[971,1018,1622,1655,1782],[971,1018,1622,1655,1784],[971,1018,1622,1655,1786],[971,1018,1622,1655,1788],[971,1018,1622,1655,1792],[971,1018,1622,1637],[971,1018,1622,1803],[971,1018,1622,1818],[971,1018,1622,1655,1819],[971,1018,1622,1655,1821],[971,1018,1066,1620,1621,1977],[971,1018,1622,1655,1831],[971,1018,1622,1831],[971,1018,1622,1841],[971,1018,1622,1655,1851],[971,1018,1622,1896],[971,1018,1622,1910],[971,1018,1622,1912],[971,1018,1622,1655,1935],[971,1018,1622,1655,1939],[971,1018,1622,1655,1945],[971,1018,1622,1655,1947],[971,1018,1622,1949],[971,1018,1622,1655,1950],[971,1018,1622,1655,1952],[971,1018,1622,1655,1955],[971,1018,1622,1655,1966],[971,1018,1622,1973],[971,1018,1622,2036,2037,2038,2039,2040,2041,2042,2043,2044],[971,1018,1622,2045],[971,1018,1622,2042,2045],[971,1018,1622,1977,2042,2043,2045],[971,1018,2045,2046],[971,1018,2070],[971,1018,1622,2070],[971,1018,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069],[971,1018,1622,2106],[971,1018,1622,2074],[971,1018,2106],[971,1018,1622,2075],[971,1018,1622,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105],[971,1018,2074,2106],[971,1018,1622,2091,2106],[971,1018,1622,2091],[971,1018,2098],[971,1018,2098,2099,2100],[971,1018,2074,2091,2106],[971,1018,2129],[971,1018,2108,2129],[971,1018,1622,2129],[971,1018,1622,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128],[971,1018,2117],[971,1018,1622,2120,2129],[971,1018,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2025,2026,2027,2028,2029,2030,2031,2032,2033,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2130],[971,1018,1029,1618],[971,1018,1568],[971,1018,1570,1571,1572,1573,1574,1575,1576],[971,1018,1559],[971,1018,1560,1568,1569,1577],[971,1018,1561],[971,1018,1555],[971,1018,1552,1553,1554,1555,1556,1557,1558,1561,1562,1563,1564,1565,1566,1567],[971,1018,1560,1562],[971,1018,1563,1568],[971,1018,1103],[971,1018,1102,1103,1108],[971,1018,1104,1105,1106,1107,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227],[971,1018,1103,1140],[971,1018,1103,1180],[971,1018,1102],[971,1018,1098,1099,1100,1101,1102,1103,1108,1228,1229,1230,1231,1235],[971,1018,1108],[971,1018,1100,1233,1234],[971,1018,1102,1232],[971,1018,1103,1108],[971,1018,1098,1099],[971,1018,1289,1292,1294,1295],[971,1018,1289,1294,1295],[971,1018,1289,1290,1294],[971,1018,1019,1289,1291,1292,1293],[971,1018,1029,1066],[971,1018,2543,2544,2545],[971,1018,2543],[971,1018,2542],[971,1018,1029,1066,2543],[971,1018,2350,2487],[971,1018,2487,2488,2489],[971,1018,2250,2251,2257,2258],[971,1018,2259,2324,2325],[971,1018,2250,2257,2259],[971,1018,2251,2259],[971,1018,2250,2252,2253,2254,2257,2259,2262,2263,2534],[971,1018,2253,2264,2278,2279],[971,1018,2250,2257,2262,2263,2264,2534],[971,1018,2250,2252,2257,2259,2261,2262,2263,2534],[971,1018,2250,2251,2262,2263,2264,2534],[971,1018,2249,2265,2270,2277,2280,2281,2323,2326,2349],[971,1018,2250],[971,1018,2251,2255,2256],[971,1018,2251,2255,2256,2257,2258,2260,2271,2272,2273,2274,2275,2276],[971,1018,2251,2256,2257],[971,1018,2251],[971,1018,2250,2251,2256,2257,2259,2272],[971,1018,2257],[971,1018,2251,2257,2258],[971,1018,2255,2257],[971,1018,2264,2278],[971,1018,2250,2252,2253,2254,2257,2262],[971,1018,2250,2257,2260,2263,2534],[971,1018,2253,2261,2262,2263,2266,2267,2268,2269,2534],[971,1018,2263,2534],[971,1018,2250,2252,2257,2259,2261,2263,2534],[971,1018,2259,2262],[971,1018,2259],[971,1018,2250,2257,2263,2534],[971,1018,2251,2257,2262,2273],[971,1018,2262,2327],[971,1018,2259,2263,2534],[971,1018,2257,2262],[971,1018,2262],[971,1018,2250,2260],[971,1018,2250,2257],[971,1018,2257,2262,2263,2534],[971,1018,2282,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348],[971,1018,2262,2263,2534],[971,1018,2251,2257,2261,2262,2263,2534],[971,1018,2252,2257],[971,1018,2250,2257,2261,2262,2263,2275,2534],[971,1018,2250,2252,2257,2263,2534],[971,1018,2250,2252,2257],[971,1018,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322],[971,1018,2275,2283],[971,1018,2283,2285],[971,1018,2250,2257,2259,2262,2282,2283],[971,1018,2250,2257,2259,2261,2262,2263,2275,2282,2534],[971,1018,1032,1034,1059],[971,1018,1026,1066,1589,1596,1597],[971,1018,1029,1066,1584,1585,1586,1588,1589,1597,1598,1603],[971,1018,1026,1066],[971,1018,1066,1584],[971,1018,1584],[971,1018,1590],[971,1018,1029,1056,1066,1584,1590,1592,1593,1598],[971,1018,1592],[971,1018,1596],[971,1018,1037,1056,1066,1584,1590],[971,1018,1029,1066,1584,1600,1601],[971,1018,1584,1585,1586,1587,1590,1594,1595,1596,1597,1598,1599,1603,1604],[971,1018,1585,1589,1599,1603],[971,1018,1029,1066,1584,1585,1586,1588,1589,1596,1599,1600,1602],[971,1018,1589,1591,1594,1595],[971,1018,1585],[971,1018,1587],[971,1018,1037,1056,1066],[971,1018,1584,1585,1587],[971,1018,2142],[971,1018,1179],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,181,190,192,193,194,195,196,197,199,200,202,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,971,1018],[103,971,1018],[59,62,971,1018],[61,971,1018],[61,62,971,1018],[58,59,60,62,971,1018],[59,61,62,219,971,1018],[62,971,1018],[58,61,103,971,1018],[61,62,219,971,1018],[61,227,971,1018],[59,61,62,971,1018],[71,971,1018],[94,971,1018],[115,971,1018],[61,62,103,971,1018],[62,110,971,1018],[61,62,103,121,971,1018],[61,62,121,971,1018],[62,162,971,1018],[62,103,971,1018],[58,62,180,971,1018],[58,62,181,971,1018],[203,971,1018],[187,189,971,1018],[198,971,1018],[187,971,1018],[58,62,180,187,188,971,1018],[180,181,189,971,1018],[201,971,1018],[58,62,187,188,189,971,1018],[60,61,62,971,1018],[58,62,971,1018],[59,61,181,182,183,184,971,1018],[103,181,182,183,184,971,1018],[181,183,971,1018],[61,182,183,185,186,190,971,1018],[58,61,971,1018],[62,205,971,1018],[63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,971,1018],[191,971,1018],[971,1018,2257,2264,2491],[971,1018,2492,2494,2495,2496],[971,1018,1032,1066,2350,2493],[971,1018,2418],[621,742,971,1018],[560,941,971,1018],[624,971,1018],[733,971,1018],[729,733,971,1018],[729,971,1018],[575,617,618,619,620,622,623,733,971,1018],[560,561,570,575,618,622,625,629,661,677,678,680,682,690,691,692,693,729,730,731,732,735,742,759,971,1018],[695,697,699,700,710,712,713,714,715,716,717,718,720,722,723,724,725,728,971,1018],[564,566,567,597,841,842,843,844,845,846,971,1018],[567,971,1018],[564,567,971,1018],[850,851,852,971,1018],[859,971,1018],[564,857,971,1018],[887,971,1018],[875,971,1018],[617,971,1018],[560,598,971,1018],[874,971,1018],[565,971,1018],[564,565,566,971,1018],[605,971,1018],[555,556,557,971,1018],[601,971,1018],[564,971,1018],[596,971,1018],[555,971,1018],[564,565,971,1018],[602,603,971,1018],[558,560,971,1018],[759,971,1018],[613,614,971,1018],[556,971,1018],[895,971,1018],[624,719,971,1018],[971,1018,1056],[624,625,694,971,1018],[556,557,564,570,572,574,588,589,590,593,594,624,625,627,628,735,741,742,971,1018],[624,635,971,1018],[572,574,592,625,627,633,635,649,662,666,670,677,733,739,741,742,971,1018],[633,634,971,1018,1026,1037,1056],[624,625,696,971,1018],[624,711,971,1018],[624,625,698,971,1018],[624,721,971,1018],[625,726,727,971,1018],[591,971,1018],[701,702,703,704,705,706,707,708,971,1018],[624,625,709,971,1018],[560,561,570,635,637,641,642,643,644,645,672,674,675,676,678,680,681,682,687,688,689,691,733,742,759,971,1018],[561,570,588,635,638,642,646,647,671,672,674,675,676,690,733,735,971,1018],[690,733,742,971,1018],[616,971,1018],[561,598,971,1018],[564,565,597,599,971,1018],[595,600,604,605,606,607,608,609,610,611,612,615,941,971,1018],[554,555,556,557,561,601,602,603,971,1018],[777,971,1018],[735,777,971,1018],[564,588,620,777,971,1018],[561,777,971,1018],[693,777,971,1018],[777,778,779,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,971,1018],[577,777,971,1018],[577,735,777,971,1018],[777,781,971,1018],[629,777,971,1018],[632,971,1018],[641,971,1018],[630,637,638,639,640,971,1018],[565,570,631,971,1018],[635,971,1018],[570,641,642,679,735,759,971,1018],[632,635,636,971,1018],[646,971,1018],[570,641,971,1018],[632,636,971,1018],[570,632,971,1018],[560,561,570,677,678,680,690,691,729,730,733,759,772,773,971,1018],[51,558,560,561,564,565,567,570,571,572,573,574,575,595,596,600,601,603,604,605,616,617,618,619,620,623,625,626,627,629,630,631,632,635,636,637,638,639,640,641,642,643,644,645,648,649,651,652,653,654,655,656,657,658,659,660,661,663,666,667,670,672,673,674,675,676,677,678,679,680,683,684,686,687,688,690,691,692,693,729,733,735,738,739,740,741,742,752,753,755,756,757,758,759,773,774,775,776,840,847,848,849,853,854,855,856,858,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,888,889,890,891,892,893,894,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,928,929,930,931,932,933,934,935,936,938,940,971,1018],[618,619,742,971,1018],[618,742,921,971,1018],[618,619,742,921,971,1018],[742,971,1018],[618,971,1018],[567,568,971,1018],[582,971,1018],[561,971,1018],[555,556,557,559,562,971,1018],[762,971,1018],[563,569,578,579,583,585,615,664,668,734,736,760,761,762,763,764,765,766,767,768,769,770,771,971,1018],[554,558,559,562,971,1018],[605,606,941,971,1018],[575,664,735,971,1018],[564,565,569,570,577,587,733,735,971,1018],[577,578,580,581,584,586,588,733,735,737,971,1018],[570,582,583,587,735,971,1018],[570,576,577,580,581,584,586,587,588,605,606,613,614,615,665,669,733,734,737,941,971,1018],[575,668,735,971,1018],[555,556,557,575,588,735,971,1018],[575,587,588,735,736,971,1018],[577,735,759,760,971,1018],[570,577,579,735,759,971,1018],[554,555,556,557,559,563,570,576,587,588,735,971,1018],[588,971,1018],[555,575,585,587,588,735,971,1018],[692,971,1018],[693,733,742,971,1018],[575,741,971,1018],[575,934,971,1018],[574,741,971,1018],[570,577,588,735,780,971,1018],[577,588,781,971,1018],[620,971,1018,1029,1030,1048],[735,971,1018],[683,971,1018],[561,570,676,683,684,733,742,758,971,1018],[570,628,684,971,1018],[561,570,588,672,674,685,758,971,1018],[577,733,735,744,751,971,1018],[684,971,1018],[561,570,588,605,629,672,684,733,735,742,743,744,750,751,752,753,754,755,756,757,759,971,1018],[570,577,588,605,628,733,735,743,744,745,746,747,748,749,750,758,971,1018],[570,971,1018],[577,735,751,759,971,1018],[570,577,733,742,759,971,1018],[570,758,971,1018],[673,971,1018],[570,673,971,1018],[561,570,577,605,633,637,638,639,640,642,683,684,735,742,748,749,751,758,971,1018],[561,570,605,675,683,684,733,742,758,971,1018],[570,735,971,1018],[570,605,672,675,683,684,733,742,758,971,1018],[570,684,971,1018],[570,572,574,592,625,627,633,649,662,666,670,673,682,690,733,739,741,971,1018],[560,570,680,690,691,759,971,1018],[561,635,637,641,642,643,644,645,672,674,675,676,687,688,689,691,759,927,971,1018],[570,635,641,642,646,647,677,691,742,759,971,1018],[561,570,635,637,641,642,643,644,645,672,674,675,676,687,688,689,690,742,759,941,971,1018],[570,679,691,759,971,1018],[686,971,1018],[628,685,686,971,1018],[571,626,648,663,667,738,971,1018],[571,588,592,593,733,735,742,971,1018],[592,971,1018],[572,627,629,649,666,670,735,739,740,971,1018],[663,665,971,1018],[571,971,1018],[667,669,971,1018],[576,626,629,971,1018],[737,738,971,1018],[586,648,971,1018],[573,941,971,1018],[570,577,588,650,661,735,742,971,1018],[651,652,653,654,655,656,657,658,659,660,971,1018],[570,690,733,735,742,971,1018],[690,733,735,742,971,1018],[655,971,1018],[570,577,588,690,733,735,742,971,1018],[572,574,588,591,617,627,632,636,649,666,670,677,684,730,735,739,741,752,753,754,755,756,757,759,781,927,928,929,937,971,1018],[690,735,939,971,1018],[971,985,989,1018,1059],[971,985,1018,1048,1059],[971,980,1018],[971,982,985,1018,1056,1059],[971,1018,1037,1056],[971,980,1018,1066],[971,982,985,1018,1037,1059],[971,977,978,981,984,1018,1029,1048,1059],[971,985,992,1018],[971,977,983,1018],[971,985,1006,1007,1018],[971,981,985,1018,1051,1059,1066],[971,1006,1018,1066],[971,979,980,1018,1066],[971,985,1018],[971,979,980,981,982,983,984,985,986,987,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1007,1008,1009,1010,1011,1012,1018],[971,985,1000,1018],[971,985,992,993,1018],[971,983,985,993,994,1018],[971,984,1018],[971,977,980,985,1018],[971,985,989,993,994,1018],[971,989,1018],[971,983,985,988,1018,1059],[971,977,982,985,992,1018],[971,980,985,1006,1018,1064,1066],[971,1018,1372],[971,1018,1059,1336,1339,1342,1343],[971,1018,1048,1059,1339],[971,1018,1059,1339,1343],[971,1018,1333],[971,1018,1337],[971,1018,1059,1335,1336,1339],[971,1018,1066,1333],[971,1018,1037,1059,1335,1339],[971,1018,1029,1048,1059,1330,1331,1332,1334,1338],[971,1018,1339,1348,1356],[971,1018,1331,1337],[971,1018,1339,1366,1367],[971,1018,1051,1059,1066,1331,1334,1339],[971,1018,1066,1333,1334],[971,1018,1339],[971,1018,1059,1335,1339],[971,1018,1330],[971,1018,1333,1334,1335,1337,1338,1339,1340,1341,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1367,1368,1369,1370,1371],[971,1018,1026,1339,1359,1362],[971,1018,1339,1348,1349,1350],[971,1018,1337,1339,1349,1351],[971,1018,1338],[971,1018,1331,1333,1339],[971,1018,1339,1343,1349,1351],[971,1018,1343],[971,1018,1059,1337,1339,1342],[971,1018,1331,1335,1339,1348],[971,1018,1048,1334],[971,1018,1339,1359],[971,1018,1351],[971,1018,1331,1335,1339,1343],[971,1018,1051,1064,1066,1333,1334,1339,1366],[971,1018,3117,3118,3119,3120,3121,3122,3123,3125,3126,3127,3128,3129,3130,3131,3132],[971,1018,3119],[971,1018,3119,3124],[397,955,956,957,958,959,971,1018,1083,1088,1089,1090],[397,950,951,952,953,954,955,956,957,958,959,971,1018,1091],[397,941,950,952,954,971,1018],[397,941,950,951,952,954,971,1018],[397,553,941,950,952,954,957,971,1018],[941,954,971,1018],[941,951,954,971,1018],[941,952,953,971,1018],[941,952,971,1018],[397,941,950,951,952,953,954,971,1018],[397,941,950,952,954,957,958,971,1018],[397,971,1018,1093,1096],[397,971,1018,1095],[971,1018,1236],[397,436,971,1018],[397,437,549,971,1018],[397,971,1018,1083,1246],[397,950,971,1018,1240,1241,1242,1243,1244,1245,1246,1247,1248],[397,941,950,971,1018,1238,1240,1241,1242,1243,1244,1245],[436,971,1018,1236],[436,971,1018,1250],[941,971,1018,1240,1243],[941,971,1018,1238,1241,1242],[941,971,1018,1240],[941,971,1018,1239,1241],[397,941,950,971,1018,1240],[397,971,1018,1239,1240],[941,971,1018,1252],[397,941,950,971,1018,1252,1253,1271,1272,1273],[397,971,1018,1252],[397,971,1018,1252,1274],[397,971,1018,1274,1305],[397,971,1018,1088],[397,971,1018,1081,1082],[397,536,971,1018,1088,1089],[436,971,1018,1236,1308,1309,1310],[436,971,1018,1236,1312],[941,971,1018,1308,1309,1310],[941,971,1018,1312,1316],[971,1018,1310],[397,971,1018,1271,1325,1536],[544,971,1018],[397,436,971,1018,1083,1088,1089,1090,1541],[971,1018,1271],[397,941,971,1018,1543],[397,941,971,1018,1545],[397,971,1018,1550],[971,1018,1236,1538,1578],[397,543,971,1018,1076],[179,246,397,536,971,1018,1541,1547],[179,246,397,536,971,1018,1076,1548,1606],[397,971,1018,1606,1607],[397,971,1018,1609],[397,971,1018,1271],[397,971,1018,1023,1271,1605],[397,971,1018,1271,1535],[971,1018,1076],[971,1018,1605],[971,1017,1018,1076],[971,1018,1271,1605,2132],[277,544,971,1018],[971,1018,1271,2140],[971,1018,2143],[436,971,1018,1236,1579],[436,971,1018,1236,2147],[941,971,1018,1084,1087],[941,971,1018,1085,1086,1088],[941,971,1018,1087,1088],[941,971,1018,1085],[397,941,950,971,1018,1084,1085,2148],[397,941,950,971,1018,1084,1085,1087,2149],[397,950,971,1018,2154,2155],[971,1018,2153,2154,2155],[397,941,950,971,1018,2153],[397,436,971,1018,2202,2203,2204,2205],[397,941,950,971,1018,1539,1540,2167,2185,2196,2197,2198,2199,2200,2201,2202,2203,2204],[436,971,1018,1236,1578],[436,971,1018,1236,1578,2197,2199],[436,971,1018,1236,1578,2210,2211],[971,1018,2203,2204,2207,2208,2209,2212,2213,2214,2215,2216,2217],[436,971,1018,2203],[436,971,1018,2209],[436,971,1018,2212],[436,971,1018,2213],[436,941,971,1018,2225],[436,941,971,1018,2223,2224,2226],[436,941,971,1018,2199,2202],[436,941,971,1018,2197,2202],[436,941,971,1018,2198,2200,2201],[436,941,971,1018,2220,2223],[436,941,971,1018,2219,2221,2222,2225],[436,941,971,1018,2227],[436,941,971,1018],[971,1018,2198,2200,2202,2219,2221,2223,2225,2226,2228,2229,2230,2231],[436,941,971,1018,2210,2211,2231],[436,941,971,1018,2230],[971,1018,2197,2199,2201,2210,2211,2220,2222,2224,2227],[397,941,950,971,1018,2213,2216,2219,2234],[397,436,971,1018,2213,2216,2219,2235],[397,941,950,971,1018,1088,2238,2239],[941,971,1018,1088],[941,971,1018,1088,2238],[941,971,1018,1088,2241],[397,941,950,971,1018,2244],[397,941,950,971,1018,1088,2242,2244],[971,1018,1236,2535],[971,1018,2536,2537,2538],[971,1018,1088,1236,2535],[971,1018,2535,2540],[397,971,1018,2535,2540,2546,2547,2548],[397,971,1018,1030,1039,2350],[971,1018,2535],[971,1018,2535,2548],[971,1018,2540,2547,2548],[971,1018,1088,2535,2547],[397,436,536,550,971,1018],[397,971,1018,1321,1540,2167,2185],[397,971,1018,1605,2567],[971,1018,2567],[397,971,1018,1540,2167,2185,2570],[397,971,1018,1428],[397,971,1018,1076,1252,1274,2572],[971,1018,1252],[971,1018,2576,2577,2579],[397,536,971,1018,2575,2578],[397,941,971,1018,2575],[397,971,1018,1076,2575],[397,971,1018,1076],[397,941,950,971,1018,2583],[397,971,1018,2684],[397,941,950,971,1018,2686],[397,971,1018,1271,2704,2705],[397,971,1018,1305,2689],[397,971,1018,1094],[436,971,1018,1236,3111],[397,941,950,971,1018,1271,3044,3110,3111],[397,941,950,971,1018,3114],[397,971,1018,3116,3133],[436,971,1018,1236,3136],[436,971,1018,1236,3138],[941,971,1018,1088,3138],[397,971,1018,3141],[397,971,1018,1605],[971,1018,1236,3144],[971,1018,1236,3144,3146],[971,1018,1236,3148],[971,1018,3145,3158],[941,971,1018,1088,3144],[941,971,1018,3144],[397,971,1018,1540,2167,2185],[436,971,1018,1236,3167],[397,971,1018,1076,3165],[397,544,971,1018,1023,1271],[436,971,1018,1236,1578,3170],[971,1018,3170],[397,971,1018,3169,3170,3172],[436,971,1018,3175],[397,971,1018,1038],[397,971,1018,3174],[397,971,1018,2140],[397,543,545,547,971,1018],[397,547,548,971,1018],[397,546,971,1018],[397,971,1018,1023],[397,971,1018,1023,1271,1305,3227],[397,436,971,1018,1083,1088,1089,1090,3228,3229],[397,971,1018,3228,3229,3230],[397,971,1018,1023,1034,1271,3228],[397,971,1018,1305,3181,3182,3183,3184,3185,3231],[397,971,1018,1305],[397,971,1018,1271,2133,3233,3234],[397,971,1018,1023,1271,1605,3233],[397,971,1018,1539,1619,2196,3250],[397,544,971,1018,1539,1540,2167,2185,2196],[397,544,971,1018,1540,2167,2185,2196],[397,971,1018,1540,2185,3236,3237,3251,3252,3253],[397,971,1018,1539,2196,3236,3237,3251,3252],[397,941,950,971,1018,1616,2574,3255,3256,3257,3258],[397,941,950,971,1018,2574,3255,3257],[397,941,950,971,1018,3258,3259],[436,971,1018,1236,2574],[941,971,1018,2574],[397,941,950,971,1018,2574],[397,436,971,1018,1083,1088,1089,1090,2574,3259,3260,3261,3262,3263],[397,536,971,1018,2535,3262],[397,950,971,1018,2574,2575,2576,2577,2579,3256,3257,3258,3260,3261,3262,3263,3264,3266],[397,941,950,971,1018,2574,3255,3256,3257,3258,3259,3260,3261],[971,1018,1236,1579],[941,971,1018,1086,1087],[971,1018,3271,3272,3273,3274,3275],[397,971,1018,1088,1252,1274],[179,246,397,536,971,1018,1076,1088,3272,3273,3274],[971,1018,1088,3271],[397,971,1018,2167,3277],[397,971,1018,3277,3286],[971,1018,2167],[397,971,1018,2167,3277,3278,3285],[397,971,1018,2167,3278],[971,1018,3279,3280,3281,3282,3283,3284],[397,971,1018,3285,3286,3287]],"referencedMap":[[3213,1],[3186,2],[3189,3],[3190,3],[3191,3],[3192,3],[3193,3],[3194,3],[3195,3],[3196,3],[3197,3],[3218,4],[3198,3],[3199,3],[3200,3],[3201,3],[3202,3],[3203,3],[3204,3],[3205,3],[3206,3],[3207,3],[3208,3],[3209,3],[3210,3],[3211,3],[3212,5],[3214,6],[3227,7],[3187,8],[3226,9],[3188,10],[3225,11],[3221,12],[3224,13],[3220,14],[3222,15],[3223,16],[3215,17],[3219,18],[3217,19],[3216,20],[3091,21],[3045,22],[3048,23],[3049,23],[3050,23],[3051,23],[3052,23],[3053,23],[3054,23],[3055,23],[3056,23],[3057,23],[3058,23],[3059,23],[3060,23],[3061,23],[3062,23],[3063,23],[3064,23],[3065,23],[3096,24],[3066,23],[3067,23],[3068,23],[3069,23],[3070,23],[3071,23],[3072,23],[3073,23],[3074,23],[3075,23],[3076,23],[3077,23],[3078,23],[3079,23],[3080,23],[3081,23],[3082,23],[3083,23],[3084,23],[3085,23],[3086,23],[3087,23],[3088,23],[3089,23],[3090,5],[3092,25],[3110,26],[3046,8],[3109,27],[3047,28],[3108,11],[3107,29],[3098,30],[3099,31],[3100,32],[3101,33],[3102,34],[3103,35],[3105,36],[3104,37],[3106,38],[3093,39],[3097,18],[3095,40],[3094,41],[3031,42],[3004,43],[3007,44],[3008,44],[3009,44],[3010,44],[3011,44],[3012,44],[3013,44],[3014,44],[3015,44],[3016,44],[3036,45],[3017,44],[3018,44],[3019,44],[3020,44],[3021,44],[3022,44],[3023,44],[3024,44],[3025,44],[3026,44],[3027,44],[3028,44],[3029,44],[3030,5],[3032,46],[3044,47],[3005,8],[3043,48],[3006,49],[3042,11],[3041,50],[3038,51],[3039,52],[3040,53],[3033,54],[3037,18],[3035,55],[3034,56],[2985,57],[2984,58],[3000,59],[2986,60],[2983,61],[2999,62],[3002,63],[3001,8],[3003,64],[2779,5],[2821,5],[2825,65],[2820,66],[2822,67],[2824,67],[2823,67],[2826,5],[2828,68],[2827,69],[2780,5],[2781,5],[2782,5],[2783,5],[2784,5],[2785,5],[2786,5],[2795,70],[2796,5],[2797,8],[2798,5],[2799,5],[2800,5],[2801,5],[2789,8],[2802,8],[2803,5],[2788,71],[2790,72],[2787,5],[2793,73],[2791,71],[2792,72],[2819,74],[2804,5],[2805,72],[2806,5],[2807,5],[2808,8],[2809,5],[2810,5],[2811,5],[2812,5],[2813,5],[2814,5],[2815,75],[2816,5],[2817,5],[2794,5],[2818,5],[1535,76],[1442,77],[1443,77],[1444,78],[1445,78],[1446,78],[1447,77],[1448,77],[1449,78],[1450,78],[1451,77],[1452,77],[1453,78],[1454,78],[1455,77],[1456,78],[1457,78],[1458,78],[1459,78],[1460,77],[1461,77],[1462,77],[1463,78],[1464,78],[1465,78],[1466,77],[1467,78],[1468,77],[1469,78],[1470,78],[1471,78],[1472,78],[1473,78],[1474,78],[1475,77],[1476,78],[1477,77],[1478,78],[1479,77],[1480,77],[1481,78],[1482,77],[1483,78],[1484,77],[1485,78],[1486,77],[1487,78],[1488,77],[1489,77],[1490,77],[1491,78],[1492,78],[1493,78],[1494,77],[1495,78],[1496,78],[1497,77],[1498,77],[1499,78],[1500,77],[1501,78],[1502,78],[1503,78],[1504,78],[1505,77],[1506,78],[1507,78],[1508,78],[1509,77],[1510,78],[1511,78],[1512,78],[1513,77],[1514,77],[1515,77],[1516,77],[1517,77],[1518,77],[1519,77],[1520,77],[1521,77],[1522,77],[1523,77],[1524,78],[1525,78],[1526,77],[1527,77],[1528,78],[1529,78],[1530,78],[1531,77],[1532,77],[1533,79],[1439,8],[1534,80],[1440,81],[1438,82],[1441,8],[1437,83],[1327,84],[1329,85],[1375,86],[1374,87],[1436,88],[1435,89],[1432,90],[1430,91],[1431,92],[1429,93],[1377,94],[1380,95],[1379,95],[1381,96],[1378,95],[1376,97],[1326,8],[1433,98],[1434,99],[2356,100],[2677,101],[2684,102],[2675,103],[2681,104],[2683,105],[2682,106],[2680,107],[2678,108],[2679,109],[2640,110],[2641,111],[2642,110],[2643,108],[2639,105],[2637,105],[2638,105],[2645,112],[2646,108],[2650,108],[2651,108],[2647,108],[2648,112],[2649,108],[2652,112],[2653,108],[2654,108],[2644,105],[2655,108],[2674,113],[2670,108],[2671,108],[2656,108],[2657,108],[2658,108],[2659,108],[2660,108],[2661,108],[2662,108],[2663,108],[2664,108],[2665,108],[2666,108],[2667,108],[2668,108],[2669,108],[2672,105],[2673,105],[2636,114],[2676,8],[2632,8],[2624,115],[2634,8],[2625,8],[2630,8],[2635,116],[2633,8],[2623,117],[2631,118],[2620,119],[2621,8],[2622,120],[2585,8],[2626,121],[2629,122],[2628,123],[2627,124],[2586,8],[2587,8],[2588,8],[2600,8],[2589,8],[2590,8],[2591,8],[2592,8],[2595,8],[2597,8],[2598,8],[2593,8],[2594,8],[2596,8],[2617,125],[2599,8],[2601,8],[2602,8],[2603,8],[2604,8],[2610,8],[2611,8],[2605,8],[2607,8],[2606,8],[2608,8],[2609,8],[2612,8],[2613,8],[2614,8],[2615,8],[2616,8],[2619,8],[2618,121],[2158,8],[2159,8],[2161,126],[2160,8],[2162,127],[2163,128],[2166,129],[2164,8],[2165,130],[2173,131],[2169,132],[2178,133],[2174,134],[2175,8],[2176,134],[2177,135],[2179,8],[2180,8],[2181,136],[2185,137],[2170,138],[2168,135],[2172,139],[2171,140],[2182,8],[2183,8],[2184,141],[3238,8],[3241,142],[3242,143],[3243,134],[3244,134],[3245,144],[3249,145],[3246,146],[3247,147],[3239,148],[3240,149],[3248,150],[3250,151],[446,8],[314,8],[52,8],[303,152],[304,152],[305,8],[306,134],[316,153],[307,8],[308,154],[309,8],[310,8],[311,152],[312,152],[313,152],[315,155],[323,156],[325,8],[322,8],[328,157],[326,8],[324,8],[320,158],[321,159],[327,8],[329,160],[317,8],[319,161],[318,162],[258,8],[261,163],[257,8],[493,8],[259,8],[260,8],[346,164],[331,164],[338,164],[335,164],[348,164],[339,164],[345,164],[330,165],[349,164],[352,166],[343,164],[333,164],[351,164],[336,164],[334,164],[344,164],[340,164],[350,164],[337,164],[347,164],[332,164],[342,164],[341,164],[359,167],[355,168],[354,8],[353,8],[358,169],[397,170],[53,8],[54,8],[55,8],[475,171],[57,172],[481,173],[480,174],[247,175],[248,172],[368,8],[277,8],[278,8],[369,176],[249,8],[370,8],[371,177],[56,8],[251,178],[252,8],[250,179],[253,178],[254,8],[256,180],[268,181],[269,8],[274,182],[270,8],[271,8],[272,8],[273,8],[275,8],[276,183],[282,184],[285,185],[283,8],[284,8],[302,186],[286,8],[287,8],[524,187],[267,188],[265,189],[263,190],[264,191],[266,8],[294,192],[288,8],[297,193],[290,194],[295,195],[293,196],[296,197],[291,198],[292,199],[280,200],[298,201],[281,202],[300,203],[301,204],[289,8],[255,8],[262,205],[299,206],[365,207],[360,8],[366,208],[361,209],[362,210],[363,211],[364,212],[367,213],[383,214],[382,215],[388,216],[380,8],[381,217],[384,214],[385,218],[387,219],[386,220],[389,221],[374,222],[375,223],[378,224],[377,224],[376,223],[379,223],[373,225],[391,226],[390,227],[393,228],[392,229],[394,230],[356,200],[357,231],[279,8],[395,232],[372,233],[396,234],[1254,134],[1265,235],[1266,236],[1270,237],[1255,8],[1261,238],[1263,239],[1264,240],[1256,8],[1257,8],[1260,241],[1258,8],[1259,8],[1268,8],[1269,242],[1267,243],[1271,244],[444,245],[445,246],[466,247],[467,248],[468,8],[469,249],[470,250],[479,251],[472,252],[476,253],[484,254],[482,134],[483,255],[473,256],[485,8],[487,257],[488,258],[489,259],[478,260],[474,261],[498,262],[486,263],[513,264],[471,265],[514,266],[511,267],[512,134],[536,268],[461,269],[457,270],[459,271],[510,272],[452,273],[500,274],[499,8],[460,275],[507,276],[464,277],[508,8],[509,278],[462,279],[456,280],[463,281],[458,282],[451,8],[504,283],[517,284],[515,134],[447,134],[503,285],[448,159],[449,248],[450,286],[454,287],[453,288],[516,289],[455,290],[492,291],[490,257],[491,292],[501,159],[502,293],[505,294],[520,295],[521,296],[518,297],[519,298],[522,299],[523,300],[525,301],[497,302],[494,303],[495,152],[496,292],[527,304],[526,305],[533,306],[465,134],[529,307],[528,134],[531,308],[530,8],[532,309],[477,310],[506,311],[535,312],[534,134],[2136,313],[2137,314],[2139,315],[2135,316],[2138,317],[2140,318],[2187,8],[2193,319],[2192,320],[2194,8],[2195,321],[2196,322],[2188,323],[2190,8],[2191,324],[2189,323],[2247,8],[2428,325],[2429,326],[2430,8],[2431,8],[2432,327],[2433,8],[2448,328],[2434,326],[2435,8],[2436,329],[2437,330],[2438,8],[2439,8],[2440,330],[2441,327],[2442,331],[2443,8],[2444,332],[2445,8],[2446,333],[2447,334],[2504,335],[2505,336],[2508,337],[2510,338],[2511,339],[2509,329],[2420,340],[2507,341],[2502,342],[2512,100],[2506,8],[2513,8],[2503,343],[2514,344],[2535,345],[2248,8],[2426,100],[2352,346],[2527,347],[2353,100],[2354,100],[2351,100],[2355,134],[2422,348],[2423,8],[2427,349],[2424,100],[2483,8],[2425,350],[2421,8],[2449,351],[2517,352],[2515,100],[2516,100],[2474,353],[2463,354],[2461,355],[2464,356],[2473,357],[2468,358],[2476,359],[2470,360],[2477,361],[2466,357],[2478,359],[2467,362],[2475,363],[2479,359],[2471,364],[2481,365],[2482,8],[2521,366],[2455,367],[2450,8],[2456,8],[2457,8],[2459,368],[2465,369],[2469,370],[2451,371],[2454,372],[2452,373],[2458,374],[2520,8],[2453,329],[2462,100],[2460,375],[2519,376],[2472,377],[2518,378],[2480,379],[2484,380],[2485,381],[2486,382],[2498,383],[2501,384],[2499,385],[2500,386],[2522,8],[2523,387],[2525,388],[2524,389],[2526,8],[2532,390],[2528,391],[2529,391],[2530,391],[2531,391],[2533,8],[2534,392],[2377,100],[2398,100],[2370,100],[2402,100],[2401,100],[2415,8],[2412,8],[2410,100],[2391,393],[2387,394],[2407,393],[2414,8],[2384,100],[2371,395],[2405,393],[2375,395],[2374,395],[2364,393],[2361,396],[2363,393],[2365,100],[2394,100],[2360,100],[2406,395],[2373,395],[2383,100],[2372,100],[2359,100],[2390,393],[2416,397],[2357,398],[2396,8],[2397,100],[2409,399],[2358,395],[2413,399],[2388,399],[2376,395],[2404,8],[2380,8],[2411,394],[2392,8],[2368,400],[2369,395],[2408,401],[2366,402],[2379,393],[2385,100],[2378,100],[2400,100],[2382,395],[2381,100],[2386,393],[2362,100],[2389,100],[2367,100],[2395,8],[2393,395],[2399,8],[3157,403],[3152,404],[3150,134],[3153,404],[3154,404],[3155,404],[3156,134],[3151,8],[3158,405],[960,8],[964,406],[1080,407],[961,134],[963,408],[962,8],[965,409],[1078,410],[1079,411],[1081,412],[1297,413],[1300,414],[1298,8],[1299,8],[1278,8],[1279,415],[1304,416],[1301,134],[1302,417],[1303,413],[1305,418],[398,8],[399,8],[402,419],[403,8],[404,8],[406,8],[405,8],[420,8],[407,8],[408,420],[409,8],[410,8],[411,421],[412,419],[413,8],[415,422],[416,419],[417,423],[418,421],[419,8],[421,424],[426,425],[435,426],[425,427],[400,8],[414,423],[423,428],[424,8],[422,8],[427,429],[432,430],[428,134],[429,134],[430,134],[431,134],[401,8],[433,8],[434,431],[436,432],[543,433],[441,434],[540,8],[438,8],[439,435],[442,436],[443,134],[537,437],[440,438],[538,439],[539,440],[541,441],[542,8],[945,442],[943,443],[944,444],[949,445],[942,446],[947,447],[946,448],[948,449],[950,450],[1390,451],[1393,452],[1398,453],[1401,454],[1422,455],[1400,456],[1382,8],[1383,457],[1384,458],[1387,8],[1385,8],[1386,8],[1423,459],[1389,451],[1388,8],[1424,460],[1392,452],[1391,8],[1428,461],[1425,462],[1395,463],[1397,464],[1394,465],[1396,466],[1426,467],[1399,451],[1427,468],[1402,469],[1421,470],[1418,471],[1420,472],[1405,473],[1412,474],[1414,475],[1416,476],[1415,477],[1407,478],[1404,471],[1408,8],[1419,479],[1409,480],[1406,8],[1417,8],[1403,8],[1410,481],[1411,8],[1413,482],[2850,483],[2846,60],[2847,60],[2849,484],[2848,5],[2860,485],[2851,60],[2853,486],[2852,5],[2855,487],[2854,8],[2858,488],[2859,489],[2856,490],[2857,490],[2931,18],[2932,491],[2912,492],[2913,8],[2936,493],[2935,494],[2945,495],[2938,496],[2939,8],[2937,497],[2944,18],[2940,498],[2941,498],[2943,499],[2942,498],[2934,5],[2914,5],[2929,500],[2916,501],[2915,5],[2923,502],[2918,503],[2919,503],[2924,5],[2921,5],[2920,503],[2917,5],[2926,5],[2925,503],[2922,503],[2927,5],[2928,504],[2968,5],[2969,8],[2972,505],[2980,506],[2973,8],[2974,8],[2975,8],[2976,8],[2977,8],[2978,8],[2979,8],[2933,507],[2946,508],[2930,509],[2981,510],[2863,511],[2865,512],[2864,5],[2866,511],[2867,511],[2869,513],[2861,5],[2868,5],[2862,8],[2884,61],[2888,514],[2885,5],[2887,5],[2881,515],[2882,8],[2883,5],[2880,516],[2879,5],[2886,517],[2844,518],[2829,5],[2842,519],[2843,5],[2845,520],[2892,521],[2893,522],[2894,5],[2895,523],[2891,524],[2889,5],[2890,5],[2898,525],[2896,8],[2897,5],[2834,8],[2838,8],[2830,8],[2831,8],[2832,8],[2833,8],[2841,526],[2835,527],[2836,5],[2837,528],[2840,8],[2839,5],[2989,8],[2995,5],[2990,5],[2991,5],[2992,5],[2996,5],[2998,529],[2993,5],[2994,5],[2997,5],[2988,530],[2987,5],[2899,5],[2947,531],[2948,532],[2949,8],[2950,533],[2951,8],[2952,8],[2953,8],[2954,5],[2955,531],[2956,5],[2958,534],[2959,535],[2957,5],[2960,8],[2961,8],[2982,536],[2962,8],[2963,5],[2964,8],[2965,531],[2966,8],[2967,8],[2709,537],[2710,538],[2711,8],[2712,8],[2725,539],[2726,540],[2723,541],[2724,542],[2727,543],[2730,544],[2732,545],[2733,546],[2715,547],[2734,8],[2738,548],[2736,549],[2737,8],[2731,8],[2740,550],[2716,551],[2742,552],[2743,553],[2746,554],[2745,555],[2741,556],[2744,557],[2739,558],[2747,559],[2748,560],[2752,561],[2753,562],[2751,563],[2729,564],[2717,8],[2720,565],[2754,566],[2755,567],[2756,567],[2713,8],[2758,568],[2757,567],[2778,569],[2718,8],[2722,570],[2759,571],[2760,8],[2714,8],[2750,572],[2766,573],[2765,574],[2762,8],[2763,575],[2764,8],[2761,576],[2749,577],[2767,578],[2768,579],[2769,544],[2770,544],[2771,580],[2735,8],[2773,581],[2774,582],[2728,8],[2775,8],[2776,583],[2772,8],[2719,584],[2721,558],[2777,537],[2872,585],[2875,8],[2873,586],[2876,8],[2874,587],[2878,588],[2877,8],[2870,5],[2871,8],[2900,8],[2902,5],[2901,589],[2903,590],[2904,591],[2905,589],[2906,589],[2907,592],[2911,593],[2908,589],[2909,592],[2910,8],[2971,594],[2970,8],[2142,8],[2418,595],[2417,8],[1074,596],[1073,597],[1070,598],[1076,599],[1075,598],[1071,8],[1289,600],[1282,601],[1286,602],[1284,603],[1287,604],[1285,605],[1288,606],[1283,8],[1281,607],[1280,608],[1015,609],[1016,609],[1017,610],[1018,611],[1019,612],[1020,613],[966,8],[969,614],[967,8],[968,8],[1021,615],[1022,616],[1023,617],[1024,618],[1025,619],[1026,620],[1027,620],[1028,621],[1029,622],[1030,623],[1031,624],[972,8],[1032,625],[1033,626],[1034,627],[1035,628],[1036,629],[1037,630],[1038,631],[1039,632],[1040,633],[1041,634],[1042,635],[1043,636],[1044,637],[1045,637],[1046,638],[1047,8],[1048,639],[1050,640],[1049,641],[1051,642],[1052,643],[1053,644],[1054,645],[1055,646],[1056,647],[1057,648],[971,649],[970,8],[1066,650],[1058,651],[1059,652],[1060,653],[1061,654],[1062,655],[1063,656],[973,8],[974,8],[975,8],[1014,657],[1064,658],[1065,659],[2704,660],[2691,661],[2698,662],[2694,663],[2692,664],[2695,665],[2699,666],[2700,662],[2697,667],[2696,668],[2701,669],[2702,670],[2703,671],[2693,672],[1077,673],[1068,8],[1069,8],[1067,674],[1072,675],[1140,676],[1131,8],[1132,8],[1133,8],[1134,8],[1135,8],[1136,8],[1137,8],[1138,8],[1139,8],[2493,677],[2705,8],[976,8],[2167,678],[2132,679],[1983,680],[1984,8],[1985,680],[1986,8],[1987,681],[1988,682],[1989,680],[1990,680],[1991,8],[1992,8],[1993,8],[1994,8],[1995,8],[1996,8],[1997,8],[1998,682],[1999,680],[2000,680],[2001,8],[2002,680],[2003,680],[2009,683],[2004,8],[2010,684],[2005,684],[2006,682],[2007,8],[2008,8],[2034,685],[2011,682],[2025,686],[2012,686],[2013,686],[2014,686],[2024,687],[2015,682],[2016,686],[2017,686],[2018,686],[2019,686],[2020,682],[2021,682],[2022,682],[2023,686],[2026,682],[2027,682],[2028,8],[2029,8],[2031,8],[2030,8],[2032,682],[2033,8],[2035,688],[1982,689],[1972,690],[1969,691],[1977,692],[1975,693],[1971,694],[1970,695],[1979,696],[1978,697],[1981,698],[1980,699],[1620,8],[1623,682],[1624,682],[1625,682],[1626,682],[1627,682],[1628,682],[1629,682],[1631,682],[1630,682],[1632,682],[1633,682],[1634,682],[1635,682],[1747,682],[1636,682],[1637,682],[1638,682],[1639,682],[1748,682],[1749,8],[1750,700],[1751,682],[1752,681],[1753,681],[1755,701],[1756,682],[1757,702],[1758,682],[1760,703],[1761,681],[1762,704],[1640,694],[1641,682],[1642,682],[1643,8],[1645,8],[1644,682],[1646,705],[1647,694],[1648,694],[1649,694],[1650,682],[1651,694],[1652,682],[1653,694],[1654,682],[1656,681],[1657,8],[1658,8],[1659,8],[1660,682],[1661,681],[1662,8],[1663,8],[1664,8],[1665,8],[1666,8],[1667,8],[1668,8],[1669,8],[1670,8],[1671,706],[1672,8],[1673,707],[1674,8],[1675,8],[1676,8],[1677,8],[1678,8],[1679,682],[1685,681],[1680,682],[1681,682],[1682,682],[1683,681],[1684,682],[1686,680],[1687,8],[1688,8],[1689,682],[1763,681],[1690,8],[1764,682],[1765,682],[1766,682],[1691,682],[1767,682],[1692,682],[1769,680],[1768,680],[1770,680],[1771,680],[1772,682],[1773,681],[1774,681],[1775,682],[1693,8],[1777,680],[1776,680],[1694,8],[1695,708],[1696,682],[1697,682],[1698,682],[1699,682],[1701,681],[1700,681],[1702,682],[1703,682],[1704,682],[1655,682],[1778,681],[1779,681],[1780,682],[1781,682],[1784,681],[1782,681],[1783,709],[1785,710],[1788,681],[1786,681],[1787,711],[1789,712],[1790,712],[1791,710],[1792,681],[1793,713],[1794,713],[1795,682],[1796,681],[1797,682],[1798,682],[1799,682],[1800,682],[1801,682],[1705,714],[1802,681],[1803,682],[1804,715],[1805,682],[1806,682],[1807,681],[1808,682],[1809,682],[1810,682],[1811,682],[1812,682],[1813,682],[1814,715],[1815,715],[1816,682],[1817,682],[1818,682],[1819,716],[1820,717],[1821,681],[1822,718],[1823,682],[1824,681],[1825,682],[1826,682],[1827,682],[1828,682],[1829,682],[1830,682],[1622,719],[1706,8],[1707,682],[1708,8],[1709,8],[1710,682],[1711,8],[1712,682],[1831,694],[1833,720],[1832,720],[1834,721],[1835,682],[1836,682],[1837,682],[1838,681],[1754,681],[1713,682],[1840,682],[1839,682],[1841,682],[1842,722],[1843,682],[1844,682],[1845,682],[1846,682],[1847,682],[1848,682],[1714,8],[1715,8],[1716,8],[1717,8],[1718,8],[1849,682],[1850,714],[1719,8],[1720,8],[1721,8],[1722,680],[1851,682],[1852,723],[1853,682],[1854,682],[1855,682],[1856,682],[1857,681],[1858,681],[1859,681],[1860,682],[1861,681],[1862,682],[1863,682],[1723,682],[1864,682],[1865,682],[1866,682],[1724,8],[1725,8],[1726,682],[1727,682],[1728,682],[1729,682],[1730,8],[1731,8],[1867,682],[1868,681],[1732,8],[1733,8],[1869,682],[1734,8],[1871,682],[1870,682],[1872,682],[1873,682],[1874,682],[1875,682],[1735,682],[1736,681],[1876,8],[1737,8],[1738,681],[1739,8],[1740,8],[1741,8],[1877,682],[1878,682],[1882,682],[1883,681],[1884,682],[1885,681],[1886,682],[1742,8],[1879,682],[1880,682],[1881,682],[1887,681],[1888,682],[1889,681],[1890,681],[1893,681],[1891,681],[1892,681],[1894,682],[1895,682],[1896,682],[1897,724],[1898,682],[1899,681],[1900,682],[1901,682],[1902,682],[1743,8],[1744,8],[1903,682],[1904,682],[1905,682],[1906,682],[1745,8],[1746,8],[1907,682],[1908,682],[1909,682],[1910,681],[1911,725],[1912,681],[1913,726],[1914,682],[1915,682],[1916,681],[1917,682],[1918,681],[1919,682],[1920,682],[1921,682],[1922,681],[1923,682],[1925,682],[1924,682],[1926,681],[1927,681],[1928,681],[1929,681],[1930,682],[1931,682],[1932,681],[1933,682],[1934,682],[1935,682],[1936,727],[1937,682],[1938,681],[1939,682],[1940,728],[1941,682],[1942,682],[1943,682],[1759,681],[1944,681],[1945,681],[1946,729],[1947,681],[1948,730],[1949,682],[1950,731],[1951,732],[1952,682],[1953,733],[1954,682],[1955,682],[1956,734],[1957,682],[1958,682],[1959,682],[1960,682],[1961,682],[1962,682],[1963,682],[1964,681],[1965,681],[1966,682],[1967,735],[1968,682],[1973,682],[1621,682],[1974,736],[2036,8],[2037,8],[2038,8],[2039,8],[2045,737],[2040,8],[2041,8],[2042,738],[2043,739],[2044,8],[2046,740],[2047,741],[2048,742],[2049,742],[2050,742],[2051,8],[2052,742],[2053,8],[2054,8],[2055,8],[2056,8],[2057,743],[2070,744],[2058,742],[2059,742],[2060,743],[2061,742],[2062,742],[2063,8],[2064,8],[2065,8],[2066,742],[2067,8],[2068,8],[2069,8],[2071,742],[2072,8],[2074,745],[2075,746],[2076,8],[2077,8],[2078,8],[2073,747],[2079,8],[2080,8],[2081,747],[2082,682],[2083,748],[2084,682],[2085,682],[2086,8],[2087,8],[2088,747],[2089,8],[2106,749],[2090,682],[2093,750],[2092,751],[2091,745],[2094,752],[2095,8],[2096,8],[2097,680],[2098,8],[2099,753],[2100,753],[2101,754],[2102,8],[2103,8],[2104,682],[2105,8],[2107,755],[2108,756],[2109,757],[2110,757],[2111,756],[2112,758],[2113,758],[2114,8],[2115,758],[2116,758],[2129,759],[2117,756],[2118,760],[2119,756],[2120,758],[2121,761],[2125,758],[2126,758],[2127,758],[2128,758],[2122,758],[2123,758],[2124,758],[2130,756],[2131,762],[1619,763],[1569,764],[1570,764],[1571,764],[1577,765],[1572,764],[1573,764],[1574,764],[1575,764],[1576,764],[1560,766],[1559,8],[1578,767],[1566,8],[1562,768],[1553,8],[1552,8],[1554,8],[1555,764],[1556,769],[1568,770],[1557,764],[1558,764],[1563,771],[1564,772],[1565,764],[1561,8],[1567,8],[1101,8],[1220,773],[1224,773],[1223,773],[1221,773],[1222,773],[1225,773],[1104,773],[1116,773],[1105,773],[1118,773],[1120,773],[1114,773],[1113,773],[1115,773],[1119,773],[1121,773],[1106,773],[1117,773],[1107,773],[1109,774],[1110,773],[1111,773],[1112,773],[1128,773],[1127,773],[1228,775],[1122,773],[1124,773],[1123,773],[1125,773],[1126,773],[1227,773],[1226,773],[1129,773],[1211,773],[1210,773],[1141,776],[1142,776],[1144,773],[1188,773],[1209,773],[1145,776],[1189,773],[1186,773],[1190,773],[1146,773],[1147,773],[1148,776],[1191,773],[1185,776],[1143,776],[1192,773],[1149,776],[1193,773],[1173,773],[1150,776],[1151,773],[1152,773],[1183,776],[1155,773],[1154,773],[1194,773],[1195,773],[1196,776],[1157,773],[1159,773],[1160,773],[1166,773],[1167,773],[1161,776],[1197,773],[1184,776],[1162,773],[1163,773],[1198,773],[1164,773],[1156,776],[1199,773],[1182,773],[1200,773],[1165,776],[1168,773],[1169,773],[1187,776],[1201,773],[1202,773],[1181,777],[1158,773],[1203,776],[1204,773],[1205,773],[1206,773],[1207,776],[1170,773],[1208,773],[1174,773],[1171,776],[1172,776],[1153,773],[1175,773],[1178,773],[1176,773],[1177,773],[1130,773],[1218,773],[1212,773],[1213,773],[1215,773],[1216,773],[1214,773],[1219,773],[1217,773],[1103,778],[1236,779],[1234,780],[1235,781],[1233,782],[1232,773],[1231,783],[1100,8],[1102,8],[1098,8],[1229,8],[1230,784],[1108,778],[1099,8],[1291,8],[1290,8],[1296,785],[1292,786],[1295,787],[1294,788],[1293,8],[2403,8],[1600,8],[1262,706],[2186,8],[1976,789],[2546,790],[2542,791],[2543,792],[2544,793],[2545,8],[2488,794],[2487,100],[2490,795],[2489,794],[2259,796],[2326,797],[2325,798],[2324,799],[2264,800],[2280,801],[2278,802],[2279,803],[2265,804],[2350,805],[2250,8],[2252,8],[2253,806],[2254,8],[2257,807],[2260,8],[2277,808],[2255,8],[2272,809],[2258,810],[2273,811],[2276,812],[2274,812],[2271,813],[2251,8],[2256,8],[2275,814],[2281,815],[2269,8],[2263,816],[2261,817],[2270,818],[2267,819],[2266,819],[2262,820],[2268,821],[2345,822],[2339,823],[2332,824],[2331,825],[2340,826],[2341,812],[2333,827],[2346,828],[2327,829],[2328,830],[2329,831],[2349,832],[2330,825],[2334,828],[2335,833],[2348,834],[2342,835],[2343,810],[2344,833],[2347,812],[2336,831],[2282,836],[2337,837],[2338,838],[2323,839],[2321,840],[2322,840],[2287,840],[2288,840],[2289,840],[2290,840],[2291,840],[2292,840],[2293,840],[2294,840],[2313,840],[2285,840],[2295,840],[2296,840],[2297,840],[2298,840],[2299,840],[2300,840],[2320,840],[2301,840],[2302,840],[2303,840],[2318,840],[2304,840],[2319,840],[2305,840],[2316,840],[2317,840],[2306,840],[2307,840],[2308,840],[2314,840],[2315,840],[2309,840],[2310,840],[2311,840],[2312,840],[2286,841],[2284,842],[2283,843],[2249,8],[2234,8],[1328,844],[1598,845],[1599,846],[1597,847],[1585,848],[1590,849],[1591,850],[1594,851],[1593,852],[1592,853],[1595,854],[1602,855],[1605,856],[1604,857],[1603,858],[1596,859],[1586,661],[1601,860],[1588,861],[1584,862],[1589,863],[1587,848],[2143,864],[1618,8],[1180,865],[1179,8],[1094,8],[51,8],[246,866],[219,8],[197,867],[195,867],[245,868],[210,869],[209,869],[110,870],[61,871],[217,870],[218,870],[220,872],[221,870],[222,873],[121,874],[223,870],[194,870],[224,870],[225,875],[226,870],[227,869],[228,876],[229,870],[230,870],[231,870],[232,870],[233,869],[234,870],[235,870],[236,870],[237,870],[238,877],[239,870],[240,870],[241,870],[242,870],[243,870],[60,868],[63,873],[64,873],[65,873],[66,873],[67,873],[68,873],[69,873],[70,870],[72,878],[73,873],[71,873],[74,873],[75,873],[76,873],[77,873],[78,873],[79,873],[80,870],[81,873],[82,873],[83,873],[84,873],[85,873],[86,870],[87,873],[88,873],[89,873],[90,873],[91,873],[92,873],[93,870],[95,879],[94,873],[96,873],[97,873],[98,873],[99,873],[100,877],[101,870],[102,870],[116,880],[104,881],[105,873],[106,873],[107,870],[108,873],[109,873],[111,882],[112,873],[113,873],[114,873],[115,873],[117,873],[118,873],[119,873],[120,873],[122,883],[123,873],[124,873],[125,873],[126,870],[127,873],[128,884],[129,884],[130,884],[131,870],[132,873],[133,873],[134,873],[139,873],[135,873],[136,870],[137,873],[138,870],[140,873],[141,873],[142,873],[143,873],[144,873],[145,873],[146,870],[147,873],[148,873],[149,873],[150,873],[151,873],[152,873],[153,873],[154,873],[155,873],[156,873],[157,873],[158,873],[159,873],[160,873],[161,873],[162,873],[163,885],[164,873],[165,873],[166,873],[167,873],[168,873],[169,873],[170,870],[171,870],[172,870],[173,870],[174,870],[175,873],[176,873],[177,873],[178,873],[196,886],[244,870],[181,887],[180,888],[204,889],[203,890],[199,891],[198,890],[200,892],[189,893],[187,894],[202,895],[201,892],[188,8],[190,896],[103,897],[59,898],[58,873],[193,8],[185,899],[186,900],[183,8],[184,901],[182,873],[191,902],[62,903],[211,8],[212,8],[205,8],[208,869],[207,8],[213,8],[214,8],[206,904],[215,8],[216,8],[179,905],[192,906],[2492,907],[2497,908],[2495,8],[2496,8],[2494,909],[2491,8],[2419,910],[622,911],[621,8],[643,8],[561,912],[623,8],[570,8],[560,8],[689,8],[776,8],[726,913],[932,914],[773,915],[931,916],[930,916],[775,8],[624,917],[733,918],[729,919],[927,915],[897,8],[847,920],[848,921],[849,921],[861,921],[854,922],[853,923],[855,921],[856,921],[860,924],[858,925],[888,926],[885,8],[884,927],[886,921],[900,928],[898,8],[894,929],[899,8],[893,930],[862,8],[863,8],[866,8],[864,8],[865,8],[867,8],[868,8],[871,8],[869,8],[870,8],[872,8],[873,8],[566,931],[841,8],[842,8],[843,8],[844,8],[567,932],[845,8],[846,8],[875,933],[598,934],[874,8],[601,8],[602,935],[603,935],[852,936],[850,936],[851,8],[558,934],[597,937],[895,938],[565,8],[859,931],[887,446],[857,939],[876,935],[877,940],[878,941],[879,941],[880,941],[881,941],[882,942],[883,942],[892,943],[891,8],[889,8],[890,944],[896,945],[719,8],[720,946],[723,913],[724,913],[725,913],[694,947],[695,948],[714,913],[629,949],[718,913],[634,8],[713,950],[671,951],[635,952],[696,8],[697,953],[717,913],[711,8],[712,954],[698,947],[699,955],[591,8],[716,913],[721,8],[722,956],[727,8],[728,957],[592,958],[700,913],[715,913],[702,8],[703,8],[704,8],[705,8],[706,8],[707,8],[701,8],[708,8],[929,8],[709,959],[710,960],[564,8],[589,8],[620,8],[594,8],[596,8],[682,8],[590,936],[625,8],[628,8],[690,961],[677,962],[730,963],[617,964],[608,8],[599,965],[600,966],[936,928],[609,8],[612,965],[595,8],[610,921],[616,967],[611,942],[604,968],[607,938],[779,969],[802,969],[783,969],[786,970],[788,969],[837,969],[814,969],[778,969],[806,969],[834,969],[785,969],[815,969],[800,969],[803,969],[791,969],[824,971],[820,969],[813,969],[795,972],[794,972],[811,970],[821,969],[839,973],[840,974],[825,975],[817,969],[798,969],[784,969],[787,969],[819,969],[804,970],[812,969],[809,976],[826,976],[810,970],[796,969],[805,969],[838,969],[828,969],[816,969],[836,969],[818,969],[797,969],[832,969],[822,969],[799,969],[827,969],[835,969],[801,969],[823,972],[807,969],[831,977],[782,977],[793,969],[792,969],[790,978],[777,8],[789,969],[833,976],[829,976],[808,976],[830,976],[636,979],[642,980],[641,981],[632,982],[631,8],[640,983],[639,983],[638,983],[920,984],[637,985],[679,8],[630,8],[647,986],[646,987],[901,979],[903,979],[904,979],[905,979],[906,979],[907,979],[908,988],[913,979],[909,979],[910,979],[919,979],[911,979],[912,979],[914,979],[915,979],[916,979],[917,979],[902,979],[918,989],[605,8],[774,990],[941,991],[921,992],[922,993],[925,994],[923,993],[618,995],[619,996],[924,993],[664,8],[569,997],[766,8],[578,8],[583,998],[767,999],[764,8],[668,8],[771,1000],[770,8],[736,8],[765,921],[762,8],[763,1001],[772,1002],[761,8],[760,942],[579,942],[563,1003],[734,1004],[768,8],[769,8],[615,943],[568,8],[585,938],[665,1005],[588,1006],[587,1007],[584,1008],[735,1009],[669,1010],[576,1011],[737,1012],[581,1013],[580,1014],[577,1015],[614,1016],[555,8],[582,8],[556,8],[557,8],[559,8],[562,999],[554,8],[606,8],[613,8],[586,1017],[693,1018],[933,1019],[692,995],[934,1020],[935,1021],[575,1022],[781,1023],[780,1024],[633,1025],[744,1026],[684,1027],[753,1028],[685,1029],[755,1030],[745,1031],[757,1032],[758,1033],[743,8],[751,1034],[672,1035],[747,1036],[746,1036],[732,1037],[731,1037],[756,1038],[676,1039],[674,1040],[675,1040],[686,8],[748,8],[759,1041],[749,8],[754,1042],[681,1043],[752,1044],[750,8],[683,1045],[673,8],[742,1046],[926,1047],[928,1048],[939,8],[678,1049],[645,8],[691,1050],[644,8],[680,1051],[688,1052],[687,1053],[663,8],[571,8],[667,8],[626,8],[738,8],[740,1054],[648,8],[573,446],[937,1055],[593,1056],[741,1057],[666,1058],[572,1059],[670,1060],[627,1061],[739,1062],[649,1063],[574,1064],[662,1065],[650,8],[661,1066],[656,1067],[657,1068],[660,963],[659,1069],[655,1068],[658,1069],[651,963],[652,963],[653,963],[654,1070],[938,1071],[940,1072],[49,8],[50,8],[9,8],[11,8],[10,8],[2,8],[12,8],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[3,8],[20,8],[4,8],[21,8],[25,8],[22,8],[23,8],[24,8],[26,8],[27,8],[28,8],[5,8],[29,8],[30,8],[31,8],[32,8],[6,8],[36,8],[33,8],[34,8],[35,8],[37,8],[7,8],[38,8],[43,8],[44,8],[39,8],[40,8],[41,8],[42,8],[8,8],[48,8],[45,8],[46,8],[47,8],[1,8],[992,1073],[1002,1074],[991,1073],[1012,1075],[983,1076],[982,1077],[1011,706],[1005,1078],[1010,1079],[985,1080],[999,1081],[984,1082],[1008,1083],[980,1084],[979,706],[1009,1085],[981,1086],[986,1087],[987,8],[990,1087],[977,8],[1013,1088],[1003,1089],[994,1090],[995,1091],[997,1092],[993,1093],[996,1094],[1006,706],[988,1095],[989,1096],[998,1097],[978,592],[1001,1089],[1000,1087],[1004,8],[1007,1098],[1373,1099],[1348,1100],[1361,1101],[1345,1102],[1362,592],[1371,1103],[1336,1104],[1337,1105],[1335,1077],[1370,706],[1365,1106],[1369,1107],[1339,1108],[1358,1109],[1338,1110],[1368,1111],[1333,1112],[1334,1113],[1340,1114],[1341,8],[1347,1115],[1344,1114],[1331,1116],[1372,1117],[1363,1118],[1351,1119],[1350,1114],[1352,1120],[1355,1121],[1349,1122],[1353,1123],[1366,706],[1342,1124],[1343,1125],[1356,1126],[1332,1127],[1360,1128],[1359,1114],[1346,1125],[1354,1129],[1357,1130],[1364,8],[1330,8],[1367,1131],[3133,1132],[3117,8],[3118,8],[3120,1133],[3121,8],[3119,8],[3122,1133],[3123,1133],[3125,1134],[3124,1133],[3126,1133],[3127,1134],[3128,1133],[3129,8],[3130,1133],[3131,8],[3132,8],[553,8],[1091,1135],[1092,1136],[955,1137],[957,1138],[958,1139],[953,1140],[952,1141],[954,1142],[951,1143],[956,1144],[959,1145],[1093,134],[1097,1146],[1096,1147],[1237,1148],[437,1149],[550,1150],[551,134],[1247,1151],[1249,1152],[1246,1153],[1250,1154],[1251,1155],[1242,1156],[1243,1157],[1241,1158],[1240,1159],[1238,8],[1239,8],[1244,134],[1248,1160],[1245,1161],[1253,1162],[1274,1163],[1275,1164],[1276,1164],[1252,8],[1277,1165],[1306,1166],[1307,134],[1089,1167],[1083,1168],[1090,1169],[1311,1170],[1313,1171],[1314,1154],[1315,1154],[1316,1172],[1317,1173],[1308,8],[1309,8],[1312,8],[1310,8],[1318,1174],[1319,8],[1320,1154],[1321,446],[1322,8],[1323,1148],[1324,1148],[1537,1175],[1538,8],[1082,8],[1539,8],[1540,8],[545,1176],[544,8],[1542,1177],[1543,1178],[1544,8],[1545,1179],[1546,1180],[1325,448],[1547,134],[1548,134],[1549,134],[1551,1181],[1579,1182],[1580,134],[1581,1183],[1582,8],[1583,1184],[1607,1185],[1608,1186],[1610,1187],[1609,134],[1541,1188],[1606,1189],[1536,1190],[1611,134],[1612,8],[1550,1191],[1613,1192],[1614,1193],[1615,134],[1272,8],[1616,8],[1617,1167],[2133,1194],[2134,1195],[2141,1196],[2144,1197],[2145,8],[2146,1198],[2147,1154],[2148,1154],[2149,1154],[2150,1199],[1085,1200],[1087,1201],[1086,1202],[1084,1203],[2151,1204],[2152,1205],[2156,1206],[2157,1207],[2155,1208],[2154,1208],[2153,8],[2206,1209],[2205,1210],[2207,1154],[2208,1211],[2203,1212],[2209,1154],[2212,1213],[2213,1154],[2218,1214],[2215,1154],[2204,1215],[2214,1216],[2217,1217],[2216,1218],[2226,1219],[2225,1220],[2200,1221],[2198,1222],[2202,1223],[2221,1224],[2223,1225],[2228,1226],[2229,1227],[2219,1227],[2232,1228],[2230,1229],[2231,1230],[2224,8],[2199,8],[2222,8],[2227,8],[2233,1231],[2220,8],[2210,8],[2211,8],[2197,8],[2201,8],[2235,1232],[2236,1233],[2237,8],[2240,1234],[2238,446],[2241,446],[2242,1235],[2239,1236],[2243,1237],[2244,1235],[2245,1238],[2246,1239],[2536,1240],[2537,1240],[2539,1241],[2538,1242],[2541,1243],[2549,1244],[2550,350],[2551,8],[2552,1245],[2540,1246],[2547,1247],[2553,1248],[2548,1249],[2554,8],[2555,134],[2556,134],[2558,1154],[2559,1154],[2560,1154],[2561,1211],[2562,1211],[2563,1154],[2564,446],[2557,8],[552,1250],[2565,1154],[2566,1251],[2567,8],[2568,1252],[2569,1253],[2571,1254],[2570,1255],[2573,1256],[1273,8],[2572,1257],[2580,1258],[2579,1259],[2577,1260],[2576,1261],[2581,1262],[2582,446],[2584,1263],[2583,446],[2685,1264],[2687,1265],[2686,446],[2688,134],[2706,1266],[2707,1267],[2690,1267],[2689,1147],[2708,1148],[1095,1268],[3113,1269],[3114,1235],[3111,1235],[3112,1270],[3115,1271],[3116,8],[3134,1272],[3135,1154],[3137,1273],[3139,1274],[3136,446],[3138,446],[3140,1275],[3141,134],[3142,1276],[3143,1277],[3145,1278],[3147,1279],[3149,1280],[3159,1281],[3160,1282],[3144,1202],[3148,1283],[3146,1235],[3161,8],[3162,1284],[3163,134],[3168,1285],[3167,446],[3164,8],[3166,1286],[3165,1287],[3171,1288],[3170,8],[3172,1289],[3173,1290],[3169,8],[3175,1154],[3176,1291],[3177,8],[3174,8],[3178,1292],[3179,1293],[3180,1294],[546,8],[548,1295],[549,1296],[547,1297],[3185,134],[3184,134],[3182,1298],[3228,1299],[3230,1300],[3231,1301],[3229,1302],[3232,1303],[3181,1304],[3183,134],[3233,8],[3235,1305],[3234,1306],[3251,1307],[3236,134],[3237,1308],[3252,1309],[3254,1310],[3253,1311],[3263,1312],[3260,1313],[3261,1314],[3268,134],[2578,134],[3259,1315],[3257,1316],[3256,1316],[3258,1316],[2574,446],[3266,1259],[2575,1317],[3255,8],[3264,1318],[3265,1319],[3267,1320],[3262,1321],[3270,1322],[1088,1323],[3269,8],[3271,8],[3276,1324],[3274,1167],[3273,1325],[3275,1326],[3272,1327],[3278,1328],[3287,1329],[3277,1330],[3286,1331],[3282,1332],[3281,1332],[3279,1332],[3285,1333],[3280,1332],[3284,1332],[3283,1332],[3288,1334]],"exportedModulesMap":[[3213,1],[3186,2],[3189,3],[3190,3],[3191,3],[3192,3],[3193,3],[3194,3],[3195,3],[3196,3],[3197,3],[3218,4],[3198,3],[3199,3],[3200,3],[3201,3],[3202,3],[3203,3],[3204,3],[3205,3],[3206,3],[3207,3],[3208,3],[3209,3],[3210,3],[3211,3],[3212,5],[3214,6],[3227,7],[3187,8],[3226,9],[3188,10],[3225,11],[3221,12],[3224,13],[3220,14],[3222,15],[3223,16],[3215,17],[3219,18],[3217,19],[3216,20],[3091,21],[3045,22],[3048,23],[3049,23],[3050,23],[3051,23],[3052,23],[3053,23],[3054,23],[3055,23],[3056,23],[3057,23],[3058,23],[3059,23],[3060,23],[3061,23],[3062,23],[3063,23],[3064,23],[3065,23],[3096,24],[3066,23],[3067,23],[3068,23],[3069,23],[3070,23],[3071,23],[3072,23],[3073,23],[3074,23],[3075,23],[3076,23],[3077,23],[3078,23],[3079,23],[3080,23],[3081,23],[3082,23],[3083,23],[3084,23],[3085,23],[3086,23],[3087,23],[3088,23],[3089,23],[3090,5],[3092,25],[3110,26],[3046,8],[3109,27],[3047,28],[3108,11],[3107,29],[3098,30],[3099,31],[3100,32],[3101,33],[3102,34],[3103,35],[3105,36],[3104,37],[3106,38],[3093,39],[3097,18],[3095,40],[3094,41],[3031,42],[3004,43],[3007,44],[3008,44],[3009,44],[3010,44],[3011,44],[3012,44],[3013,44],[3014,44],[3015,44],[3016,44],[3036,45],[3017,44],[3018,44],[3019,44],[3020,44],[3021,44],[3022,44],[3023,44],[3024,44],[3025,44],[3026,44],[3027,44],[3028,44],[3029,44],[3030,5],[3032,46],[3044,47],[3005,8],[3043,48],[3006,49],[3042,11],[3041,50],[3038,51],[3039,52],[3040,53],[3033,54],[3037,18],[3035,55],[3034,56],[2985,57],[2984,58],[3000,59],[2986,60],[2983,61],[2999,62],[3002,63],[3001,8],[3003,64],[2779,5],[2821,5],[2825,65],[2820,66],[2822,67],[2824,67],[2823,67],[2826,5],[2828,68],[2827,69],[2780,5],[2781,5],[2782,5],[2783,5],[2784,5],[2785,5],[2786,5],[2795,70],[2796,5],[2797,8],[2798,5],[2799,5],[2800,5],[2801,5],[2789,8],[2802,8],[2803,5],[2788,71],[2790,72],[2787,5],[2793,73],[2791,71],[2792,72],[2819,74],[2804,5],[2805,72],[2806,5],[2807,5],[2808,8],[2809,5],[2810,5],[2811,5],[2812,5],[2813,5],[2814,5],[2815,75],[2816,5],[2817,5],[2794,5],[2818,5],[1535,76],[1442,77],[1443,77],[1444,78],[1445,78],[1446,78],[1447,77],[1448,77],[1449,78],[1450,78],[1451,77],[1452,77],[1453,78],[1454,78],[1455,77],[1456,78],[1457,78],[1458,78],[1459,78],[1460,77],[1461,77],[1462,77],[1463,78],[1464,78],[1465,78],[1466,77],[1467,78],[1468,77],[1469,78],[1470,78],[1471,78],[1472,78],[1473,78],[1474,78],[1475,77],[1476,78],[1477,77],[1478,78],[1479,77],[1480,77],[1481,78],[1482,77],[1483,78],[1484,77],[1485,78],[1486,77],[1487,78],[1488,77],[1489,77],[1490,77],[1491,78],[1492,78],[1493,78],[1494,77],[1495,78],[1496,78],[1497,77],[1498,77],[1499,78],[1500,77],[1501,78],[1502,78],[1503,78],[1504,78],[1505,77],[1506,78],[1507,78],[1508,78],[1509,77],[1510,78],[1511,78],[1512,78],[1513,77],[1514,77],[1515,77],[1516,77],[1517,77],[1518,77],[1519,77],[1520,77],[1521,77],[1522,77],[1523,77],[1524,78],[1525,78],[1526,77],[1527,77],[1528,78],[1529,78],[1530,78],[1531,77],[1532,77],[1533,79],[1439,8],[1534,80],[1440,81],[1438,82],[1441,8],[1437,83],[1327,84],[1329,85],[1375,86],[1374,87],[1436,88],[1435,89],[1432,90],[1430,91],[1431,92],[1429,93],[1377,94],[1380,95],[1379,95],[1381,96],[1378,95],[1376,97],[1326,8],[1433,98],[1434,99],[2356,100],[2677,101],[2684,102],[2675,103],[2681,104],[2683,105],[2682,106],[2680,107],[2678,108],[2679,109],[2640,110],[2641,111],[2642,110],[2643,108],[2639,105],[2637,105],[2638,105],[2645,112],[2646,108],[2650,108],[2651,108],[2647,108],[2648,112],[2649,108],[2652,112],[2653,108],[2654,108],[2644,105],[2655,108],[2674,113],[2670,108],[2671,108],[2656,108],[2657,108],[2658,108],[2659,108],[2660,108],[2661,108],[2662,108],[2663,108],[2664,108],[2665,108],[2666,108],[2667,108],[2668,108],[2669,108],[2672,105],[2673,105],[2636,114],[2676,8],[2632,8],[2624,115],[2634,8],[2625,8],[2630,8],[2635,116],[2633,8],[2623,117],[2631,118],[2620,119],[2621,8],[2622,120],[2585,8],[2626,121],[2629,122],[2628,123],[2627,124],[2586,8],[2587,8],[2588,8],[2600,8],[2589,8],[2590,8],[2591,8],[2592,8],[2595,8],[2597,8],[2598,8],[2593,8],[2594,8],[2596,8],[2617,125],[2599,8],[2601,8],[2602,8],[2603,8],[2604,8],[2610,8],[2611,8],[2605,8],[2607,8],[2606,8],[2608,8],[2609,8],[2612,8],[2613,8],[2614,8],[2615,8],[2616,8],[2619,8],[2618,121],[2158,8],[2159,8],[2161,126],[2160,8],[2162,127],[2163,128],[2166,129],[2164,8],[2165,130],[2173,131],[2169,132],[2178,133],[2174,134],[2175,8],[2176,134],[2177,135],[2179,8],[2180,8],[2181,136],[2185,137],[2170,138],[2168,135],[2172,139],[2171,140],[2182,8],[2183,8],[2184,141],[3238,8],[3241,142],[3242,143],[3243,134],[3244,134],[3245,144],[3249,145],[3246,146],[3247,147],[3239,148],[3240,149],[3248,150],[3250,151],[446,8],[314,8],[52,8],[303,152],[304,152],[305,8],[306,134],[316,153],[307,8],[308,154],[309,8],[310,8],[311,152],[312,152],[313,152],[315,155],[323,156],[325,8],[322,8],[328,157],[326,8],[324,8],[320,158],[321,159],[327,8],[329,160],[317,8],[319,161],[318,162],[258,8],[261,163],[257,8],[493,8],[259,8],[260,8],[346,164],[331,164],[338,164],[335,164],[348,164],[339,164],[345,164],[330,165],[349,164],[352,166],[343,164],[333,164],[351,164],[336,164],[334,164],[344,164],[340,164],[350,164],[337,164],[347,164],[332,164],[342,164],[341,164],[359,167],[355,168],[354,8],[353,8],[358,169],[397,170],[53,8],[54,8],[55,8],[475,171],[57,172],[481,173],[480,174],[247,175],[248,172],[368,8],[277,8],[278,8],[369,176],[249,8],[370,8],[371,177],[56,8],[251,178],[252,8],[250,179],[253,178],[254,8],[256,180],[268,181],[269,8],[274,182],[270,8],[271,8],[272,8],[273,8],[275,8],[276,183],[282,184],[285,185],[283,8],[284,8],[302,186],[286,8],[287,8],[524,187],[267,188],[265,189],[263,190],[264,191],[266,8],[294,192],[288,8],[297,193],[290,194],[295,195],[293,196],[296,197],[291,198],[292,199],[280,200],[298,201],[281,202],[300,203],[301,204],[289,8],[255,8],[262,205],[299,206],[365,207],[360,8],[366,208],[361,209],[362,210],[363,211],[364,212],[367,213],[383,214],[382,215],[388,216],[380,8],[381,217],[384,214],[385,218],[387,219],[386,220],[389,221],[374,222],[375,223],[378,224],[377,224],[376,223],[379,223],[373,225],[391,226],[390,227],[393,228],[392,229],[394,230],[356,200],[357,231],[279,8],[395,232],[372,233],[396,234],[1254,134],[1265,235],[1266,236],[1270,237],[1255,8],[1261,238],[1263,239],[1264,240],[1256,8],[1257,8],[1260,241],[1258,8],[1259,8],[1268,8],[1269,242],[1267,243],[1271,244],[444,245],[445,246],[466,247],[467,248],[468,8],[469,249],[470,250],[479,251],[472,252],[476,253],[484,254],[482,134],[483,255],[473,256],[485,8],[487,257],[488,258],[489,259],[478,260],[474,261],[498,262],[486,263],[513,264],[471,265],[514,266],[511,267],[512,134],[536,268],[461,269],[457,270],[459,271],[510,272],[452,273],[500,274],[499,8],[460,275],[507,276],[464,277],[508,8],[509,278],[462,279],[456,280],[463,281],[458,282],[451,8],[504,283],[517,284],[515,134],[447,134],[503,285],[448,159],[449,248],[450,286],[454,287],[453,288],[516,289],[455,290],[492,291],[490,257],[491,292],[501,159],[502,293],[505,294],[520,295],[521,296],[518,297],[519,298],[522,299],[523,300],[525,301],[497,302],[494,303],[495,152],[496,292],[527,304],[526,305],[533,306],[465,134],[529,307],[528,134],[531,308],[530,8],[532,309],[477,310],[506,311],[535,312],[534,134],[2136,313],[2137,314],[2139,315],[2135,316],[2138,317],[2140,318],[2187,8],[2193,319],[2192,320],[2194,8],[2195,321],[2196,322],[2188,323],[2190,8],[2191,324],[2189,323],[2247,8],[2428,325],[2429,326],[2430,8],[2431,8],[2432,327],[2433,8],[2448,328],[2434,326],[2435,8],[2436,329],[2437,330],[2438,8],[2439,8],[2440,330],[2441,327],[2442,331],[2443,8],[2444,332],[2445,8],[2446,333],[2447,334],[2504,335],[2505,336],[2508,337],[2510,338],[2511,339],[2509,329],[2420,340],[2507,341],[2502,342],[2512,100],[2506,8],[2513,8],[2503,343],[2514,344],[2535,345],[2248,8],[2426,100],[2352,346],[2527,347],[2353,100],[2354,100],[2351,100],[2355,134],[2422,348],[2423,8],[2427,349],[2424,100],[2483,8],[2425,350],[2421,8],[2449,351],[2517,352],[2515,100],[2516,100],[2474,353],[2463,354],[2461,355],[2464,356],[2473,357],[2468,358],[2476,359],[2470,360],[2477,361],[2466,357],[2478,359],[2467,362],[2475,363],[2479,359],[2471,364],[2481,365],[2482,8],[2521,366],[2455,367],[2450,8],[2456,8],[2457,8],[2459,368],[2465,369],[2469,370],[2451,371],[2454,372],[2452,373],[2458,374],[2520,8],[2453,329],[2462,100],[2460,375],[2519,376],[2472,377],[2518,378],[2480,379],[2484,380],[2485,381],[2486,382],[2498,383],[2501,384],[2499,385],[2500,386],[2522,8],[2523,387],[2525,388],[2524,389],[2526,8],[2532,390],[2528,391],[2529,391],[2530,391],[2531,391],[2533,8],[2534,392],[2377,100],[2398,100],[2370,100],[2402,100],[2401,100],[2415,8],[2412,8],[2410,100],[2391,393],[2387,394],[2407,393],[2414,8],[2384,100],[2371,395],[2405,393],[2375,395],[2374,395],[2364,393],[2361,396],[2363,393],[2365,100],[2394,100],[2360,100],[2406,395],[2373,395],[2383,100],[2372,100],[2359,100],[2390,393],[2416,397],[2357,398],[2396,8],[2397,100],[2409,399],[2358,395],[2413,399],[2388,399],[2376,395],[2404,8],[2380,8],[2411,394],[2392,8],[2368,400],[2369,395],[2408,401],[2366,402],[2379,393],[2385,100],[2378,100],[2400,100],[2382,395],[2381,100],[2386,393],[2362,100],[2389,100],[2367,100],[2395,8],[2393,395],[2399,8],[3157,403],[3152,404],[3150,134],[3153,404],[3154,404],[3155,404],[3156,134],[3151,8],[3158,405],[960,8],[964,406],[1080,407],[961,134],[963,408],[962,8],[965,409],[1078,410],[1079,411],[1081,412],[1297,413],[1300,414],[1298,8],[1299,8],[1278,8],[1279,415],[1304,416],[1301,134],[1302,417],[1303,413],[1305,418],[398,8],[399,8],[402,419],[403,8],[404,8],[406,8],[405,8],[420,8],[407,8],[408,420],[409,8],[410,8],[411,421],[412,419],[413,8],[415,422],[416,419],[417,423],[418,421],[419,8],[421,424],[426,425],[435,426],[425,427],[400,8],[414,423],[423,428],[424,8],[422,8],[427,429],[432,430],[428,134],[429,134],[430,134],[431,134],[401,8],[433,8],[434,431],[436,432],[543,433],[441,434],[540,8],[438,8],[439,435],[442,436],[443,134],[537,437],[440,438],[538,439],[539,440],[541,441],[542,8],[945,442],[943,443],[944,444],[949,445],[942,446],[947,447],[946,448],[948,449],[950,450],[1390,451],[1393,452],[1398,453],[1401,454],[1422,455],[1400,456],[1382,8],[1383,457],[1384,458],[1387,8],[1385,8],[1386,8],[1423,459],[1389,451],[1388,8],[1424,460],[1392,452],[1391,8],[1428,461],[1425,462],[1395,463],[1397,464],[1394,465],[1396,466],[1426,467],[1399,451],[1427,468],[1402,469],[1421,470],[1418,471],[1420,472],[1405,473],[1412,474],[1414,475],[1416,476],[1415,477],[1407,478],[1404,471],[1408,8],[1419,479],[1409,480],[1406,8],[1417,8],[1403,8],[1410,481],[1411,8],[1413,482],[2850,483],[2846,60],[2847,60],[2849,484],[2848,5],[2860,485],[2851,60],[2853,486],[2852,5],[2855,487],[2854,8],[2858,488],[2859,489],[2856,490],[2857,490],[2931,18],[2932,491],[2912,492],[2913,8],[2936,493],[2935,494],[2945,495],[2938,496],[2939,8],[2937,497],[2944,18],[2940,498],[2941,498],[2943,499],[2942,498],[2934,5],[2914,5],[2929,500],[2916,501],[2915,5],[2923,502],[2918,503],[2919,503],[2924,5],[2921,5],[2920,503],[2917,5],[2926,5],[2925,503],[2922,503],[2927,5],[2928,504],[2968,5],[2969,8],[2972,505],[2980,506],[2973,8],[2974,8],[2975,8],[2976,8],[2977,8],[2978,8],[2979,8],[2933,507],[2946,508],[2930,509],[2981,510],[2863,511],[2865,512],[2864,5],[2866,511],[2867,511],[2869,513],[2861,5],[2868,5],[2862,8],[2884,61],[2888,514],[2885,5],[2887,5],[2881,515],[2882,8],[2883,5],[2880,516],[2879,5],[2886,517],[2844,518],[2829,5],[2842,519],[2843,5],[2845,520],[2892,521],[2893,522],[2894,5],[2895,523],[2891,524],[2889,5],[2890,5],[2898,525],[2896,8],[2897,5],[2834,8],[2838,8],[2830,8],[2831,8],[2832,8],[2833,8],[2841,526],[2835,527],[2836,5],[2837,528],[2840,8],[2839,5],[2989,8],[2995,5],[2990,5],[2991,5],[2992,5],[2996,5],[2998,529],[2993,5],[2994,5],[2997,5],[2988,530],[2987,5],[2899,5],[2947,531],[2948,532],[2949,8],[2950,533],[2951,8],[2952,8],[2953,8],[2954,5],[2955,531],[2956,5],[2958,534],[2959,535],[2957,5],[2960,8],[2961,8],[2982,536],[2962,8],[2963,5],[2964,8],[2965,531],[2966,8],[2967,8],[2709,537],[2710,538],[2711,8],[2712,8],[2725,539],[2726,540],[2723,541],[2724,542],[2727,543],[2730,544],[2732,545],[2733,546],[2715,547],[2734,8],[2738,548],[2736,549],[2737,8],[2731,8],[2740,550],[2716,551],[2742,552],[2743,553],[2746,554],[2745,555],[2741,556],[2744,557],[2739,558],[2747,559],[2748,560],[2752,561],[2753,562],[2751,563],[2729,564],[2717,8],[2720,565],[2754,566],[2755,567],[2756,567],[2713,8],[2758,568],[2757,567],[2778,569],[2718,8],[2722,570],[2759,571],[2760,8],[2714,8],[2750,572],[2766,573],[2765,574],[2762,8],[2763,575],[2764,8],[2761,576],[2749,577],[2767,578],[2768,579],[2769,544],[2770,544],[2771,580],[2735,8],[2773,581],[2774,582],[2728,8],[2775,8],[2776,583],[2772,8],[2719,584],[2721,558],[2777,537],[2872,585],[2875,8],[2873,586],[2876,8],[2874,587],[2878,588],[2877,8],[2870,5],[2871,8],[2900,8],[2902,5],[2901,589],[2903,590],[2904,591],[2905,589],[2906,589],[2907,592],[2911,593],[2908,589],[2909,592],[2910,8],[2971,594],[2970,8],[2142,8],[2418,595],[2417,8],[1074,596],[1073,597],[1070,598],[1076,599],[1075,598],[1071,8],[1289,600],[1282,601],[1286,602],[1284,603],[1287,604],[1285,605],[1288,606],[1283,8],[1281,607],[1280,608],[1015,609],[1016,609],[1017,610],[1018,611],[1019,612],[1020,613],[966,8],[969,614],[967,8],[968,8],[1021,615],[1022,616],[1023,617],[1024,618],[1025,619],[1026,620],[1027,620],[1028,621],[1029,622],[1030,623],[1031,624],[972,8],[1032,625],[1033,626],[1034,627],[1035,628],[1036,629],[1037,630],[1038,631],[1039,632],[1040,633],[1041,634],[1042,635],[1043,636],[1044,637],[1045,637],[1046,638],[1047,8],[1048,639],[1050,640],[1049,641],[1051,642],[1052,643],[1053,644],[1054,645],[1055,646],[1056,647],[1057,648],[971,649],[970,8],[1066,650],[1058,651],[1059,652],[1060,653],[1061,654],[1062,655],[1063,656],[973,8],[974,8],[975,8],[1014,657],[1064,658],[1065,659],[2704,660],[2691,661],[2698,662],[2694,663],[2692,664],[2695,665],[2699,666],[2700,662],[2697,667],[2696,668],[2701,669],[2702,670],[2703,671],[2693,672],[1077,673],[1068,8],[1069,8],[1067,674],[1072,675],[1140,676],[1131,8],[1132,8],[1133,8],[1134,8],[1135,8],[1136,8],[1137,8],[1138,8],[1139,8],[2493,677],[2705,8],[976,8],[2167,678],[2132,679],[1983,680],[1984,8],[1985,680],[1986,8],[1987,681],[1988,682],[1989,680],[1990,680],[1991,8],[1992,8],[1993,8],[1994,8],[1995,8],[1996,8],[1997,8],[1998,682],[1999,680],[2000,680],[2001,8],[2002,680],[2003,680],[2009,683],[2004,8],[2010,684],[2005,684],[2006,682],[2007,8],[2008,8],[2034,685],[2011,682],[2025,686],[2012,686],[2013,686],[2014,686],[2024,687],[2015,682],[2016,686],[2017,686],[2018,686],[2019,686],[2020,682],[2021,682],[2022,682],[2023,686],[2026,682],[2027,682],[2028,8],[2029,8],[2031,8],[2030,8],[2032,682],[2033,8],[2035,688],[1982,689],[1972,690],[1969,691],[1977,692],[1975,693],[1971,694],[1970,695],[1979,696],[1978,697],[1981,698],[1980,699],[1620,8],[1623,682],[1624,682],[1625,682],[1626,682],[1627,682],[1628,682],[1629,682],[1631,682],[1630,682],[1632,682],[1633,682],[1634,682],[1635,682],[1747,682],[1636,682],[1637,682],[1638,682],[1639,682],[1748,682],[1749,8],[1750,700],[1751,682],[1752,681],[1753,681],[1755,701],[1756,682],[1757,702],[1758,682],[1760,703],[1761,681],[1762,704],[1640,694],[1641,682],[1642,682],[1643,8],[1645,8],[1644,682],[1646,705],[1647,694],[1648,694],[1649,694],[1650,682],[1651,694],[1652,682],[1653,694],[1654,682],[1656,681],[1657,8],[1658,8],[1659,8],[1660,682],[1661,681],[1662,8],[1663,8],[1664,8],[1665,8],[1666,8],[1667,8],[1668,8],[1669,8],[1670,8],[1671,706],[1672,8],[1673,707],[1674,8],[1675,8],[1676,8],[1677,8],[1678,8],[1679,682],[1685,681],[1680,682],[1681,682],[1682,682],[1683,681],[1684,682],[1686,680],[1687,8],[1688,8],[1689,682],[1763,681],[1690,8],[1764,682],[1765,682],[1766,682],[1691,682],[1767,682],[1692,682],[1769,680],[1768,680],[1770,680],[1771,680],[1772,682],[1773,681],[1774,681],[1775,682],[1693,8],[1777,680],[1776,680],[1694,8],[1695,708],[1696,682],[1697,682],[1698,682],[1699,682],[1701,681],[1700,681],[1702,682],[1703,682],[1704,682],[1655,682],[1778,681],[1779,681],[1780,682],[1781,682],[1784,681],[1782,681],[1783,709],[1785,710],[1788,681],[1786,681],[1787,711],[1789,712],[1790,712],[1791,710],[1792,681],[1793,713],[1794,713],[1795,682],[1796,681],[1797,682],[1798,682],[1799,682],[1800,682],[1801,682],[1705,714],[1802,681],[1803,682],[1804,715],[1805,682],[1806,682],[1807,681],[1808,682],[1809,682],[1810,682],[1811,682],[1812,682],[1813,682],[1814,715],[1815,715],[1816,682],[1817,682],[1818,682],[1819,716],[1820,717],[1821,681],[1822,718],[1823,682],[1824,681],[1825,682],[1826,682],[1827,682],[1828,682],[1829,682],[1830,682],[1622,719],[1706,8],[1707,682],[1708,8],[1709,8],[1710,682],[1711,8],[1712,682],[1831,694],[1833,720],[1832,720],[1834,721],[1835,682],[1836,682],[1837,682],[1838,681],[1754,681],[1713,682],[1840,682],[1839,682],[1841,682],[1842,722],[1843,682],[1844,682],[1845,682],[1846,682],[1847,682],[1848,682],[1714,8],[1715,8],[1716,8],[1717,8],[1718,8],[1849,682],[1850,714],[1719,8],[1720,8],[1721,8],[1722,680],[1851,682],[1852,723],[1853,682],[1854,682],[1855,682],[1856,682],[1857,681],[1858,681],[1859,681],[1860,682],[1861,681],[1862,682],[1863,682],[1723,682],[1864,682],[1865,682],[1866,682],[1724,8],[1725,8],[1726,682],[1727,682],[1728,682],[1729,682],[1730,8],[1731,8],[1867,682],[1868,681],[1732,8],[1733,8],[1869,682],[1734,8],[1871,682],[1870,682],[1872,682],[1873,682],[1874,682],[1875,682],[1735,682],[1736,681],[1876,8],[1737,8],[1738,681],[1739,8],[1740,8],[1741,8],[1877,682],[1878,682],[1882,682],[1883,681],[1884,682],[1885,681],[1886,682],[1742,8],[1879,682],[1880,682],[1881,682],[1887,681],[1888,682],[1889,681],[1890,681],[1893,681],[1891,681],[1892,681],[1894,682],[1895,682],[1896,682],[1897,724],[1898,682],[1899,681],[1900,682],[1901,682],[1902,682],[1743,8],[1744,8],[1903,682],[1904,682],[1905,682],[1906,682],[1745,8],[1746,8],[1907,682],[1908,682],[1909,682],[1910,681],[1911,725],[1912,681],[1913,726],[1914,682],[1915,682],[1916,681],[1917,682],[1918,681],[1919,682],[1920,682],[1921,682],[1922,681],[1923,682],[1925,682],[1924,682],[1926,681],[1927,681],[1928,681],[1929,681],[1930,682],[1931,682],[1932,681],[1933,682],[1934,682],[1935,682],[1936,727],[1937,682],[1938,681],[1939,682],[1940,728],[1941,682],[1942,682],[1943,682],[1759,681],[1944,681],[1945,681],[1946,729],[1947,681],[1948,730],[1949,682],[1950,731],[1951,732],[1952,682],[1953,733],[1954,682],[1955,682],[1956,734],[1957,682],[1958,682],[1959,682],[1960,682],[1961,682],[1962,682],[1963,682],[1964,681],[1965,681],[1966,682],[1967,735],[1968,682],[1973,682],[1621,682],[1974,736],[2036,8],[2037,8],[2038,8],[2039,8],[2045,737],[2040,8],[2041,8],[2042,738],[2043,739],[2044,8],[2046,740],[2047,741],[2048,742],[2049,742],[2050,742],[2051,8],[2052,742],[2053,8],[2054,8],[2055,8],[2056,8],[2057,743],[2070,744],[2058,742],[2059,742],[2060,743],[2061,742],[2062,742],[2063,8],[2064,8],[2065,8],[2066,742],[2067,8],[2068,8],[2069,8],[2071,742],[2072,8],[2074,745],[2075,746],[2076,8],[2077,8],[2078,8],[2073,747],[2079,8],[2080,8],[2081,747],[2082,682],[2083,748],[2084,682],[2085,682],[2086,8],[2087,8],[2088,747],[2089,8],[2106,749],[2090,682],[2093,750],[2092,751],[2091,745],[2094,752],[2095,8],[2096,8],[2097,680],[2098,8],[2099,753],[2100,753],[2101,754],[2102,8],[2103,8],[2104,682],[2105,8],[2107,755],[2108,756],[2109,757],[2110,757],[2111,756],[2112,758],[2113,758],[2114,8],[2115,758],[2116,758],[2129,759],[2117,756],[2118,760],[2119,756],[2120,758],[2121,761],[2125,758],[2126,758],[2127,758],[2128,758],[2122,758],[2123,758],[2124,758],[2130,756],[2131,762],[1619,763],[1569,764],[1570,764],[1571,764],[1577,765],[1572,764],[1573,764],[1574,764],[1575,764],[1576,764],[1560,766],[1559,8],[1578,767],[1566,8],[1562,768],[1553,8],[1552,8],[1554,8],[1555,764],[1556,769],[1568,770],[1557,764],[1558,764],[1563,771],[1564,772],[1565,764],[1561,8],[1567,8],[1101,8],[1220,773],[1224,773],[1223,773],[1221,773],[1222,773],[1225,773],[1104,773],[1116,773],[1105,773],[1118,773],[1120,773],[1114,773],[1113,773],[1115,773],[1119,773],[1121,773],[1106,773],[1117,773],[1107,773],[1109,774],[1110,773],[1111,773],[1112,773],[1128,773],[1127,773],[1228,775],[1122,773],[1124,773],[1123,773],[1125,773],[1126,773],[1227,773],[1226,773],[1129,773],[1211,773],[1210,773],[1141,776],[1142,776],[1144,773],[1188,773],[1209,773],[1145,776],[1189,773],[1186,773],[1190,773],[1146,773],[1147,773],[1148,776],[1191,773],[1185,776],[1143,776],[1192,773],[1149,776],[1193,773],[1173,773],[1150,776],[1151,773],[1152,773],[1183,776],[1155,773],[1154,773],[1194,773],[1195,773],[1196,776],[1157,773],[1159,773],[1160,773],[1166,773],[1167,773],[1161,776],[1197,773],[1184,776],[1162,773],[1163,773],[1198,773],[1164,773],[1156,776],[1199,773],[1182,773],[1200,773],[1165,776],[1168,773],[1169,773],[1187,776],[1201,773],[1202,773],[1181,777],[1158,773],[1203,776],[1204,773],[1205,773],[1206,773],[1207,776],[1170,773],[1208,773],[1174,773],[1171,776],[1172,776],[1153,773],[1175,773],[1178,773],[1176,773],[1177,773],[1130,773],[1218,773],[1212,773],[1213,773],[1215,773],[1216,773],[1214,773],[1219,773],[1217,773],[1103,778],[1236,779],[1234,780],[1235,781],[1233,782],[1232,773],[1231,783],[1100,8],[1102,8],[1098,8],[1229,8],[1230,784],[1108,778],[1099,8],[1291,8],[1290,8],[1296,785],[1292,786],[1295,787],[1294,788],[1293,8],[2403,8],[1600,8],[1262,706],[2186,8],[1976,789],[2546,790],[2542,791],[2543,792],[2544,793],[2545,8],[2488,794],[2487,100],[2490,795],[2489,794],[2259,796],[2326,797],[2325,798],[2324,799],[2264,800],[2280,801],[2278,802],[2279,803],[2265,804],[2350,805],[2250,8],[2252,8],[2253,806],[2254,8],[2257,807],[2260,8],[2277,808],[2255,8],[2272,809],[2258,810],[2273,811],[2276,812],[2274,812],[2271,813],[2251,8],[2256,8],[2275,814],[2281,815],[2269,8],[2263,816],[2261,817],[2270,818],[2267,819],[2266,819],[2262,820],[2268,821],[2345,822],[2339,823],[2332,824],[2331,825],[2340,826],[2341,812],[2333,827],[2346,828],[2327,829],[2328,830],[2329,831],[2349,832],[2330,825],[2334,828],[2335,833],[2348,834],[2342,835],[2343,810],[2344,833],[2347,812],[2336,831],[2282,836],[2337,837],[2338,838],[2323,839],[2321,840],[2322,840],[2287,840],[2288,840],[2289,840],[2290,840],[2291,840],[2292,840],[2293,840],[2294,840],[2313,840],[2285,840],[2295,840],[2296,840],[2297,840],[2298,840],[2299,840],[2300,840],[2320,840],[2301,840],[2302,840],[2303,840],[2318,840],[2304,840],[2319,840],[2305,840],[2316,840],[2317,840],[2306,840],[2307,840],[2308,840],[2314,840],[2315,840],[2309,840],[2310,840],[2311,840],[2312,840],[2286,841],[2284,842],[2283,843],[2249,8],[2234,8],[1328,844],[1598,845],[1599,846],[1597,847],[1585,848],[1590,849],[1591,850],[1594,851],[1593,852],[1592,853],[1595,854],[1602,855],[1605,856],[1604,857],[1603,858],[1596,859],[1586,661],[1601,860],[1588,861],[1584,862],[1589,863],[1587,848],[2143,864],[1618,8],[1180,865],[1179,8],[1094,8],[51,8],[246,866],[219,8],[197,867],[195,867],[245,868],[210,869],[209,869],[110,870],[61,871],[217,870],[218,870],[220,872],[221,870],[222,873],[121,874],[223,870],[194,870],[224,870],[225,875],[226,870],[227,869],[228,876],[229,870],[230,870],[231,870],[232,870],[233,869],[234,870],[235,870],[236,870],[237,870],[238,877],[239,870],[240,870],[241,870],[242,870],[243,870],[60,868],[63,873],[64,873],[65,873],[66,873],[67,873],[68,873],[69,873],[70,870],[72,878],[73,873],[71,873],[74,873],[75,873],[76,873],[77,873],[78,873],[79,873],[80,870],[81,873],[82,873],[83,873],[84,873],[85,873],[86,870],[87,873],[88,873],[89,873],[90,873],[91,873],[92,873],[93,870],[95,879],[94,873],[96,873],[97,873],[98,873],[99,873],[100,877],[101,870],[102,870],[116,880],[104,881],[105,873],[106,873],[107,870],[108,873],[109,873],[111,882],[112,873],[113,873],[114,873],[115,873],[117,873],[118,873],[119,873],[120,873],[122,883],[123,873],[124,873],[125,873],[126,870],[127,873],[128,884],[129,884],[130,884],[131,870],[132,873],[133,873],[134,873],[139,873],[135,873],[136,870],[137,873],[138,870],[140,873],[141,873],[142,873],[143,873],[144,873],[145,873],[146,870],[147,873],[148,873],[149,873],[150,873],[151,873],[152,873],[153,873],[154,873],[155,873],[156,873],[157,873],[158,873],[159,873],[160,873],[161,873],[162,873],[163,885],[164,873],[165,873],[166,873],[167,873],[168,873],[169,873],[170,870],[171,870],[172,870],[173,870],[174,870],[175,873],[176,873],[177,873],[178,873],[196,886],[244,870],[181,887],[180,888],[204,889],[203,890],[199,891],[198,890],[200,892],[189,893],[187,894],[202,895],[201,892],[188,8],[190,896],[103,897],[59,898],[58,873],[193,8],[185,899],[186,900],[183,8],[184,901],[182,873],[191,902],[62,903],[211,8],[212,8],[205,8],[208,869],[207,8],[213,8],[214,8],[206,904],[215,8],[216,8],[179,905],[192,906],[2492,907],[2497,908],[2495,8],[2496,8],[2494,909],[2491,8],[2419,910],[622,911],[621,8],[643,8],[561,912],[623,8],[570,8],[560,8],[689,8],[776,8],[726,913],[932,914],[773,915],[931,916],[930,916],[775,8],[624,917],[733,918],[729,919],[927,915],[897,8],[847,920],[848,921],[849,921],[861,921],[854,922],[853,923],[855,921],[856,921],[860,924],[858,925],[888,926],[885,8],[884,927],[886,921],[900,928],[898,8],[894,929],[899,8],[893,930],[862,8],[863,8],[866,8],[864,8],[865,8],[867,8],[868,8],[871,8],[869,8],[870,8],[872,8],[873,8],[566,931],[841,8],[842,8],[843,8],[844,8],[567,932],[845,8],[846,8],[875,933],[598,934],[874,8],[601,8],[602,935],[603,935],[852,936],[850,936],[851,8],[558,934],[597,937],[895,938],[565,8],[859,931],[887,446],[857,939],[876,935],[877,940],[878,941],[879,941],[880,941],[881,941],[882,942],[883,942],[892,943],[891,8],[889,8],[890,944],[896,945],[719,8],[720,946],[723,913],[724,913],[725,913],[694,947],[695,948],[714,913],[629,949],[718,913],[634,8],[713,950],[671,951],[635,952],[696,8],[697,953],[717,913],[711,8],[712,954],[698,947],[699,955],[591,8],[716,913],[721,8],[722,956],[727,8],[728,957],[592,958],[700,913],[715,913],[702,8],[703,8],[704,8],[705,8],[706,8],[707,8],[701,8],[708,8],[929,8],[709,959],[710,960],[564,8],[589,8],[620,8],[594,8],[596,8],[682,8],[590,936],[625,8],[628,8],[690,961],[677,962],[730,963],[617,964],[608,8],[599,965],[600,966],[936,928],[609,8],[612,965],[595,8],[610,921],[616,967],[611,942],[604,968],[607,938],[779,969],[802,969],[783,969],[786,970],[788,969],[837,969],[814,969],[778,969],[806,969],[834,969],[785,969],[815,969],[800,969],[803,969],[791,969],[824,971],[820,969],[813,969],[795,972],[794,972],[811,970],[821,969],[839,973],[840,974],[825,975],[817,969],[798,969],[784,969],[787,969],[819,969],[804,970],[812,969],[809,976],[826,976],[810,970],[796,969],[805,969],[838,969],[828,969],[816,969],[836,969],[818,969],[797,969],[832,969],[822,969],[799,969],[827,969],[835,969],[801,969],[823,972],[807,969],[831,977],[782,977],[793,969],[792,969],[790,978],[777,8],[789,969],[833,976],[829,976],[808,976],[830,976],[636,979],[642,980],[641,981],[632,982],[631,8],[640,983],[639,983],[638,983],[920,984],[637,985],[679,8],[630,8],[647,986],[646,987],[901,979],[903,979],[904,979],[905,979],[906,979],[907,979],[908,988],[913,979],[909,979],[910,979],[919,979],[911,979],[912,979],[914,979],[915,979],[916,979],[917,979],[902,979],[918,989],[605,8],[774,990],[941,991],[921,992],[922,993],[925,994],[923,993],[618,995],[619,996],[924,993],[664,8],[569,997],[766,8],[578,8],[583,998],[767,999],[764,8],[668,8],[771,1000],[770,8],[736,8],[765,921],[762,8],[763,1001],[772,1002],[761,8],[760,942],[579,942],[563,1003],[734,1004],[768,8],[769,8],[615,943],[568,8],[585,938],[665,1005],[588,1006],[587,1007],[584,1008],[735,1009],[669,1010],[576,1011],[737,1012],[581,1013],[580,1014],[577,1015],[614,1016],[555,8],[582,8],[556,8],[557,8],[559,8],[562,999],[554,8],[606,8],[613,8],[586,1017],[693,1018],[933,1019],[692,995],[934,1020],[935,1021],[575,1022],[781,1023],[780,1024],[633,1025],[744,1026],[684,1027],[753,1028],[685,1029],[755,1030],[745,1031],[757,1032],[758,1033],[743,8],[751,1034],[672,1035],[747,1036],[746,1036],[732,1037],[731,1037],[756,1038],[676,1039],[674,1040],[675,1040],[686,8],[748,8],[759,1041],[749,8],[754,1042],[681,1043],[752,1044],[750,8],[683,1045],[673,8],[742,1046],[926,1047],[928,1048],[939,8],[678,1049],[645,8],[691,1050],[644,8],[680,1051],[688,1052],[687,1053],[663,8],[571,8],[667,8],[626,8],[738,8],[740,1054],[648,8],[573,446],[937,1055],[593,1056],[741,1057],[666,1058],[572,1059],[670,1060],[627,1061],[739,1062],[649,1063],[574,1064],[662,1065],[650,8],[661,1066],[656,1067],[657,1068],[660,963],[659,1069],[655,1068],[658,1069],[651,963],[652,963],[653,963],[654,1070],[938,1071],[940,1072],[49,8],[50,8],[9,8],[11,8],[10,8],[2,8],[12,8],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[3,8],[20,8],[4,8],[21,8],[25,8],[22,8],[23,8],[24,8],[26,8],[27,8],[28,8],[5,8],[29,8],[30,8],[31,8],[32,8],[6,8],[36,8],[33,8],[34,8],[35,8],[37,8],[7,8],[38,8],[43,8],[44,8],[39,8],[40,8],[41,8],[42,8],[8,8],[48,8],[45,8],[46,8],[47,8],[1,8],[992,1073],[1002,1074],[991,1073],[1012,1075],[983,1076],[982,1077],[1011,706],[1005,1078],[1010,1079],[985,1080],[999,1081],[984,1082],[1008,1083],[980,1084],[979,706],[1009,1085],[981,1086],[986,1087],[987,8],[990,1087],[977,8],[1013,1088],[1003,1089],[994,1090],[995,1091],[997,1092],[993,1093],[996,1094],[1006,706],[988,1095],[989,1096],[998,1097],[978,592],[1001,1089],[1000,1087],[1004,8],[1007,1098],[1373,1099],[1348,1100],[1361,1101],[1345,1102],[1362,592],[1371,1103],[1336,1104],[1337,1105],[1335,1077],[1370,706],[1365,1106],[1369,1107],[1339,1108],[1358,1109],[1338,1110],[1368,1111],[1333,1112],[1334,1113],[1340,1114],[1341,8],[1347,1115],[1344,1114],[1331,1116],[1372,1117],[1363,1118],[1351,1119],[1350,1114],[1352,1120],[1355,1121],[1349,1122],[1353,1123],[1366,706],[1342,1124],[1343,1125],[1356,1126],[1332,1127],[1360,1128],[1359,1114],[1346,1125],[1354,1129],[1357,1130],[1364,8],[1330,8],[1367,1131],[3133,1132],[3117,8],[3118,8],[3120,1133],[3121,8],[3119,8],[3122,1133],[3123,1133],[3125,1134],[3124,1133],[3126,1133],[3127,1134],[3128,1133],[3129,8],[3130,1133],[3131,8],[3132,8],[553,8],[1091,1135],[1092,1136],[955,1137],[957,1138],[958,1139],[953,1140],[952,1141],[954,1142],[951,1143],[956,1144],[959,1145],[1093,134],[1097,1146],[1096,1147],[1237,1148],[437,1149],[550,1150],[551,134],[1247,1151],[1249,1152],[1246,1153],[1250,1154],[1251,1155],[1242,1156],[1243,1157],[1241,1158],[1240,1159],[1238,8],[1239,8],[1244,134],[1248,1160],[1245,1161],[1253,1162],[1274,1163],[1275,1164],[1276,1164],[1252,8],[1277,1165],[1306,1166],[1307,134],[1089,1167],[1083,1168],[1090,1169],[1311,1170],[1313,1171],[1314,1154],[1315,1154],[1316,1172],[1317,1173],[1308,8],[1309,8],[1312,8],[1310,8],[1318,1174],[1319,8],[1320,1154],[1321,446],[1322,8],[1323,1148],[1324,1148],[1537,1175],[1538,8],[1082,8],[1539,8],[1540,8],[545,1176],[544,8],[1542,1177],[1543,1178],[1544,8],[1545,1179],[1546,1180],[1325,448],[1547,134],[1548,134],[1549,134],[1551,1181],[1579,1182],[1580,134],[1581,1183],[1582,8],[1583,1184],[1607,1185],[1608,1186],[1610,1187],[1609,134],[1541,1188],[1606,1189],[1536,1190],[1611,134],[1612,8],[1550,1191],[1613,1192],[1614,1193],[1615,134],[1272,8],[1616,8],[1617,1167],[2133,1194],[2134,1195],[2141,1196],[2144,1197],[2145,8],[2146,1198],[2147,1154],[2148,1154],[2149,1154],[2150,1199],[1085,1200],[1087,1201],[1086,1202],[1084,1203],[2151,1204],[2152,1205],[2156,1206],[2157,1207],[2155,1208],[2154,1208],[2153,8],[2206,1209],[2205,1210],[2207,1154],[2208,1211],[2203,1212],[2209,1154],[2212,1213],[2213,1154],[2218,1214],[2215,1154],[2204,1215],[2214,1216],[2217,1217],[2216,1218],[2226,1219],[2225,1220],[2200,1221],[2198,1222],[2202,1223],[2221,1224],[2223,1225],[2228,1226],[2229,1227],[2219,1227],[2232,1228],[2230,1229],[2231,1230],[2224,8],[2199,8],[2222,8],[2227,8],[2233,1231],[2220,8],[2210,8],[2211,8],[2197,8],[2201,8],[2235,1232],[2236,1233],[2237,8],[2240,1234],[2238,446],[2241,446],[2242,1235],[2239,1236],[2243,1237],[2244,1235],[2245,1238],[2246,1239],[2536,1240],[2537,1240],[2539,1241],[2538,1242],[2541,1243],[2549,1244],[2550,350],[2551,8],[2552,1245],[2540,1246],[2547,1247],[2553,1248],[2548,1249],[2554,8],[2555,134],[2556,134],[2558,1154],[2559,1154],[2560,1154],[2561,1211],[2562,1211],[2563,1154],[2564,446],[2557,8],[552,1250],[2565,1154],[2566,1251],[2567,8],[2568,1252],[2569,1253],[2571,1254],[2570,1255],[2573,1256],[1273,8],[2572,1257],[2580,1258],[2579,1259],[2577,1260],[2576,1261],[2581,1262],[2582,446],[2584,1263],[2583,446],[2685,1264],[2687,1265],[2686,446],[2688,134],[2706,1266],[2707,1267],[2690,1267],[2689,1147],[2708,1148],[1095,1268],[3113,1269],[3114,1235],[3111,1235],[3112,1270],[3115,1271],[3116,8],[3134,1272],[3135,1154],[3137,1273],[3139,1274],[3136,446],[3138,446],[3140,1275],[3141,134],[3142,1276],[3143,1277],[3145,1278],[3147,1279],[3149,1280],[3159,1281],[3160,1282],[3144,1202],[3148,1283],[3146,1235],[3161,8],[3162,1284],[3163,134],[3168,1285],[3167,446],[3164,8],[3166,1286],[3165,1287],[3171,1288],[3170,8],[3172,1289],[3173,1290],[3169,8],[3175,1154],[3176,1291],[3177,8],[3174,8],[3178,1292],[3179,1293],[3180,1294],[546,8],[548,1295],[549,1296],[547,1297],[3185,134],[3184,134],[3182,1298],[3228,1299],[3230,1300],[3231,1301],[3229,1302],[3232,1303],[3181,1304],[3183,134],[3233,8],[3235,1305],[3234,1306],[3251,1307],[3236,134],[3237,1308],[3252,1309],[3254,1310],[3253,1311],[3263,1312],[3260,1313],[3261,1314],[3268,134],[2578,134],[3259,1315],[3257,1316],[3256,1316],[3258,1316],[2574,446],[3266,1259],[2575,1317],[3255,8],[3264,1318],[3265,1319],[3267,1320],[3262,1321],[3270,1322],[1088,1323],[3269,8],[3271,8],[3276,1324],[3274,1167],[3273,1325],[3275,1326],[3272,1327],[3278,1328],[3287,1329],[3277,1330],[3286,1331],[3282,1332],[3281,1332],[3279,1332],[3285,1333],[3280,1332],[3284,1332],[3283,1332],[3288,1334]],"semanticDiagnosticsPerFile":[3213,3186,3189,3190,3191,3192,3193,3194,3195,3196,3197,3218,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3214,3227,3187,3226,3188,3225,3221,3224,3220,3222,3223,3215,3219,3217,3216,3091,3045,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3096,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3092,3110,3046,3109,3047,3108,3107,3098,3099,3100,3101,3102,3103,3105,3104,3106,3093,3097,3095,3094,3031,3004,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3036,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3032,3044,3005,3043,3006,3042,3041,3038,3039,3040,3033,3037,3035,3034,2985,2984,3000,2986,2983,2999,3002,3001,3003,2779,2821,2825,2820,2822,2824,2823,2826,2828,2827,2780,2781,2782,2783,2784,2785,2786,2795,2796,2797,2798,2799,2800,2801,2789,2802,2803,2788,2790,2787,2793,2791,2792,2819,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2794,2818,1535,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1439,1534,1440,1438,1441,1437,1327,1329,1375,1374,1436,1435,1432,1430,1431,1429,1377,1380,1379,1381,1378,1376,1326,1433,1434,2356,2677,2684,2675,2681,2683,2682,2680,2678,2679,2640,2641,2642,2643,2639,2637,2638,2645,2646,2650,2651,2647,2648,2649,2652,2653,2654,2644,2655,2674,2670,2671,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2672,2673,2636,2676,2632,2624,2634,2625,2630,2635,2633,2623,2631,2620,2621,2622,2585,2626,2629,2628,2627,2586,2587,2588,2600,2589,2590,2591,2592,2595,2597,2598,2593,2594,2596,2617,2599,2601,2602,2603,2604,2610,2611,2605,2607,2606,2608,2609,2612,2613,2614,2615,2616,2619,2618,2158,2159,2161,2160,2162,2163,2166,2164,2165,2173,2169,2178,2174,2175,2176,2177,2179,2180,2181,2185,2170,2168,2172,2171,2182,2183,2184,3238,3241,3242,3243,3244,3245,3249,3246,3247,3239,3240,3248,3250,446,314,52,303,304,305,306,316,307,308,309,310,311,312,313,315,323,325,322,328,326,324,320,321,327,329,317,319,318,258,261,257,493,259,260,346,331,338,335,348,339,345,330,349,352,343,333,351,336,334,344,340,350,337,347,332,342,341,359,355,354,353,358,397,53,54,55,475,57,481,480,247,248,368,277,278,369,249,370,371,56,251,252,250,253,254,256,268,269,274,270,271,272,273,275,276,282,285,283,284,302,286,287,524,267,265,263,264,266,294,288,297,290,295,293,296,291,292,280,298,281,300,301,289,255,262,299,365,360,366,361,362,363,364,367,383,382,388,380,381,384,385,387,386,389,374,375,378,377,376,379,373,391,390,393,392,394,356,357,279,395,372,396,1254,1265,1266,1270,1255,1261,1263,1264,1256,1257,1260,1258,1259,1268,1269,1267,1271,444,445,466,467,468,469,470,479,472,476,484,482,483,473,485,487,488,489,478,474,498,486,513,471,514,511,512,536,461,457,459,510,452,500,499,460,507,464,508,509,462,456,463,458,451,504,517,515,447,503,448,449,450,454,453,516,455,492,490,491,501,502,505,520,521,518,519,522,523,525,497,494,495,496,527,526,533,465,529,528,531,530,532,477,506,535,534,2136,2137,2139,2135,2138,2140,2187,2193,2192,2194,2195,2196,2188,2190,2191,2189,2247,2428,2429,2430,2431,2432,2433,2448,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2504,2505,2508,2510,2511,2509,2420,2507,2502,2512,2506,2513,2503,2514,2535,2248,2426,2352,2527,2353,2354,2351,2355,2422,2423,2427,2424,2483,2425,2421,2449,2517,2515,2516,2474,2463,2461,2464,2473,2468,2476,2470,2477,2466,2478,2467,2475,2479,2471,2481,2482,2521,2455,2450,2456,2457,2459,2465,2469,2451,2454,2452,2458,2520,2453,2462,2460,2519,2472,2518,2480,2484,2485,2486,2498,2501,2499,2500,2522,2523,2525,2524,2526,2532,2528,2529,2530,2531,2533,2534,2377,2398,2370,2402,2401,2415,2412,2410,2391,2387,2407,2414,2384,2371,2405,2375,2374,2364,2361,2363,2365,2394,2360,2406,2373,2383,2372,2359,2390,2416,2357,2396,2397,2409,2358,2413,2388,2376,2404,2380,2411,2392,2368,2369,2408,2366,2379,2385,2378,2400,2382,2381,2386,2362,2389,2367,2395,2393,2399,3157,3152,3150,3153,3154,3155,3156,3151,3158,960,964,1080,961,963,962,965,1078,1079,1081,1297,1300,1298,1299,1278,1279,1304,1301,1302,1303,1305,398,399,402,403,404,406,405,420,407,408,409,410,411,412,413,415,416,417,418,419,421,426,435,425,400,414,423,424,422,427,432,428,429,430,431,401,433,434,436,543,441,540,438,439,442,443,537,440,538,539,541,542,945,943,944,949,942,947,946,948,950,1390,1393,1398,1401,1422,1400,1382,1383,1384,1387,1385,1386,1423,1389,1388,1424,1392,1391,1428,1425,1395,1397,1394,1396,1426,1399,1427,1402,1421,1418,1420,1405,1412,1414,1416,1415,1407,1404,1408,1419,1409,1406,1417,1403,1410,1411,1413,2850,2846,2847,2849,2848,2860,2851,2853,2852,2855,2854,2858,2859,2856,2857,2931,2932,2912,2913,2936,2935,2945,2938,2939,2937,2944,2940,2941,2943,2942,2934,2914,2929,2916,2915,2923,2918,2919,2924,2921,2920,2917,2926,2925,2922,2927,2928,2968,2969,2972,2980,2973,2974,2975,2976,2977,2978,2979,2933,2946,2930,2981,2863,2865,2864,2866,2867,2869,2861,2868,2862,2884,2888,2885,2887,2881,2882,2883,2880,2879,2886,2844,2829,2842,2843,2845,2892,2893,2894,2895,2891,2889,2890,2898,2896,2897,2834,2838,2830,2831,2832,2833,2841,2835,2836,2837,2840,2839,2989,2995,2990,2991,2992,2996,2998,2993,2994,2997,2988,2987,2899,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2958,2959,2957,2960,2961,2982,2962,2963,2964,2965,2966,2967,2709,2710,2711,2712,2725,2726,2723,2724,2727,2730,2732,2733,2715,2734,2738,2736,2737,2731,2740,2716,2742,2743,2746,2745,2741,2744,2739,2747,2748,2752,2753,2751,2729,2717,2720,2754,2755,2756,2713,2758,2757,2778,2718,2722,2759,2760,2714,2750,2766,2765,2762,2763,2764,2761,2749,2767,2768,2769,2770,2771,2735,2773,2774,2728,2775,2776,2772,2719,2721,2777,2872,2875,2873,2876,2874,2878,2877,2870,2871,2900,2902,2901,2903,2904,2905,2906,2907,2911,2908,2909,2910,2971,2970,2142,2418,2417,1074,1073,1070,1076,1075,1071,1289,1282,1286,1284,1287,1285,1288,1283,1281,1280,1015,1016,1017,1018,1019,1020,966,969,967,968,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,972,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1050,1049,1051,1052,1053,1054,1055,1056,1057,971,970,1066,1058,1059,1060,1061,1062,1063,973,974,975,1014,1064,1065,2704,2691,2698,2694,2692,2695,2699,2700,2697,2696,2701,2702,2703,2693,1077,1068,1069,1067,1072,1140,1131,1132,1133,1134,1135,1136,1137,1138,1139,2493,2705,976,2167,2132,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2009,2004,2010,2005,2006,2007,2008,2034,2011,2025,2012,2013,2014,2024,2015,2016,2017,2018,2019,2020,2021,2022,2023,2026,2027,2028,2029,2031,2030,2032,2033,2035,1982,1972,1969,1977,1975,1971,1970,1979,1978,1981,1980,1620,1623,1624,1625,1626,1627,1628,1629,1631,1630,1632,1633,1634,1635,1747,1636,1637,1638,1639,1748,1749,1750,1751,1752,1753,1755,1756,1757,1758,1760,1761,1762,1640,1641,1642,1643,1645,1644,1646,1647,1648,1649,1650,1651,1652,1653,1654,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1685,1680,1681,1682,1683,1684,1686,1687,1688,1689,1763,1690,1764,1765,1766,1691,1767,1692,1769,1768,1770,1771,1772,1773,1774,1775,1693,1777,1776,1694,1695,1696,1697,1698,1699,1701,1700,1702,1703,1704,1655,1778,1779,1780,1781,1784,1782,1783,1785,1788,1786,1787,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1705,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1622,1706,1707,1708,1709,1710,1711,1712,1831,1833,1832,1834,1835,1836,1837,1838,1754,1713,1840,1839,1841,1842,1843,1844,1845,1846,1847,1848,1714,1715,1716,1717,1718,1849,1850,1719,1720,1721,1722,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1723,1864,1865,1866,1724,1725,1726,1727,1728,1729,1730,1731,1867,1868,1732,1733,1869,1734,1871,1870,1872,1873,1874,1875,1735,1736,1876,1737,1738,1739,1740,1741,1877,1878,1882,1883,1884,1885,1886,1742,1879,1880,1881,1887,1888,1889,1890,1893,1891,1892,1894,1895,1896,1897,1898,1899,1900,1901,1902,1743,1744,1903,1904,1905,1906,1745,1746,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1925,1924,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1759,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1973,1621,1974,2036,2037,2038,2039,2045,2040,2041,2042,2043,2044,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2070,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2071,2072,2074,2075,2076,2077,2078,2073,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2106,2090,2093,2092,2091,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2129,2117,2118,2119,2120,2121,2125,2126,2127,2128,2122,2123,2124,2130,2131,1619,1569,1570,1571,1577,1572,1573,1574,1575,1576,1560,1559,1578,1566,1562,1553,1552,1554,1555,1556,1568,1557,1558,1563,1564,1565,1561,1567,1101,1220,1224,1223,1221,1222,1225,1104,1116,1105,1118,1120,1114,1113,1115,1119,1121,1106,1117,1107,1109,1110,1111,1112,1128,1127,1228,1122,1124,1123,1125,1126,1227,1226,1129,1211,1210,1141,1142,1144,1188,1209,1145,1189,1186,1190,1146,1147,1148,1191,1185,1143,1192,1149,1193,1173,1150,1151,1152,1183,1155,1154,1194,1195,1196,1157,1159,1160,1166,1167,1161,1197,1184,1162,1163,1198,1164,1156,1199,1182,1200,1165,1168,1169,1187,1201,1202,1181,1158,1203,1204,1205,1206,1207,1170,1208,1174,1171,1172,1153,1175,1178,1176,1177,1130,1218,1212,1213,1215,1216,1214,1219,1217,1103,1236,1234,1235,1233,1232,1231,1100,1102,1098,1229,1230,1108,1099,1291,1290,1296,1292,1295,1294,1293,2403,1600,1262,2186,1976,2546,2542,2543,2544,2545,2488,2487,2490,2489,2259,2326,2325,2324,2264,2280,2278,2279,2265,2350,2250,2252,2253,2254,2257,2260,2277,2255,2272,2258,2273,2276,2274,2271,2251,2256,2275,2281,2269,2263,2261,2270,2267,2266,2262,2268,2345,2339,2332,2331,2340,2341,2333,2346,2327,2328,2329,2349,2330,2334,2335,2348,2342,2343,2344,2347,2336,2282,2337,2338,2323,2321,2322,2287,2288,2289,2290,2291,2292,2293,2294,2313,2285,2295,2296,2297,2298,2299,2300,2320,2301,2302,2303,2318,2304,2319,2305,2316,2317,2306,2307,2308,2314,2315,2309,2310,2311,2312,2286,2284,2283,2249,2234,1328,1598,1599,1597,1585,1590,1591,1594,1593,1592,1595,1602,1605,1604,1603,1596,1586,1601,1588,1584,1589,1587,2143,1618,1180,1179,1094,51,246,219,197,195,245,210,209,110,61,217,218,220,221,222,121,223,194,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,60,63,64,65,66,67,68,69,70,72,73,71,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,99,100,101,102,116,104,105,106,107,108,109,111,112,113,114,115,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,139,135,136,137,138,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,196,244,181,180,204,203,199,198,200,189,187,202,201,188,190,103,59,58,193,185,186,183,184,182,191,62,211,212,205,208,207,213,214,206,215,216,179,192,2492,2497,2495,2496,2494,2491,2419,622,621,643,561,623,570,560,689,776,726,932,773,931,930,775,624,733,729,927,897,847,848,849,861,854,853,855,856,860,858,888,885,884,886,900,898,894,899,893,862,863,866,864,865,867,868,871,869,870,872,873,566,841,842,843,844,567,845,846,875,598,874,601,602,603,852,850,851,558,597,895,565,859,887,857,876,877,878,879,880,881,882,883,892,891,889,890,896,719,720,723,724,725,694,695,714,629,718,634,713,671,635,696,697,717,711,712,698,699,591,716,721,722,727,728,592,700,715,702,703,704,705,706,707,701,708,929,709,710,564,589,620,594,596,682,590,625,628,690,677,730,617,608,599,600,936,609,612,595,610,616,611,604,607,779,802,783,786,788,837,814,778,806,834,785,815,800,803,791,824,820,813,795,794,811,821,839,840,825,817,798,784,787,819,804,812,809,826,810,796,805,838,828,816,836,818,797,832,822,799,827,835,801,823,807,831,782,793,792,790,777,789,833,829,808,830,636,642,641,632,631,640,639,638,920,637,679,630,647,646,901,903,904,905,906,907,908,913,909,910,919,911,912,914,915,916,917,902,918,605,774,941,921,922,925,923,618,619,924,664,569,766,578,583,767,764,668,771,770,736,765,762,763,772,761,760,579,563,734,768,769,615,568,585,665,588,587,584,735,669,576,737,581,580,577,614,555,582,556,557,559,562,554,606,613,586,693,933,692,934,935,575,781,780,633,744,684,753,685,755,745,757,758,743,751,672,747,746,732,731,756,676,674,675,686,748,759,749,754,681,752,750,683,673,742,926,928,939,678,645,691,644,680,688,687,663,571,667,626,738,740,648,573,937,593,741,666,572,670,627,739,649,574,662,650,661,656,657,660,659,655,658,651,652,653,654,938,940,49,50,9,11,10,2,12,13,14,15,16,17,18,19,3,20,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,1,992,1002,991,1012,983,982,1011,1005,1010,985,999,984,1008,980,979,1009,981,986,987,990,977,1013,1003,994,995,997,993,996,1006,988,989,998,978,1001,1000,1004,1007,1373,1348,1361,1345,1362,1371,1336,1337,1335,1370,1365,1369,1339,1358,1338,1368,1333,1334,1340,1341,1347,1344,1331,1372,1363,1351,1350,1352,1355,1349,1353,1366,1342,1343,1356,1332,1360,1359,1346,1354,1357,1364,1330,1367,3133,3117,3118,3120,3121,3119,3122,3123,3125,3124,3126,3127,3128,3129,3130,3131,3132,553,1091,1092,955,957,958,953,952,954,951,956,959,1093,1097,1096,1237,437,550,551,1247,1249,1246,1250,1251,1242,1243,1241,1240,1238,1239,1244,1248,1245,1253,1274,1275,1276,1252,1277,1306,1307,1089,1083,1090,1311,1313,1314,1315,1316,1317,1308,1309,1312,1310,1318,1319,1320,1321,1322,1323,1324,1537,1538,1082,1539,1540,545,544,1542,1543,1544,1545,1546,1325,1547,1548,1549,1551,1579,1580,1581,1582,1583,1607,1608,1610,1609,1541,1606,1536,1611,1612,1550,1613,1614,1615,1272,1616,1617,2133,2134,2141,2144,2145,2146,2147,2148,2149,2150,1085,1087,1086,1084,2151,2152,2156,2157,2155,2154,2153,2206,2205,2207,2208,2203,2209,2212,2213,2218,2215,2204,2214,2217,2216,2226,2225,2200,2198,2202,2221,2223,2228,2229,2219,2232,2230,2231,2224,2199,2222,2227,2233,2220,2210,2211,2197,2201,2235,2236,2237,2240,2238,2241,2242,2239,2243,2244,2245,2246,2536,2537,2539,2538,2541,2549,2550,2551,2552,2540,2547,2553,2548,2554,2555,2556,2558,2559,2560,2561,2562,2563,2564,2557,552,2565,2566,2567,2568,2569,2571,2570,2573,1273,2572,2580,2579,2577,2576,2581,2582,2584,2583,2685,2687,2686,2688,2706,2707,2690,2689,2708,1095,3113,3114,3111,3112,3115,3116,3134,3135,3137,3139,3136,3138,3140,3141,3142,3143,3145,3147,3149,3159,3160,3144,3148,3146,3161,3162,3163,3168,3167,3164,3166,3165,3171,3170,3172,3173,3169,3175,3176,3177,3174,3178,3179,3180,546,548,549,547,3185,3184,3182,3228,3230,3231,3229,3232,3181,3183,3233,3235,3234,3251,3236,3237,3252,3254,3253,3263,3260,3261,3268,2578,3259,3257,3256,3258,2574,3266,2575,3255,3264,3265,3267,3262,3270,1088,3269,3271,3276,3274,3273,3275,3272,3278,3287,3277,3286,3282,3281,3279,3285,3280,3284,3283,3288]},"version":"5.4.5"} \ No newline at end of file +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/reflect-metadata/index.d.ts","./node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","./node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","./node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","./node_modules/rxjs/dist/types/internal/subscription.d.ts","./node_modules/rxjs/dist/types/internal/subscriber.d.ts","./node_modules/rxjs/dist/types/internal/operator.d.ts","./node_modules/rxjs/dist/types/internal/observable.d.ts","./node_modules/rxjs/dist/types/internal/types.d.ts","./node_modules/rxjs/dist/types/internal/operators/audit.d.ts","./node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","./node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","./node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","./node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","./node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/concat.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/connect.d.ts","./node_modules/rxjs/dist/types/internal/operators/count.d.ts","./node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","./node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","./node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/delay.d.ts","./node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","./node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","./node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","./node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/every.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","./node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/expand.d.ts","./node_modules/rxjs/dist/types/internal/operators/filter.d.ts","./node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","./node_modules/rxjs/dist/types/internal/operators/find.d.ts","./node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","./node_modules/rxjs/dist/types/internal/operators/first.d.ts","./node_modules/rxjs/dist/types/internal/subject.d.ts","./node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","./node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","./node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/last.d.ts","./node_modules/rxjs/dist/types/internal/operators/map.d.ts","./node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","./node_modules/rxjs/dist/types/internal/notification.d.ts","./node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","./node_modules/rxjs/dist/types/internal/operators/max.d.ts","./node_modules/rxjs/dist/types/internal/operators/merge.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","./node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","./node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","./node_modules/rxjs/dist/types/internal/operators/min.d.ts","./node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","./node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","./node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","./node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","./node_modules/rxjs/dist/types/internal/operators/partition.d.ts","./node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","./node_modules/rxjs/dist/types/internal/operators/publish.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","./node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","./node_modules/rxjs/dist/types/internal/operators/race.d.ts","./node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","./node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","./node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","./node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/retry.d.ts","./node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","./node_modules/rxjs/dist/types/internal/operators/sample.d.ts","./node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","./node_modules/rxjs/dist/types/internal/operators/scan.d.ts","./node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","./node_modules/rxjs/dist/types/internal/operators/share.d.ts","./node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","./node_modules/rxjs/dist/types/internal/operators/single.d.ts","./node_modules/rxjs/dist/types/internal/operators/skip.d.ts","./node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","./node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","./node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","./node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","./node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","./node_modules/rxjs/dist/types/internal/operators/take.d.ts","./node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","./node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","./node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","./node_modules/rxjs/dist/types/internal/operators/tap.d.ts","./node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","./node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","./node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","./node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","./node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","./node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","./node_modules/rxjs/dist/types/internal/operators/window.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","./node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","./node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","./node_modules/rxjs/dist/types/internal/operators/zip.d.ts","./node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","./node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","./node_modules/rxjs/dist/types/operators/index.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","./node_modules/rxjs/dist/types/internal/scheduler.d.ts","./node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","./node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","./node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","./node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","./node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","./node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","./node_modules/rxjs/dist/types/testing/index.d.ts","./node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","./node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","./node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","./node_modules/rxjs/dist/types/internal/replaysubject.d.ts","./node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","./node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","./node_modules/rxjs/dist/types/internal/util/identity.d.ts","./node_modules/rxjs/dist/types/internal/util/pipe.d.ts","./node_modules/rxjs/dist/types/internal/util/noop.d.ts","./node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","./node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","./node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","./node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","./node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","./node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","./node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","./node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","./node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","./node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","./node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","./node_modules/rxjs/dist/types/internal/anycatcher.d.ts","./node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","./node_modules/rxjs/dist/types/internal/observable/concat.d.ts","./node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","./node_modules/rxjs/dist/types/internal/observable/defer.d.ts","./node_modules/rxjs/dist/types/internal/observable/empty.d.ts","./node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","./node_modules/rxjs/dist/types/internal/observable/from.d.ts","./node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","./node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","./node_modules/rxjs/dist/types/internal/observable/generate.d.ts","./node_modules/rxjs/dist/types/internal/observable/iif.d.ts","./node_modules/rxjs/dist/types/internal/observable/interval.d.ts","./node_modules/rxjs/dist/types/internal/observable/merge.d.ts","./node_modules/rxjs/dist/types/internal/observable/never.d.ts","./node_modules/rxjs/dist/types/internal/observable/of.d.ts","./node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","./node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","./node_modules/rxjs/dist/types/internal/observable/partition.d.ts","./node_modules/rxjs/dist/types/internal/observable/race.d.ts","./node_modules/rxjs/dist/types/internal/observable/range.d.ts","./node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","./node_modules/rxjs/dist/types/internal/observable/timer.d.ts","./node_modules/rxjs/dist/types/internal/observable/using.d.ts","./node_modules/rxjs/dist/types/internal/observable/zip.d.ts","./node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","./node_modules/rxjs/dist/types/internal/config.d.ts","./node_modules/rxjs/dist/types/index.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","./node_modules/@nestjs/common/interfaces/type.interface.d.ts","./node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","./node_modules/@nestjs/common/enums/request-method.enum.d.ts","./node_modules/@nestjs/common/enums/http-status.enum.d.ts","./node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","./node_modules/@nestjs/common/enums/version-type.enum.d.ts","./node_modules/@nestjs/common/enums/index.d.ts","./node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","./node_modules/@nestjs/common/interfaces/middleware/index.d.ts","./node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","./node_modules/@nestjs/common/interfaces/hooks/index.d.ts","./node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","./node_modules/@nestjs/common/services/logger.service.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","./node_modules/@nestjs/common/interfaces/http/index.d.ts","./node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","./node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","./node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","./node_modules/@nestjs/common/interfaces/modules/index.d.ts","./node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","./node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","./node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","./node_modules/@nestjs/common/interfaces/index.d.ts","./node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","./node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","./node_modules/@nestjs/common/decorators/core/index.d.ts","./node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","./node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","./node_modules/@nestjs/common/decorators/modules/index.d.ts","./node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","./node_modules/@nestjs/common/decorators/http/index.d.ts","./node_modules/@nestjs/common/decorators/index.d.ts","./node_modules/@nestjs/common/exceptions/http.exception.d.ts","./node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","./node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","./node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","./node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","./node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","./node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","./node_modules/@nestjs/common/exceptions/gone.exception.d.ts","./node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","./node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","./node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","./node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","./node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","./node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","./node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","./node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","./node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","./node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","./node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","./node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","./node_modules/@nestjs/common/exceptions/index.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","./node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","./node_modules/@nestjs/common/services/console-logger.service.d.ts","./node_modules/@nestjs/common/services/index.d.ts","./node_modules/@nestjs/common/file-stream/streamable-file.d.ts","./node_modules/@nestjs/common/file-stream/index.d.ts","./node_modules/@nestjs/common/module-utils/constants.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","./node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","./node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","./node_modules/@nestjs/common/module-utils/index.d.ts","./node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","./node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","./node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","./node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","./node_modules/@nestjs/common/pipes/validation.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","./node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","./node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","./node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","./node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","./node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","./node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","./node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","./node_modules/@nestjs/common/pipes/file/index.d.ts","./node_modules/@nestjs/common/pipes/index.d.ts","./node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","./node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","./node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","./node_modules/@nestjs/common/serializer/decorators/index.d.ts","./node_modules/@nestjs/common/serializer/index.d.ts","./node_modules/@nestjs/common/utils/forward-ref.util.d.ts","./node_modules/@nestjs/common/utils/index.d.ts","./node_modules/@nestjs/common/index.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-basic.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-bearer.decorator.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/open-api-spec.interface.d.ts","./node_modules/@nestjs/swagger/dist/types/swagger-enum.type.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-body.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-consumes.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-cookie.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-exclude-endpoint.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-exclude-controller.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-extra-models.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-header.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-hide-property.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-oauth2.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-operation.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-param.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-produces.decorator.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/schema-object-metadata.interface.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-query.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-security.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-use-tags.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/api-extension.decorator.d.ts","./node_modules/@nestjs/swagger/dist/decorators/index.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-ui-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-custom-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/swagger-document-options.interface.d.ts","./node_modules/@nestjs/swagger/dist/interfaces/index.d.ts","./node_modules/@nestjs/swagger/dist/document-builder.d.ts","./node_modules/@nestjs/swagger/dist/swagger-module.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/intersection-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/omit-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/partial-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/pick-type.helper.d.ts","./node_modules/@nestjs/swagger/dist/type-helpers/index.d.ts","./node_modules/@nestjs/swagger/dist/utils/get-schema-path.util.d.ts","./node_modules/@nestjs/swagger/dist/utils/index.d.ts","./node_modules/@nestjs/swagger/dist/index.d.ts","./node_modules/@nestjs/swagger/index.d.ts","./src/rate-limiting/rate-limiting.constants.ts","./src/rate-limiting/decorators/quota.decorator.ts","./src/app.controller.ts","./node_modules/@nestjs/core/adapters/http-adapter.d.ts","./node_modules/@nestjs/core/adapters/index.d.ts","./node_modules/@nestjs/common/constants.d.ts","./node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","./node_modules/@nestjs/core/injector/settlement-signal.d.ts","./node_modules/@nestjs/core/injector/injector.d.ts","./node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","./node_modules/@nestjs/core/inspector/serialized-graph.d.ts","./node_modules/@nestjs/core/injector/module-token-factory.d.ts","./node_modules/@nestjs/core/injector/compiler.d.ts","./node_modules/@nestjs/core/injector/modules-container.d.ts","./node_modules/@nestjs/core/injector/container.d.ts","./node_modules/@nestjs/core/injector/instance-links-host.d.ts","./node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","./node_modules/@nestjs/core/injector/module-ref.d.ts","./node_modules/@nestjs/core/injector/module.d.ts","./node_modules/@nestjs/core/injector/instance-wrapper.d.ts","./node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","./node_modules/@nestjs/core/application-config.d.ts","./node_modules/@nestjs/core/constants.d.ts","./node_modules/@nestjs/core/discovery/discovery-module.d.ts","./node_modules/@nestjs/core/discovery/discovery-service.d.ts","./node_modules/@nestjs/core/discovery/index.d.ts","./node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","./node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","./node_modules/@nestjs/core/exceptions/index.d.ts","./node_modules/@nestjs/core/helpers/context-id-factory.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","./node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","./node_modules/@nestjs/core/router/router-proxy.d.ts","./node_modules/@nestjs/core/helpers/context-creator.d.ts","./node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","./node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","./node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","./node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","./node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","./node_modules/@nestjs/core/guards/constants.d.ts","./node_modules/@nestjs/core/helpers/execution-context-host.d.ts","./node_modules/@nestjs/core/guards/guards-consumer.d.ts","./node_modules/@nestjs/core/guards/guards-context-creator.d.ts","./node_modules/@nestjs/core/guards/index.d.ts","./node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","./node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","./node_modules/@nestjs/core/interceptors/index.d.ts","./node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","./node_modules/@nestjs/core/pipes/params-token-factory.d.ts","./node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","./node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","./node_modules/@nestjs/core/pipes/index.d.ts","./node_modules/@nestjs/core/helpers/context-utils.d.ts","./node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","./node_modules/@nestjs/core/injector/inquirer/index.d.ts","./node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","./node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","./node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","./node_modules/@nestjs/core/inspector/graph-inspector.d.ts","./node_modules/@nestjs/core/metadata-scanner.d.ts","./node_modules/@nestjs/core/scanner.d.ts","./node_modules/@nestjs/core/injector/instance-loader.d.ts","./node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","./node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","./node_modules/@nestjs/core/injector/index.d.ts","./node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","./node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","./node_modules/@nestjs/core/helpers/external-context-creator.d.ts","./node_modules/@nestjs/core/helpers/index.d.ts","./node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","./node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","./node_modules/@nestjs/core/inspector/index.d.ts","./node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","./node_modules/@nestjs/core/middleware/routes-mapper.d.ts","./node_modules/@nestjs/core/middleware/builder.d.ts","./node_modules/@nestjs/core/middleware/index.d.ts","./node_modules/@nestjs/core/nest-application-context.d.ts","./node_modules/@nestjs/core/nest-application.d.ts","./node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","./node_modules/@nestjs/core/nest-factory.d.ts","./node_modules/@nestjs/core/repl/repl.d.ts","./node_modules/@nestjs/core/repl/index.d.ts","./node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","./node_modules/@nestjs/core/router/interfaces/index.d.ts","./node_modules/@nestjs/core/router/request/request-constants.d.ts","./node_modules/@nestjs/core/router/request/index.d.ts","./node_modules/@nestjs/core/router/router-module.d.ts","./node_modules/@nestjs/core/router/index.d.ts","./node_modules/@nestjs/core/services/reflector.service.d.ts","./node_modules/@nestjs/core/services/index.d.ts","./node_modules/@nestjs/core/index.d.ts","./node_modules/@nestjs/config/dist/conditional.module.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-change-event.interface.d.ts","./node_modules/@nestjs/config/dist/types/config-object.type.d.ts","./node_modules/@nestjs/config/dist/types/config.type.d.ts","./node_modules/@nestjs/config/dist/types/no-infer.type.d.ts","./node_modules/@nestjs/config/dist/types/path-value.type.d.ts","./node_modules/@nestjs/config/dist/types/index.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-factory.interface.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts","./node_modules/dotenv-expand/lib/main.d.ts","./node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.d.ts","./node_modules/@nestjs/config/dist/interfaces/index.d.ts","./node_modules/@nestjs/config/dist/config.module.d.ts","./node_modules/@nestjs/config/dist/config.service.d.ts","./node_modules/@nestjs/config/dist/utils/register-as.util.d.ts","./node_modules/@nestjs/config/dist/utils/get-config-token.util.d.ts","./node_modules/@nestjs/config/dist/utils/index.d.ts","./node_modules/@nestjs/config/dist/index.d.ts","./node_modules/@nestjs/config/index.d.ts","./node_modules/typeorm/metadata/types/relationtypes.d.ts","./node_modules/typeorm/metadata/types/deferrabletype.d.ts","./node_modules/typeorm/metadata/types/ondeletetype.d.ts","./node_modules/typeorm/metadata/types/onupdatetype.d.ts","./node_modules/typeorm/decorator/options/relationoptions.d.ts","./node_modules/typeorm/metadata/types/propertytypeinfunction.d.ts","./node_modules/typeorm/common/objecttype.d.ts","./node_modules/typeorm/common/entitytarget.d.ts","./node_modules/typeorm/metadata/types/relationtypeinfunction.d.ts","./node_modules/typeorm/metadata-args/relationmetadataargs.d.ts","./node_modules/typeorm/driver/types/columntypes.d.ts","./node_modules/typeorm/decorator/options/valuetransformer.d.ts","./node_modules/typeorm/decorator/options/columncommonoptions.d.ts","./node_modules/typeorm/decorator/options/columnoptions.d.ts","./node_modules/typeorm/metadata-args/types/columnmode.d.ts","./node_modules/typeorm/metadata-args/columnmetadataargs.d.ts","./node_modules/typeorm/common/objectliteral.d.ts","./node_modules/typeorm/schema-builder/options/tablecolumnoptions.d.ts","./node_modules/typeorm/schema-builder/table/tablecolumn.d.ts","./node_modules/typeorm/schema-builder/options/viewoptions.d.ts","./node_modules/typeorm/schema-builder/view/view.d.ts","./node_modules/typeorm/naming-strategy/namingstrategyinterface.d.ts","./node_modules/typeorm/metadata/foreignkeymetadata.d.ts","./node_modules/typeorm/metadata/relationmetadata.d.ts","./node_modules/typeorm/metadata-args/embeddedmetadataargs.d.ts","./node_modules/typeorm/metadata-args/relationidmetadataargs.d.ts","./node_modules/typeorm/metadata/relationidmetadata.d.ts","./node_modules/typeorm/metadata/relationcountmetadata.d.ts","./node_modules/typeorm/metadata/types/eventlistenertypes.d.ts","./node_modules/typeorm/metadata-args/entitylistenermetadataargs.d.ts","./node_modules/typeorm/metadata/entitylistenermetadata.d.ts","./node_modules/typeorm/metadata-args/uniquemetadataargs.d.ts","./node_modules/typeorm/metadata/uniquemetadata.d.ts","./node_modules/typeorm/metadata/embeddedmetadata.d.ts","./node_modules/typeorm/metadata/columnmetadata.d.ts","./node_modules/typeorm/driver/types/ctecapabilities.d.ts","./node_modules/typeorm/driver/types/mappedcolumntypes.d.ts","./node_modules/typeorm/driver/query.d.ts","./node_modules/typeorm/driver/sqlinmemory.d.ts","./node_modules/typeorm/schema-builder/schemabuilder.d.ts","./node_modules/typeorm/driver/types/datatypedefaults.d.ts","./node_modules/typeorm/entity-schema/entityschemaindexoptions.d.ts","./node_modules/typeorm/driver/types/geojsontypes.d.ts","./node_modules/typeorm/decorator/options/spatialcolumnoptions.d.ts","./node_modules/typeorm/decorator/options/foreignkeyoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacolumnforeignkeyoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacolumnoptions.d.ts","./node_modules/typeorm/decorator/options/joincolumnoptions.d.ts","./node_modules/typeorm/decorator/options/jointablemultiplecolumnsoptions.d.ts","./node_modules/typeorm/decorator/options/jointableoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemarelationoptions.d.ts","./node_modules/typeorm/find-options/orderbycondition.d.ts","./node_modules/typeorm/metadata/types/tabletypes.d.ts","./node_modules/typeorm/entity-schema/entityschemauniqueoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemacheckoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemaexclusionoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemainheritanceoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemarelationidoptions.d.ts","./node_modules/typeorm/entity-schema/entityschemaforeignkeyoptions.d.ts","./node_modules/typeorm/metadata/types/treetypes.d.ts","./node_modules/typeorm/metadata/types/closuretreeoptions.d.ts","./node_modules/typeorm/metadata-args/treemetadataargs.d.ts","./node_modules/typeorm/entity-schema/entityschemaoptions.d.ts","./node_modules/typeorm/entity-schema/entityschema.d.ts","./node_modules/typeorm/logger/logger.d.ts","./node_modules/typeorm/logger/loggeroptions.d.ts","./node_modules/typeorm/driver/types/databasetype.d.ts","./node_modules/typeorm/cache/queryresultcacheoptions.d.ts","./node_modules/typeorm/cache/queryresultcache.d.ts","./node_modules/typeorm/common/mixedlist.d.ts","./node_modules/typeorm/data-source/basedatasourceoptions.d.ts","./node_modules/typeorm/driver/types/replicationmode.d.ts","./node_modules/typeorm/schema-builder/options/tableforeignkeyoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableforeignkey.d.ts","./node_modules/typeorm/driver/types/upserttype.d.ts","./node_modules/typeorm/driver/driver.d.ts","./node_modules/typeorm/find-options/joinoptions.d.ts","./node_modules/typeorm/find-options/findoperatortype.d.ts","./node_modules/typeorm/find-options/findoperator.d.ts","./node_modules/typeorm/platform/platformtools.d.ts","./node_modules/typeorm/driver/mongodb/bson.typings.d.ts","./node_modules/typeorm/driver/mongodb/typings.d.ts","./node_modules/typeorm/find-options/equaloperator.d.ts","./node_modules/typeorm/find-options/findoptionswhere.d.ts","./node_modules/typeorm/find-options/findoptionsselect.d.ts","./node_modules/typeorm/find-options/findoptionsrelations.d.ts","./node_modules/typeorm/find-options/findoptionsorder.d.ts","./node_modules/typeorm/find-options/findoneoptions.d.ts","./node_modules/typeorm/find-options/findmanyoptions.d.ts","./node_modules/typeorm/common/deeppartial.d.ts","./node_modules/typeorm/repository/saveoptions.d.ts","./node_modules/typeorm/repository/removeoptions.d.ts","./node_modules/typeorm/find-options/mongodb/mongofindoneoptions.d.ts","./node_modules/typeorm/find-options/mongodb/mongofindmanyoptions.d.ts","./node_modules/typeorm/schema-builder/options/tableuniqueoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableunique.d.ts","./node_modules/typeorm/subscriber/broadcasterresult.d.ts","./node_modules/typeorm/subscriber/event/transactioncommitevent.d.ts","./node_modules/typeorm/subscriber/event/transactionrollbackevent.d.ts","./node_modules/typeorm/subscriber/event/transactionstartevent.d.ts","./node_modules/typeorm/subscriber/event/updateevent.d.ts","./node_modules/typeorm/subscriber/event/removeevent.d.ts","./node_modules/typeorm/subscriber/event/insertevent.d.ts","./node_modules/typeorm/subscriber/event/loadevent.d.ts","./node_modules/typeorm/subscriber/event/softremoveevent.d.ts","./node_modules/typeorm/subscriber/event/recoverevent.d.ts","./node_modules/typeorm/subscriber/event/queryevent.d.ts","./node_modules/typeorm/subscriber/entitysubscriberinterface.d.ts","./node_modules/typeorm/subscriber/broadcaster.d.ts","./node_modules/typeorm/schema-builder/options/tablecheckoptions.d.ts","./node_modules/typeorm/metadata-args/checkmetadataargs.d.ts","./node_modules/typeorm/metadata/checkmetadata.d.ts","./node_modules/typeorm/schema-builder/table/tablecheck.d.ts","./node_modules/typeorm/schema-builder/options/tableexclusionoptions.d.ts","./node_modules/typeorm/metadata-args/exclusionmetadataargs.d.ts","./node_modules/typeorm/metadata/exclusionmetadata.d.ts","./node_modules/typeorm/schema-builder/table/tableexclusion.d.ts","./node_modules/typeorm/driver/mongodb/mongoqueryrunner.d.ts","./node_modules/typeorm/query-builder/querypartialentity.d.ts","./node_modules/typeorm/query-runner/queryresult.d.ts","./node_modules/typeorm/query-builder/result/insertresult.d.ts","./node_modules/typeorm/query-builder/result/updateresult.d.ts","./node_modules/typeorm/query-builder/result/deleteresult.d.ts","./node_modules/typeorm/entity-manager/mongoentitymanager.d.ts","./node_modules/typeorm/repository/mongorepository.d.ts","./node_modules/typeorm/find-options/findtreeoptions.d.ts","./node_modules/typeorm/repository/treerepository.d.ts","./node_modules/typeorm/query-builder/transformer/plainobjecttonewentitytransformer.d.ts","./node_modules/typeorm/driver/types/isolationlevel.d.ts","./node_modules/typeorm/query-builder/whereexpressionbuilder.d.ts","./node_modules/typeorm/query-builder/brackets.d.ts","./node_modules/typeorm/query-builder/insertorupdateoptions.d.ts","./node_modules/typeorm/query-builder/returningoption.d.ts","./node_modules/typeorm/repository/upsertoptions.d.ts","./node_modules/typeorm/repository/updateoptions.d.ts","./node_modules/typeorm/common/pickkeysbytype.d.ts","./node_modules/typeorm/entity-manager/entitymanager.d.ts","./node_modules/typeorm/repository/repository.d.ts","./node_modules/typeorm/migration/migrationinterface.d.ts","./node_modules/typeorm/migration/migration.d.ts","./node_modules/typeorm/driver/cockroachdb/cockroachconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/cockroachdb/cockroachconnectionoptions.d.ts","./node_modules/typeorm/driver/mysql/mysqlconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/mysql/mysqlconnectionoptions.d.ts","./node_modules/typeorm/driver/postgres/postgresconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/postgres/postgresconnectionoptions.d.ts","./node_modules/typeorm/driver/sqlite/sqliteconnectionoptions.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/defaultauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryaccesstokenauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorydefaultauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsiappserviceauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsivmauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorypasswordauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryserviceprincipalsecret.d.ts","./node_modules/typeorm/driver/sqlserver/authentication/ntlmauthentication.d.ts","./node_modules/typeorm/driver/sqlserver/sqlserverconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/sqlserver/sqlserverconnectionoptions.d.ts","./node_modules/typeorm/driver/oracle/oracleconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/oracle/oracleconnectionoptions.d.ts","./node_modules/typeorm/driver/mongodb/mongoconnectionoptions.d.ts","./node_modules/typeorm/driver/cordova/cordovaconnectionoptions.d.ts","./node_modules/typeorm/driver/sqljs/sqljsconnectionoptions.d.ts","./node_modules/typeorm/driver/react-native/reactnativeconnectionoptions.d.ts","./node_modules/typeorm/driver/nativescript/nativescriptconnectionoptions.d.ts","./node_modules/typeorm/driver/expo/expoconnectionoptions.d.ts","./node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectionoptions.d.ts","./node_modules/typeorm/driver/sap/sapconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/sap/sapconnectionoptions.d.ts","./node_modules/typeorm/driver/aurora-postgres/aurorapostgresconnectionoptions.d.ts","./node_modules/typeorm/driver/better-sqlite3/bettersqlite3connectionoptions.d.ts","./node_modules/typeorm/driver/capacitor/capacitorconnectionoptions.d.ts","./node_modules/typeorm/connection/baseconnectionoptions.d.ts","./node_modules/typeorm/driver/spanner/spannerconnectioncredentialsoptions.d.ts","./node_modules/typeorm/driver/spanner/spannerconnectionoptions.d.ts","./node_modules/typeorm/data-source/datasourceoptions.d.ts","./node_modules/typeorm/entity-manager/sqljsentitymanager.d.ts","./node_modules/typeorm/query-builder/relationloader.d.ts","./node_modules/typeorm/query-builder/relationidloader.d.ts","./node_modules/typeorm/data-source/datasource.d.ts","./node_modules/typeorm/metadata-args/tablemetadataargs.d.ts","./node_modules/typeorm/metadata/entitymetadata.d.ts","./node_modules/typeorm/metadata-args/indexmetadataargs.d.ts","./node_modules/typeorm/metadata/indexmetadata.d.ts","./node_modules/typeorm/schema-builder/options/tableindexoptions.d.ts","./node_modules/typeorm/schema-builder/table/tableindex.d.ts","./node_modules/typeorm/schema-builder/options/tableoptions.d.ts","./node_modules/typeorm/schema-builder/table/table.d.ts","./node_modules/typeorm/query-runner/queryrunner.d.ts","./node_modules/typeorm/query-builder/querybuildercte.d.ts","./node_modules/typeorm/query-builder/alias.d.ts","./node_modules/typeorm/query-builder/joinattribute.d.ts","./node_modules/typeorm/query-builder/relation-id/relationidattribute.d.ts","./node_modules/typeorm/query-builder/relation-count/relationcountattribute.d.ts","./node_modules/typeorm/query-builder/selectquery.d.ts","./node_modules/typeorm/query-builder/selectquerybuilderoption.d.ts","./node_modules/typeorm/query-builder/whereclause.d.ts","./node_modules/typeorm/query-builder/queryexpressionmap.d.ts","./node_modules/typeorm/query-builder/updatequerybuilder.d.ts","./node_modules/typeorm/query-builder/deletequerybuilder.d.ts","./node_modules/typeorm/query-builder/softdeletequerybuilder.d.ts","./node_modules/typeorm/query-builder/insertquerybuilder.d.ts","./node_modules/typeorm/query-builder/relationquerybuilder.d.ts","./node_modules/typeorm/query-builder/notbrackets.d.ts","./node_modules/typeorm/query-builder/querybuilder.d.ts","./node_modules/typeorm/query-builder/selectquerybuilder.d.ts","./node_modules/typeorm/metadata-args/relationcountmetadataargs.d.ts","./node_modules/typeorm/metadata-args/namingstrategymetadataargs.d.ts","./node_modules/typeorm/metadata-args/joincolumnmetadataargs.d.ts","./node_modules/typeorm/metadata-args/jointablemetadataargs.d.ts","./node_modules/typeorm/metadata-args/entitysubscribermetadataargs.d.ts","./node_modules/typeorm/metadata-args/inheritancemetadataargs.d.ts","./node_modules/typeorm/metadata-args/discriminatorvaluemetadataargs.d.ts","./node_modules/typeorm/metadata-args/entityrepositorymetadataargs.d.ts","./node_modules/typeorm/metadata-args/transactionentitymetadataargs.d.ts","./node_modules/typeorm/metadata-args/transactionrepositorymetadataargs.d.ts","./node_modules/typeorm/metadata-args/generatedmetadataargs.d.ts","./node_modules/typeorm/metadata-args/foreignkeymetadataargs.d.ts","./node_modules/typeorm/metadata-args/metadataargsstorage.d.ts","./node_modules/typeorm/connection/connectionmanager.d.ts","./node_modules/typeorm/globals.d.ts","./node_modules/typeorm/container.d.ts","./node_modules/typeorm/common/relationtype.d.ts","./node_modules/typeorm/error/typeormerror.d.ts","./node_modules/typeorm/error/cannotreflectmethodparametertypeerror.d.ts","./node_modules/typeorm/error/alreadyhasactiveconnectionerror.d.ts","./node_modules/typeorm/persistence/subjectchangemap.d.ts","./node_modules/typeorm/persistence/subject.d.ts","./node_modules/typeorm/error/subjectwithoutidentifiererror.d.ts","./node_modules/typeorm/error/cannotconnectalreadyconnectederror.d.ts","./node_modules/typeorm/error/locknotsupportedongivendrivererror.d.ts","./node_modules/typeorm/error/connectionisnotseterror.d.ts","./node_modules/typeorm/error/cannotcreateentityidmaperror.d.ts","./node_modules/typeorm/error/metadataalreadyexistserror.d.ts","./node_modules/typeorm/error/cannotdetermineentityerror.d.ts","./node_modules/typeorm/error/updatevaluesmissingerror.d.ts","./node_modules/typeorm/error/treerepositorynotsupportederror.d.ts","./node_modules/typeorm/error/customrepositorynotfounderror.d.ts","./node_modules/typeorm/error/transactionnotstartederror.d.ts","./node_modules/typeorm/error/transactionalreadystartederror.d.ts","./node_modules/typeorm/error/entitynotfounderror.d.ts","./node_modules/typeorm/error/entitymetadatanotfounderror.d.ts","./node_modules/typeorm/error/mustbeentityerror.d.ts","./node_modules/typeorm/error/optimisticlockversionmismatcherror.d.ts","./node_modules/typeorm/error/limitonupdatenotsupportederror.d.ts","./node_modules/typeorm/error/primarycolumncannotbenullableerror.d.ts","./node_modules/typeorm/error/customrepositorycannotinheritrepositoryerror.d.ts","./node_modules/typeorm/error/queryrunnerprovideralreadyreleasederror.d.ts","./node_modules/typeorm/error/cannotattachtreechildrenentityerror.d.ts","./node_modules/typeorm/error/customrepositorydoesnothaveentityerror.d.ts","./node_modules/typeorm/error/missingdeletedatecolumnerror.d.ts","./node_modules/typeorm/error/noconnectionforrepositoryerror.d.ts","./node_modules/typeorm/error/circularrelationserror.d.ts","./node_modules/typeorm/error/returningstatementnotsupportederror.d.ts","./node_modules/typeorm/error/usingjointableisnotallowederror.d.ts","./node_modules/typeorm/error/missingjoincolumnerror.d.ts","./node_modules/typeorm/error/missingprimarycolumnerror.d.ts","./node_modules/typeorm/error/entitypropertynotfounderror.d.ts","./node_modules/typeorm/error/missingdrivererror.d.ts","./node_modules/typeorm/error/driverpackagenotinstallederror.d.ts","./node_modules/typeorm/error/cannotgetentitymanagernotconnectederror.d.ts","./node_modules/typeorm/error/connectionnotfounderror.d.ts","./node_modules/typeorm/error/noversionorupdatedatecolumnerror.d.ts","./node_modules/typeorm/error/insertvaluesmissingerror.d.ts","./node_modules/typeorm/error/optimisticlockcannotbeusederror.d.ts","./node_modules/typeorm/error/metadatawithsuchnamealreadyexistserror.d.ts","./node_modules/typeorm/error/driveroptionnotseterror.d.ts","./node_modules/typeorm/error/findrelationsnotfounderror.d.ts","./node_modules/typeorm/error/pessimisticlocktransactionrequirederror.d.ts","./node_modules/typeorm/error/repositorynottreeerror.d.ts","./node_modules/typeorm/error/datatypenotsupportederror.d.ts","./node_modules/typeorm/error/initializedrelationerror.d.ts","./node_modules/typeorm/error/missingjointableerror.d.ts","./node_modules/typeorm/error/queryfailederror.d.ts","./node_modules/typeorm/error/noneedtoreleaseentitymanagererror.d.ts","./node_modules/typeorm/error/usingjoincolumnonlyononesideallowederror.d.ts","./node_modules/typeorm/error/usingjointableonlyononesideallowederror.d.ts","./node_modules/typeorm/error/subjectremovedandupdatederror.d.ts","./node_modules/typeorm/error/persistedentitynotfounderror.d.ts","./node_modules/typeorm/error/usingjoincolumnisnotallowederror.d.ts","./node_modules/typeorm/error/columntypeundefinederror.d.ts","./node_modules/typeorm/error/queryrunneralreadyreleasederror.d.ts","./node_modules/typeorm/error/offsetwithoutlimitnotsupportederror.d.ts","./node_modules/typeorm/error/cannotexecutenotconnectederror.d.ts","./node_modules/typeorm/error/noconnectionoptionerror.d.ts","./node_modules/typeorm/error/forbiddentransactionmodeoverrideerror.d.ts","./node_modules/typeorm/error/index.d.ts","./node_modules/typeorm/decorator/options/columnembeddedoptions.d.ts","./node_modules/typeorm/decorator/options/columnenumoptions.d.ts","./node_modules/typeorm/decorator/options/columnhstoreoptions.d.ts","./node_modules/typeorm/decorator/options/columnnumericoptions.d.ts","./node_modules/typeorm/decorator/options/columnunsignedoptions.d.ts","./node_modules/typeorm/decorator/options/columnwithlengthoptions.d.ts","./node_modules/typeorm/decorator/columns/column.d.ts","./node_modules/typeorm/decorator/columns/createdatecolumn.d.ts","./node_modules/typeorm/decorator/columns/deletedatecolumn.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnnumericoptions.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnuuidoptions.d.ts","./node_modules/typeorm/decorator/options/primarygeneratedcolumnidentityoptions.d.ts","./node_modules/typeorm/decorator/columns/primarygeneratedcolumn.d.ts","./node_modules/typeorm/decorator/columns/primarycolumn.d.ts","./node_modules/typeorm/decorator/columns/updatedatecolumn.d.ts","./node_modules/typeorm/decorator/columns/versioncolumn.d.ts","./node_modules/typeorm/decorator/options/virtualcolumnoptions.d.ts","./node_modules/typeorm/decorator/columns/virtualcolumn.d.ts","./node_modules/typeorm/decorator/options/viewcolumnoptions.d.ts","./node_modules/typeorm/decorator/columns/viewcolumn.d.ts","./node_modules/typeorm/decorator/columns/objectidcolumn.d.ts","./node_modules/typeorm/decorator/listeners/afterinsert.d.ts","./node_modules/typeorm/decorator/listeners/afterload.d.ts","./node_modules/typeorm/decorator/listeners/afterremove.d.ts","./node_modules/typeorm/decorator/listeners/aftersoftremove.d.ts","./node_modules/typeorm/decorator/listeners/afterrecover.d.ts","./node_modules/typeorm/decorator/listeners/afterupdate.d.ts","./node_modules/typeorm/decorator/listeners/beforeinsert.d.ts","./node_modules/typeorm/decorator/listeners/beforeremove.d.ts","./node_modules/typeorm/decorator/listeners/beforesoftremove.d.ts","./node_modules/typeorm/decorator/listeners/beforerecover.d.ts","./node_modules/typeorm/decorator/listeners/beforeupdate.d.ts","./node_modules/typeorm/decorator/listeners/eventsubscriber.d.ts","./node_modules/typeorm/decorator/options/indexoptions.d.ts","./node_modules/typeorm/decorator/options/entityoptions.d.ts","./node_modules/typeorm/decorator/relations/joincolumn.d.ts","./node_modules/typeorm/decorator/relations/jointable.d.ts","./node_modules/typeorm/decorator/relations/manytomany.d.ts","./node_modules/typeorm/decorator/relations/manytoone.d.ts","./node_modules/typeorm/decorator/relations/onetomany.d.ts","./node_modules/typeorm/decorator/relations/onetoone.d.ts","./node_modules/typeorm/decorator/relations/relationcount.d.ts","./node_modules/typeorm/decorator/relations/relationid.d.ts","./node_modules/typeorm/decorator/entity/entity.d.ts","./node_modules/typeorm/decorator/entity/childentity.d.ts","./node_modules/typeorm/decorator/entity/tableinheritance.d.ts","./node_modules/typeorm/decorator/options/viewentityoptions.d.ts","./node_modules/typeorm/decorator/entity-view/viewentity.d.ts","./node_modules/typeorm/decorator/tree/treelevelcolumn.d.ts","./node_modules/typeorm/decorator/tree/treeparent.d.ts","./node_modules/typeorm/decorator/tree/treechildren.d.ts","./node_modules/typeorm/decorator/tree/tree.d.ts","./node_modules/typeorm/decorator/index.d.ts","./node_modules/typeorm/decorator/foreignkey.d.ts","./node_modules/typeorm/decorator/options/uniqueoptions.d.ts","./node_modules/typeorm/decorator/unique.d.ts","./node_modules/typeorm/decorator/check.d.ts","./node_modules/typeorm/decorator/exclusion.d.ts","./node_modules/typeorm/decorator/generated.d.ts","./node_modules/typeorm/decorator/entityrepository.d.ts","./node_modules/typeorm/find-options/operator/and.d.ts","./node_modules/typeorm/find-options/operator/or.d.ts","./node_modules/typeorm/find-options/operator/any.d.ts","./node_modules/typeorm/find-options/operator/arraycontainedby.d.ts","./node_modules/typeorm/find-options/operator/arraycontains.d.ts","./node_modules/typeorm/find-options/operator/arrayoverlap.d.ts","./node_modules/typeorm/find-options/operator/between.d.ts","./node_modules/typeorm/find-options/operator/equal.d.ts","./node_modules/typeorm/find-options/operator/in.d.ts","./node_modules/typeorm/find-options/operator/isnull.d.ts","./node_modules/typeorm/find-options/operator/lessthan.d.ts","./node_modules/typeorm/find-options/operator/lessthanorequal.d.ts","./node_modules/typeorm/find-options/operator/ilike.d.ts","./node_modules/typeorm/find-options/operator/like.d.ts","./node_modules/typeorm/find-options/operator/morethan.d.ts","./node_modules/typeorm/find-options/operator/morethanorequal.d.ts","./node_modules/typeorm/find-options/operator/not.d.ts","./node_modules/typeorm/find-options/operator/raw.d.ts","./node_modules/typeorm/find-options/operator/jsoncontains.d.ts","./node_modules/typeorm/find-options/findoptionsutils.d.ts","./node_modules/typeorm/logger/abstractlogger.d.ts","./node_modules/typeorm/logger/advancedconsolelogger.d.ts","./node_modules/typeorm/logger/formattedconsolelogger.d.ts","./node_modules/typeorm/logger/simpleconsolelogger.d.ts","./node_modules/typeorm/logger/filelogger.d.ts","./node_modules/typeorm/repository/abstractrepository.d.ts","./node_modules/typeorm/data-source/index.d.ts","./node_modules/typeorm/repository/baseentity.d.ts","./node_modules/typeorm/driver/sqlserver/mssqlparameter.d.ts","./node_modules/typeorm/connection/connectionoptionsreader.d.ts","./node_modules/typeorm/connection/connectionoptions.d.ts","./node_modules/typeorm/connection/connection.d.ts","./node_modules/typeorm/migration/migrationexecutor.d.ts","./node_modules/typeorm/naming-strategy/defaultnamingstrategy.d.ts","./node_modules/typeorm/naming-strategy/legacyoraclenamingstrategy.d.ts","./node_modules/typeorm/entity-schema/entityschemaembeddedcolumnoptions.d.ts","./node_modules/typeorm/schema-builder/rdbmsschemabuilder.d.ts","./node_modules/typeorm/util/instancechecker.d.ts","./node_modules/typeorm/repository/findtreesoptions.d.ts","./node_modules/typeorm/util/treerepositoryutils.d.ts","./node_modules/typeorm/index.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","./node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","./node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","./node_modules/@nestjs/typeorm/dist/common/index.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","./node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","./node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","./node_modules/@nestjs/typeorm/dist/index.d.ts","./node_modules/@nestjs/typeorm/index.d.ts","./node_modules/@nestjs/schedule/dist/enums/cron-expression.enum.d.ts","./node_modules/@nestjs/schedule/dist/enums/index.d.ts","./node_modules/@types/luxon/src/zone.d.ts","./node_modules/@types/luxon/src/settings.d.ts","./node_modules/@types/luxon/src/_util.d.ts","./node_modules/@types/luxon/src/misc.d.ts","./node_modules/@types/luxon/src/duration.d.ts","./node_modules/@types/luxon/src/interval.d.ts","./node_modules/@types/luxon/src/datetime.d.ts","./node_modules/@types/luxon/src/info.d.ts","./node_modules/@types/luxon/src/luxon.d.ts","./node_modules/@types/luxon/index.d.ts","./node_modules/cron/dist/errors.d.ts","./node_modules/cron/dist/constants.d.ts","./node_modules/cron/dist/job.d.ts","./node_modules/cron/dist/types/utils.d.ts","./node_modules/cron/dist/types/cron.types.d.ts","./node_modules/cron/dist/time.d.ts","./node_modules/cron/dist/index.d.ts","./node_modules/@nestjs/schedule/dist/decorators/cron.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/interval.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/timeout.decorator.d.ts","./node_modules/@nestjs/schedule/dist/decorators/index.d.ts","./node_modules/@nestjs/schedule/dist/interfaces/schedule-module-options.interface.d.ts","./node_modules/@nestjs/schedule/dist/schedule.module.d.ts","./node_modules/@nestjs/schedule/dist/scheduler.registry.d.ts","./node_modules/@nestjs/schedule/dist/index.d.ts","./node_modules/@nestjs/schedule/index.d.ts","./node_modules/@nestjs/throttler/dist/throttler-storage-record.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler-storage.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.guard.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler-module-options.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.decorator.d.ts","./node_modules/@nestjs/throttler/dist/throttler.exception.d.ts","./node_modules/@nestjs/throttler/dist/throttler.guard.d.ts","./node_modules/@nestjs/throttler/dist/throttler.module.d.ts","./node_modules/@nestjs/throttler/dist/throttler.providers.d.ts","./node_modules/@nestjs/throttler/dist/throttler-storage-options.interface.d.ts","./node_modules/@nestjs/throttler/dist/throttler.service.d.ts","./node_modules/@nestjs/throttler/dist/utilities.d.ts","./node_modules/@nestjs/throttler/dist/index.d.ts","./src/common/constants/time.constants.ts","./src/common/constants/throttle.constants.ts","./src/search/search.constants.ts","./src/search/search.service.ts","./src/search/search.controller.ts","./src/search/search.module.ts","./src/rate-limiting/entities/quota-definition.entity.ts","./src/rate-limiting/entities/user-quota-usage.entity.ts","./node_modules/class-validator/types/validation/validationerror.d.ts","./node_modules/class-validator/types/validation/validatoroptions.d.ts","./node_modules/class-validator/types/validation-schema/validationschema.d.ts","./node_modules/class-validator/types/container.d.ts","./node_modules/class-validator/types/validation/validationarguments.d.ts","./node_modules/class-validator/types/decorator/validationoptions.d.ts","./node_modules/class-validator/types/decorator/common/allow.d.ts","./node_modules/class-validator/types/decorator/common/isdefined.d.ts","./node_modules/class-validator/types/decorator/common/isoptional.d.ts","./node_modules/class-validator/types/decorator/common/validate.d.ts","./node_modules/class-validator/types/validation/validatorconstraintinterface.d.ts","./node_modules/class-validator/types/decorator/common/validateby.d.ts","./node_modules/class-validator/types/decorator/common/validateif.d.ts","./node_modules/class-validator/types/decorator/common/validatenested.d.ts","./node_modules/class-validator/types/decorator/common/validatepromise.d.ts","./node_modules/class-validator/types/decorator/common/islatlong.d.ts","./node_modules/class-validator/types/decorator/common/islatitude.d.ts","./node_modules/class-validator/types/decorator/common/islongitude.d.ts","./node_modules/class-validator/types/decorator/common/equals.d.ts","./node_modules/class-validator/types/decorator/common/notequals.d.ts","./node_modules/class-validator/types/decorator/common/isempty.d.ts","./node_modules/class-validator/types/decorator/common/isnotempty.d.ts","./node_modules/class-validator/types/decorator/common/isin.d.ts","./node_modules/class-validator/types/decorator/common/isnotin.d.ts","./node_modules/class-validator/types/decorator/number/isdivisibleby.d.ts","./node_modules/class-validator/types/decorator/number/ispositive.d.ts","./node_modules/class-validator/types/decorator/number/isnegative.d.ts","./node_modules/class-validator/types/decorator/number/max.d.ts","./node_modules/class-validator/types/decorator/number/min.d.ts","./node_modules/class-validator/types/decorator/date/mindate.d.ts","./node_modules/class-validator/types/decorator/date/maxdate.d.ts","./node_modules/class-validator/types/decorator/string/contains.d.ts","./node_modules/class-validator/types/decorator/string/notcontains.d.ts","./node_modules/@types/validator/lib/isboolean.d.ts","./node_modules/@types/validator/lib/isemail.d.ts","./node_modules/@types/validator/lib/isfqdn.d.ts","./node_modules/@types/validator/lib/isiban.d.ts","./node_modules/@types/validator/lib/isiso31661alpha2.d.ts","./node_modules/@types/validator/lib/isiso4217.d.ts","./node_modules/@types/validator/lib/isiso6391.d.ts","./node_modules/@types/validator/lib/istaxid.d.ts","./node_modules/@types/validator/lib/isurl.d.ts","./node_modules/@types/validator/index.d.ts","./node_modules/class-validator/types/decorator/string/isalpha.d.ts","./node_modules/class-validator/types/decorator/string/isalphanumeric.d.ts","./node_modules/class-validator/types/decorator/string/isdecimal.d.ts","./node_modules/class-validator/types/decorator/string/isascii.d.ts","./node_modules/class-validator/types/decorator/string/isbase64.d.ts","./node_modules/class-validator/types/decorator/string/isbytelength.d.ts","./node_modules/class-validator/types/decorator/string/iscreditcard.d.ts","./node_modules/class-validator/types/decorator/string/iscurrency.d.ts","./node_modules/class-validator/types/decorator/string/isemail.d.ts","./node_modules/class-validator/types/decorator/string/isfqdn.d.ts","./node_modules/class-validator/types/decorator/string/isfullwidth.d.ts","./node_modules/class-validator/types/decorator/string/ishalfwidth.d.ts","./node_modules/class-validator/types/decorator/string/isvariablewidth.d.ts","./node_modules/class-validator/types/decorator/string/ishexcolor.d.ts","./node_modules/class-validator/types/decorator/string/ishexadecimal.d.ts","./node_modules/class-validator/types/decorator/string/ismacaddress.d.ts","./node_modules/class-validator/types/decorator/string/isip.d.ts","./node_modules/class-validator/types/decorator/string/isport.d.ts","./node_modules/class-validator/types/decorator/string/isisbn.d.ts","./node_modules/class-validator/types/decorator/string/isisin.d.ts","./node_modules/class-validator/types/decorator/string/isiso8601.d.ts","./node_modules/class-validator/types/decorator/string/isjson.d.ts","./node_modules/class-validator/types/decorator/string/isjwt.d.ts","./node_modules/class-validator/types/decorator/string/islowercase.d.ts","./node_modules/class-validator/types/decorator/string/ismobilephone.d.ts","./node_modules/class-validator/types/decorator/string/isiso31661alpha2.d.ts","./node_modules/class-validator/types/decorator/string/isiso31661alpha3.d.ts","./node_modules/class-validator/types/decorator/string/ismongoid.d.ts","./node_modules/class-validator/types/decorator/string/ismultibyte.d.ts","./node_modules/class-validator/types/decorator/string/issurrogatepair.d.ts","./node_modules/class-validator/types/decorator/string/isurl.d.ts","./node_modules/class-validator/types/decorator/string/isuuid.d.ts","./node_modules/class-validator/types/decorator/string/isfirebasepushid.d.ts","./node_modules/class-validator/types/decorator/string/isuppercase.d.ts","./node_modules/class-validator/types/decorator/string/length.d.ts","./node_modules/class-validator/types/decorator/string/maxlength.d.ts","./node_modules/class-validator/types/decorator/string/minlength.d.ts","./node_modules/class-validator/types/decorator/string/matches.d.ts","./node_modules/libphonenumber-js/types.d.cts","./node_modules/libphonenumber-js/max/index.d.cts","./node_modules/class-validator/types/decorator/string/isphonenumber.d.ts","./node_modules/class-validator/types/decorator/string/ismilitarytime.d.ts","./node_modules/class-validator/types/decorator/string/ishash.d.ts","./node_modules/class-validator/types/decorator/string/isissn.d.ts","./node_modules/class-validator/types/decorator/string/isdatestring.d.ts","./node_modules/class-validator/types/decorator/string/isbooleanstring.d.ts","./node_modules/class-validator/types/decorator/string/isnumberstring.d.ts","./node_modules/class-validator/types/decorator/string/isbase32.d.ts","./node_modules/class-validator/types/decorator/string/isbic.d.ts","./node_modules/class-validator/types/decorator/string/isbtcaddress.d.ts","./node_modules/class-validator/types/decorator/string/isdatauri.d.ts","./node_modules/class-validator/types/decorator/string/isean.d.ts","./node_modules/class-validator/types/decorator/string/isethereumaddress.d.ts","./node_modules/class-validator/types/decorator/string/ishsl.d.ts","./node_modules/class-validator/types/decorator/string/isiban.d.ts","./node_modules/class-validator/types/decorator/string/isidentitycard.d.ts","./node_modules/class-validator/types/decorator/string/isisrc.d.ts","./node_modules/class-validator/types/decorator/string/islocale.d.ts","./node_modules/class-validator/types/decorator/string/ismagneturi.d.ts","./node_modules/class-validator/types/decorator/string/ismimetype.d.ts","./node_modules/class-validator/types/decorator/string/isoctal.d.ts","./node_modules/class-validator/types/decorator/string/ispassportnumber.d.ts","./node_modules/class-validator/types/decorator/string/ispostalcode.d.ts","./node_modules/class-validator/types/decorator/string/isrfc3339.d.ts","./node_modules/class-validator/types/decorator/string/isrgbcolor.d.ts","./node_modules/class-validator/types/decorator/string/issemver.d.ts","./node_modules/class-validator/types/decorator/string/isstrongpassword.d.ts","./node_modules/class-validator/types/decorator/string/istimezone.d.ts","./node_modules/class-validator/types/decorator/string/isbase58.d.ts","./node_modules/class-validator/types/decorator/string/is-tax-id.d.ts","./node_modules/class-validator/types/decorator/string/is-iso4217-currency-code.d.ts","./node_modules/class-validator/types/decorator/typechecker/isboolean.d.ts","./node_modules/class-validator/types/decorator/typechecker/isdate.d.ts","./node_modules/class-validator/types/decorator/typechecker/isnumber.d.ts","./node_modules/class-validator/types/decorator/typechecker/isenum.d.ts","./node_modules/class-validator/types/decorator/typechecker/isint.d.ts","./node_modules/class-validator/types/decorator/typechecker/isstring.d.ts","./node_modules/class-validator/types/decorator/typechecker/isarray.d.ts","./node_modules/class-validator/types/decorator/typechecker/isobject.d.ts","./node_modules/class-validator/types/decorator/array/arraycontains.d.ts","./node_modules/class-validator/types/decorator/array/arraynotcontains.d.ts","./node_modules/class-validator/types/decorator/array/arraynotempty.d.ts","./node_modules/class-validator/types/decorator/array/arrayminsize.d.ts","./node_modules/class-validator/types/decorator/array/arraymaxsize.d.ts","./node_modules/class-validator/types/decorator/array/arrayunique.d.ts","./node_modules/class-validator/types/decorator/object/isnotemptyobject.d.ts","./node_modules/class-validator/types/decorator/object/isinstance.d.ts","./node_modules/class-validator/types/decorator/decorators.d.ts","./node_modules/class-validator/types/validation/validationtypes.d.ts","./node_modules/class-validator/types/validation/validator.d.ts","./node_modules/class-validator/types/register-decorator.d.ts","./node_modules/class-validator/types/metadata/validationmetadataargs.d.ts","./node_modules/class-validator/types/metadata/validationmetadata.d.ts","./node_modules/class-validator/types/metadata/constraintmetadata.d.ts","./node_modules/class-validator/types/metadata/metadatastorage.d.ts","./node_modules/class-validator/types/index.d.ts","./src/rate-limiting/dto/quota.dto.ts","./src/rate-limiting/services/quota-definition.service.ts","./src/rate-limiting/services/adaptive-rate-limiting.service.ts","./src/rate-limiting/services/quota-tracking.service.ts","./src/rate-limiting/services/quota.service.ts","./src/rate-limiting/services/quota-reset.scheduler.ts","./node_modules/@types/send/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/express/index.d.ts","./src/rate-limiting/guards/quota.guard.ts","./src/rate-limiting/controllers/quota.controller.ts","./src/rate-limiting/controllers/user-quota.controller.ts","./src/rate-limiting/rate-limiting.module.ts","./src/config/database.config.ts","./src/config/feature-flags.config.ts","./src/app.module.ts","./src/app.service.ts","./node_modules/@types/express-session/index.d.ts","./node_modules/@redis/client/dist/lib/commands/generic-transformers.d.ts","./node_modules/@redis/client/dist/lib/client/parser.d.ts","./node_modules/@redis/client/dist/lib/errors.d.ts","./node_modules/@redis/client/dist/lib/lua-script.d.ts","./node_modules/@redis/client/dist/lib/resp/decoder.d.ts","./node_modules/@redis/client/dist/lib/resp/verbatim-string.d.ts","./node_modules/@redis/client/dist/lib/resp/types.d.ts","./node_modules/@redis/client/dist/lib/utils/digest.d.ts","./node_modules/@redis/client/dist/lib/commands/client_kill.d.ts","./node_modules/@redis/client/dist/lib/commands/cluster_failover.d.ts","./node_modules/@redis/client/dist/lib/commands/cluster_setslot.d.ts","./node_modules/@redis/client/dist/lib/commands/command_list.d.ts","./node_modules/@redis/client/dist/lib/commands/flushall.d.ts","./node_modules/@redis/client/dist/lib/commands/set.d.ts","./node_modules/@redis/client/dist/lib/commands/acl_log.d.ts","./node_modules/@redis/client/dist/lib/commands/auth.d.ts","./node_modules/@redis/client/dist/lib/commands/bgsave.d.ts","./node_modules/@redis/client/dist/lib/commands/bitcount.d.ts","./node_modules/@redis/client/dist/lib/commands/bitfield.d.ts","./node_modules/@redis/client/dist/lib/commands/bitfield_ro.d.ts","./node_modules/@redis/client/dist/lib/commands/bitop.d.ts","./node_modules/@redis/client/dist/lib/commands/lmpop.d.ts","./node_modules/@redis/client/dist/lib/commands/zmpop.d.ts","./node_modules/@redis/client/dist/lib/commands/client_info.d.ts","./node_modules/@redis/client/dist/lib/commands/client_list.d.ts","./node_modules/@redis/client/dist/lib/commands/client_tracking.d.ts","./node_modules/@redis/client/dist/lib/commands/cluster_reset.d.ts","./node_modules/@redis/client/dist/lib/commands/copy.d.ts","./node_modules/@redis/client/dist/lib/commands/eval.d.ts","./node_modules/@redis/client/dist/lib/commands/function_list.d.ts","./node_modules/@redis/client/dist/lib/commands/function_list_withcode.d.ts","./node_modules/@redis/client/dist/lib/commands/function_load.d.ts","./node_modules/@redis/client/dist/lib/commands/function_restore.d.ts","./node_modules/@redis/client/dist/lib/commands/geosearch.d.ts","./node_modules/@redis/client/dist/lib/commands/geoadd.d.ts","./node_modules/@redis/client/dist/lib/commands/geosearch_with.d.ts","./node_modules/@redis/client/dist/lib/commands/georadius_store.d.ts","./node_modules/@redis/client/dist/lib/commands/georadiusbymember_store.d.ts","./node_modules/@redis/client/dist/lib/commands/geosearchstore.d.ts","./node_modules/@redis/client/dist/lib/commands/getex.d.ts","./node_modules/@redis/client/dist/lib/commands/hello.d.ts","./node_modules/@redis/client/dist/lib/commands/hexpire.d.ts","./node_modules/@redis/client/dist/lib/commands/hgetex.d.ts","./node_modules/@redis/client/dist/lib/commands/hrandfield_count_withvalues.d.ts","./node_modules/@redis/client/dist/lib/commands/scan.d.ts","./node_modules/@redis/client/dist/lib/commands/hset.d.ts","./node_modules/@redis/client/dist/lib/commands/hsetex.d.ts","./node_modules/@redis/client/dist/lib/commands/hotkeys_get.d.ts","./node_modules/@redis/client/dist/lib/commands/hotkeys_start.d.ts","./node_modules/@redis/client/dist/lib/commands/latency_graph.d.ts","./node_modules/@redis/client/dist/lib/commands/latency_history.d.ts","./node_modules/@redis/client/dist/lib/commands/lcs_idx.d.ts","./node_modules/@redis/client/dist/lib/commands/lcs_idx_withmatchlen.d.ts","./node_modules/@redis/client/dist/lib/commands/lpos.d.ts","./node_modules/@redis/client/dist/lib/commands/memory_stats.d.ts","./node_modules/@redis/client/dist/lib/commands/memory_usage.d.ts","./node_modules/@redis/client/dist/lib/commands/migrate.d.ts","./node_modules/@redis/client/dist/lib/commands/module_list.d.ts","./node_modules/@redis/client/dist/lib/commands/mset.d.ts","./node_modules/@redis/client/dist/lib/commands/restore.d.ts","./node_modules/@redis/client/dist/lib/commands/sintercard.d.ts","./node_modules/@redis/client/dist/lib/commands/sort.d.ts","./node_modules/@redis/client/dist/lib/commands/common-stream.types.d.ts","./node_modules/@redis/client/dist/lib/commands/xadd.d.ts","./node_modules/@redis/client/dist/lib/commands/xautoclaim.d.ts","./node_modules/@redis/client/dist/lib/commands/xclaim.d.ts","./node_modules/@redis/client/dist/lib/commands/xcfgset.d.ts","./node_modules/@redis/client/dist/lib/commands/xgroup_create.d.ts","./node_modules/@redis/client/dist/lib/commands/xgroup_setid.d.ts","./node_modules/@redis/client/dist/lib/commands/xinfo_consumers.d.ts","./node_modules/@redis/client/dist/lib/commands/xinfo_groups.d.ts","./node_modules/@redis/client/dist/lib/commands/xinfo_stream.d.ts","./node_modules/@redis/client/dist/lib/commands/xpending_range.d.ts","./node_modules/@redis/client/dist/lib/commands/xrange.d.ts","./node_modules/@redis/client/dist/lib/commands/xread.d.ts","./node_modules/@redis/client/dist/lib/commands/xreadgroup.d.ts","./node_modules/@redis/client/dist/lib/commands/xsetid.d.ts","./node_modules/@redis/client/dist/lib/commands/xtrim.d.ts","./node_modules/@redis/client/dist/lib/commands/zadd_incr.d.ts","./node_modules/@redis/client/dist/lib/commands/zadd.d.ts","./node_modules/@redis/client/dist/lib/commands/zinter.d.ts","./node_modules/@redis/client/dist/lib/commands/zintercard.d.ts","./node_modules/@redis/client/dist/lib/commands/zrange.d.ts","./node_modules/@redis/client/dist/lib/commands/zrangebylex.d.ts","./node_modules/@redis/client/dist/lib/commands/zrangebyscore.d.ts","./node_modules/@redis/client/dist/lib/commands/zrangestore.d.ts","./node_modules/@redis/client/dist/lib/commands/zunion.d.ts","./node_modules/@redis/client/dist/lib/commands/zunionstore.d.ts","./node_modules/@redis/client/dist/lib/commands/vadd.d.ts","./node_modules/@redis/client/dist/lib/commands/vinfo.d.ts","./node_modules/@redis/client/dist/lib/commands/vsim.d.ts","./node_modules/@redis/client/dist/lib/commands/index.d.ts","./node_modules/@redis/client/dist/lib/client/socket.d.ts","./node_modules/@redis/client/dist/lib/authx/identity-provider.d.ts","./node_modules/@redis/client/dist/lib/authx/token.d.ts","./node_modules/@redis/client/dist/lib/authx/disposable.d.ts","./node_modules/@redis/client/dist/lib/authx/token-manager.d.ts","./node_modules/@redis/client/dist/lib/authx/credentials-provider.d.ts","./node_modules/@redis/client/dist/lib/authx/index.d.ts","./node_modules/@redis/client/dist/lib/client/pub-sub.d.ts","./node_modules/@redis/client/dist/lib/client/commands-queue.d.ts","./node_modules/@redis/client/dist/lib/multi-command.d.ts","./node_modules/@redis/client/dist/lib/client/multi-command.d.ts","./node_modules/@redis/client/dist/lib/client/legacy-mode.d.ts","./node_modules/@redis/client/dist/lib/client/cache.d.ts","./node_modules/@redis/client/dist/lib/cluster/cluster-slots.d.ts","./node_modules/@redis/client/dist/lib/cluster/multi-command.d.ts","./node_modules/@redis/client/dist/lib/cluster/index.d.ts","./node_modules/@redis/client/dist/lib/client/identity.d.ts","./node_modules/@redis/client/dist/lib/client/pool.d.ts","./node_modules/@redis/client/dist/lib/client/enterprise-maintenance-manager.d.ts","./node_modules/@redis/client/dist/lib/client/index.d.ts","./node_modules/@redis/client/dist/lib/sentinel/types.d.ts","./node_modules/@redis/client/dist/lib/sentinel/multi-commands.d.ts","./node_modules/@redis/client/dist/lib/sentinel/index.d.ts","./node_modules/@redis/client/dist/lib/opentelemetry/types.d.ts","./node_modules/@redis/client/dist/lib/opentelemetry/metrics.d.ts","./node_modules/@redis/client/dist/lib/opentelemetry/client-registry.d.ts","./node_modules/@redis/client/dist/lib/opentelemetry/index.d.ts","./node_modules/@redis/client/dist/lib/client/tracing.d.ts","./node_modules/@redis/client/dist/index.d.ts","./node_modules/@redis/bloom/dist/lib/commands/bloom/info.d.ts","./node_modules/@redis/bloom/dist/lib/commands/bloom/insert.d.ts","./node_modules/@redis/bloom/dist/lib/commands/bloom/reserve.d.ts","./node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/incrby.d.ts","./node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/info.d.ts","./node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/merge.d.ts","./node_modules/@redis/bloom/dist/lib/commands/cuckoo/info.d.ts","./node_modules/@redis/bloom/dist/lib/commands/cuckoo/insert.d.ts","./node_modules/@redis/bloom/dist/lib/commands/cuckoo/reserve.d.ts","./node_modules/@redis/bloom/dist/lib/commands/t-digest/create.d.ts","./node_modules/@redis/bloom/dist/lib/commands/t-digest/info.d.ts","./node_modules/@redis/bloom/dist/lib/commands/t-digest/merge.d.ts","./node_modules/@redis/bloom/dist/lib/commands/top-k/incrby.d.ts","./node_modules/@redis/bloom/dist/lib/commands/top-k/info.d.ts","./node_modules/@redis/bloom/dist/lib/commands/top-k/reserve.d.ts","./node_modules/@redis/bloom/dist/lib/commands/index.d.ts","./node_modules/@redis/bloom/dist/lib/index.d.ts","./node_modules/@redis/json/dist/lib/commands/arrindex.d.ts","./node_modules/@redis/json/dist/lib/commands/arrlen.d.ts","./node_modules/@redis/json/dist/lib/commands/arrpop.d.ts","./node_modules/@redis/json/dist/lib/commands/clear.d.ts","./node_modules/@redis/json/dist/lib/commands/debug_memory.d.ts","./node_modules/@redis/json/dist/lib/commands/del.d.ts","./node_modules/@redis/json/dist/lib/commands/forget.d.ts","./node_modules/@redis/json/dist/lib/commands/get.d.ts","./node_modules/@redis/json/dist/lib/commands/mset.d.ts","./node_modules/@redis/json/dist/lib/commands/objkeys.d.ts","./node_modules/@redis/json/dist/lib/commands/objlen.d.ts","./node_modules/@redis/json/dist/lib/commands/set.d.ts","./node_modules/@redis/json/dist/lib/commands/strappend.d.ts","./node_modules/@redis/json/dist/lib/commands/strlen.d.ts","./node_modules/@redis/json/dist/lib/commands/type.d.ts","./node_modules/@redis/json/dist/lib/commands/index.d.ts","./node_modules/@redis/json/dist/lib/index.d.ts","./node_modules/@redis/search/dist/lib/commands/create.d.ts","./node_modules/@redis/search/dist/lib/commands/search.d.ts","./node_modules/@redis/search/dist/lib/commands/aggregate.d.ts","./node_modules/@redis/search/dist/lib/commands/aggregate_withcursor.d.ts","./node_modules/@redis/search/dist/lib/commands/cursor_read.d.ts","./node_modules/@redis/search/dist/lib/commands/dropindex.d.ts","./node_modules/@redis/search/dist/lib/commands/explain.d.ts","./node_modules/@redis/search/dist/lib/commands/explaincli.d.ts","./node_modules/@redis/search/dist/lib/commands/hybrid.d.ts","./node_modules/@redis/search/dist/lib/commands/info.d.ts","./node_modules/@redis/search/dist/lib/commands/profile_search.d.ts","./node_modules/@redis/search/dist/lib/commands/search_nocontent.d.ts","./node_modules/@redis/search/dist/lib/commands/spellcheck.d.ts","./node_modules/@redis/search/dist/lib/commands/sugadd.d.ts","./node_modules/@redis/search/dist/lib/commands/sugget.d.ts","./node_modules/@redis/search/dist/lib/commands/synupdate.d.ts","./node_modules/@redis/search/dist/lib/commands/index.d.ts","./node_modules/@redis/search/dist/lib/index.d.ts","./node_modules/@redis/time-series/dist/lib/commands/add.d.ts","./node_modules/@redis/time-series/dist/lib/commands/helpers.d.ts","./node_modules/@redis/time-series/dist/lib/commands/create.d.ts","./node_modules/@redis/time-series/dist/lib/commands/alter.d.ts","./node_modules/@redis/time-series/dist/lib/commands/createrule.d.ts","./node_modules/@redis/time-series/dist/lib/commands/incrby.d.ts","./node_modules/@redis/time-series/dist/lib/commands/get.d.ts","./node_modules/@redis/time-series/dist/lib/commands/info.d.ts","./node_modules/@redis/time-series/dist/lib/commands/info_debug.d.ts","./node_modules/@redis/time-series/dist/lib/commands/madd.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mget.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mget_withlabels.d.ts","./node_modules/@redis/time-series/dist/lib/commands/range.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange_groupby.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange_selected_labels.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange_selected_labels_groupby.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange_withlabels_groupby.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange_withlabels.d.ts","./node_modules/@redis/time-series/dist/lib/commands/mrange.d.ts","./node_modules/@redis/time-series/dist/lib/commands/index.d.ts","./node_modules/@redis/time-series/dist/lib/index.d.ts","./node_modules/redis/dist/index.d.ts","./node_modules/connect-redis/dist/connect-redis.d.ts","./node_modules/ioredis/built/types.d.ts","./node_modules/ioredis/built/command.d.ts","./node_modules/ioredis/built/scanstream.d.ts","./node_modules/ioredis/built/utils/rediscommander.d.ts","./node_modules/ioredis/built/transaction.d.ts","./node_modules/ioredis/built/utils/commander.d.ts","./node_modules/ioredis/built/connectors/abstractconnector.d.ts","./node_modules/ioredis/built/connectors/connectorconstructor.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/types.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/sentineliterator.d.ts","./node_modules/ioredis/built/connectors/sentinelconnector/index.d.ts","./node_modules/ioredis/built/connectors/standaloneconnector.d.ts","./node_modules/ioredis/built/redis/redisoptions.d.ts","./node_modules/ioredis/built/cluster/util.d.ts","./node_modules/ioredis/built/cluster/clusteroptions.d.ts","./node_modules/ioredis/built/cluster/index.d.ts","./node_modules/denque/index.d.ts","./node_modules/ioredis/built/subscriptionset.d.ts","./node_modules/ioredis/built/datahandler.d.ts","./node_modules/ioredis/built/redis.d.ts","./node_modules/ioredis/built/pipeline.d.ts","./node_modules/ioredis/built/index.d.ts","./src/common/utils/correlation.utils.ts","./node_modules/keyv/dist/index.d.ts","./node_modules/cache-manager/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/command-options.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/lua-script.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_cat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_deluser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_dryrun.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_genpass.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_getuser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_log_reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_log.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_save.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_setuser.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_users.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/acl_whoami.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/asking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/auth.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bgrewriteaof.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bgsave.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_caching.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_getname.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_getredir.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_id.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_no-evict.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_no-touch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_pause.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_setname.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_tracking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_trackinginfo.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/client_unpause.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_addslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/generic-transformers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_addslotsrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_bumpepoch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_count-failure-reports.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_countkeysinslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_delslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_delslotsrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_failover.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_flushslots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_forget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_getkeysinslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_keyslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_links.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_meet.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_myid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_myshardid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_nodes.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_replicas.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_replicate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_saveconfig.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_set-config-epoch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_setslot.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/cluster_slots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_getkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_getkeysandflags.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_resetstat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_rewrite.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/dbsize.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/discard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/echo.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/failover.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/flushall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/flushdb.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_delete.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_dump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_flush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_list_withcode.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_restore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/function_stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hello.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/keys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lastsave.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_doctor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_graph.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_history.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/latency_latest.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lolwut.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_doctor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_malloc-stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_purge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_stats.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/memory_usage.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/module_unload.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/move.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ping.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_channels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_numpat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_numsub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_shardchannels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pubsub_shardnumsub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/randomkey.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/readonly.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/readwrite.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/replicaof.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/restore-asking.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/role.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/save.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/scan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_debug.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_flush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_kill.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/script_load.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/shutdown.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/swapdb.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/time.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/unwatch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/wait.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/append.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitfield.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitfield_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bitpos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blmove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/blpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/brpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/brpoplpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzmpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzpopmax.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/bzpopmin.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/copy.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/decr.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/decrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/dump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/eval_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/eval.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/evalsha.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/evalsha_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/expiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/fcall_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/fcall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geoadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geodist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geohash.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geopos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_ro_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadius_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_ro_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymember_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusbymemberstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/georadiusstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearch_with.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/geosearchstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getbit.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/getset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hgetall.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hincrbyfloat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hmget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpersist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hpttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hrandfield_count_withvalues.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hscan_novalues.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hsetnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hstrlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/httl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/hvals.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incr.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/incrbyfloat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_idx_withmatchlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_idx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lcs_len.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/linsert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/llen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lmove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpop_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpos.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpos_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lpushx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lrem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/lset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ltrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/migrate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/mset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/msetnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_encoding.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_freq.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_idletime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/object_refcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/persist.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpire.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpireat.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pexpiretime.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pfmerge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/psetex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/pttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/publish.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rename.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/renamenx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/restore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpop_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpoplpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpush.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/rpushx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/scard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sdiff.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sdiffstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sinter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sintercard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sinterstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setbit.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/setrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sismember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smembers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smismember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/smove.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort_ro.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort_store.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sort.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/spop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/spublish.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srandmember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srandmember_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/srem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/strlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sunion.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/sunionstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/touch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/ttl.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/type.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/unlink.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/watch.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xack.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xautoclaim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xautoclaim_justid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xclaim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xclaim_justid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_createconsumer.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_delconsumer.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_destroy.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xgroup_setid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_consumers.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_groups.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xinfo_stream.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xpending_range.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xpending.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xread.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xreadgroup.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xrevrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xsetid.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/xtrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zcard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiff.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiff_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zdiffstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinter_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zintercard.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zinterstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zlexcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zmscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmax.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmax_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmin.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zpopmin_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember_count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrandmember_count_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrange_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebylex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebyscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangebyscore_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrangestore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrem.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebylex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebyrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zremrangebyscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zrevrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zscan.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zscore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunion.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunion_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/commands/zunionstore.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/commands.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/socket.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/pub-sub.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/commands-queue.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/errors.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/multi-command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/multi-command.d.ts","./node_modules/generic-pool/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/client/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/commands.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/cluster-slots.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/multi-command.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/lib/cluster/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/client/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/card.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/insert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/loadchunk.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/madd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/mexists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/bloom/scandump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/initbydim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/initbyprob.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/count-min-sketch/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/addnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/exists.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/insertnx.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/loadchunk.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/scandump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/cuckoo/insert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/byrevrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/cdf.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/max.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/min.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/quantile.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/rank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/reset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/revrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/trimmed_mean.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/t-digest/byrank.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/count.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/list_withcount.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/top-k/reserve.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/bloom/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/delete.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/explain.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/profile.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/ro_query.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/slowlog.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/graph.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/graph/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrappend.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrinsert.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrpop.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/arrtrim.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/debug_memory.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/forget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/merge.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/mset.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/numincrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/nummultby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/objkeys.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/objlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/resp.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/strappend.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/strlen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/type.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/json/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/_list.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/alter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aggregate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aggregate_withcursor.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/aliasupdate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/config_get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/config_set.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/cursor_del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/cursor_read.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dictdump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/dropindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/explain.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/explaincli.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/search.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/profile_search.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/profile_aggregate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/search_nocontent.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/spellcheck.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugadd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugdel.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withpayloads.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withscores.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/sugget_withscores_withpayloads.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/suglen.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/syndump.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/synupdate.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/tagvals.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/search/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/add.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/alter.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/create.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/createrule.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/decrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/del.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/deleterule.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/get.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/incrby.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/info.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/info_debug.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/madd.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mget.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mget_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/queryindex.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/range.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/revrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrange_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrevrange.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/mrevrange_withlabels.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/commands/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/@redis/time-series/dist/index.d.ts","./node_modules/cache-manager-redis-store/node_modules/redis/dist/index.d.ts","./node_modules/cache-manager-redis-store/dist/index.d.ts","./src/config/cache.config.ts","./src/session/session.constants.ts","./node_modules/helmet/index.d.cts","./src/config/cors.config.ts","./src/common/services/shutdown-state.service.ts","./src/common/middleware/decompression.middleware.ts","./src/main.ts","./src/ab-testing/ab-testing.constants.ts","./src/ab-testing/entities/variant-metric.entity.ts","./src/ab-testing/entities/experiment-variant.entity.ts","./src/ab-testing/entities/experiment-metric.entity.ts","./src/ab-testing/entities/experiment.entity.ts","./src/ab-testing/ab-testing.service.ts","./src/ab-testing/experiments/experiment.service.ts","./src/ab-testing/analysis/statistical-analysis.service.ts","./src/ab-testing/automation/automated-decision.service.ts","./src/ab-testing/reporting/ab-testing-reports.service.ts","./node_modules/@nestjs/passport/dist/abstract.strategy.d.ts","./node_modules/@nestjs/passport/dist/interfaces/auth-module.options.d.ts","./node_modules/@nestjs/passport/dist/interfaces/type.interface.d.ts","./node_modules/@nestjs/passport/dist/interfaces/index.d.ts","./node_modules/@nestjs/passport/dist/auth.guard.d.ts","./node_modules/@nestjs/passport/dist/passport.module.d.ts","./node_modules/@types/passport/index.d.ts","./node_modules/@nestjs/passport/dist/passport/passport.serializer.d.ts","./node_modules/@nestjs/passport/dist/passport/passport.strategy.d.ts","./node_modules/@nestjs/passport/dist/index.d.ts","./node_modules/@nestjs/passport/index.d.ts","./src/common/constants/auth.constants.ts","./src/auth/guards/jwt-auth.guard.ts","./src/courses/entities/lesson.entity.ts","./src/courses/entities/course-module.entity.ts","./src/courses/entities/enrollment.entity.ts","./src/courses/entities/course.entity.ts","./src/users/entities/user.entity.ts","./src/auth/decorators/roles.decorator.ts","./src/auth/guards/roles.guard.ts","./src/ab-testing/ab-testing.controller.ts","./src/ab-testing/ab-testing.module.ts","./src/analytics/analytics.controller.ts","./node_modules/prom-client/index.d.ts","./src/monitoring/metrics/metrics-collection.service.ts","./src/analytics/analytics.service.ts","./src/analytics/analytics.module.ts","./src/analytics/dto/create-event.dto.ts","./src/assessment/enums/assessment-status.enum.ts","./src/assessment/enums/question-type.enum.ts","./src/assessment/entities/question.entity.ts","./src/assessment/entities/assessment.entity.ts","./src/assessment/entities/answer.entity.ts","./src/assessment/entities/assessment-attempt.entity.ts","./src/assessment/feedback/feedback-generation.service.ts","./src/assessment/scoring/score-calculation.service.ts","./src/assessment/assessments.service.ts","./src/assessment/assessment.controller.ts","./src/assessment/questions/question-bank.service.ts","./src/assessment/assessment.module.ts","./src/assessment/dto/create-assessment.dto.ts","./src/assessment/dto/update-assessment.dto.ts","./src/audit-log/enums/audit-action.enum.ts","./src/audit-log/audit-log.entity.ts","./src/common/utils/pii-sanitizer.utils.ts","./src/middleware/audit/log-retention.policy.ts","./src/audit-log/audit-log.service.ts","./src/audit-log/decorators/audit.decorator.ts","./src/audit-log/decorators/sensitive-operation.decorator.ts","./src/audit-log/services/sensitive-operations.service.ts","./src/audit-log/tasks/audit-retention.task.ts","./src/auth/decorators/current-user.decorator.ts","./src/backup/enums/backup-status.enum.ts","./src/backup/enums/backup-type.enum.ts","./src/backup/enums/region.enum.ts","./src/backup/dto/backup-response.dto.ts","./src/backup/enums/recovery-test-status.enum.ts","./src/backup/dto/recovery-test-response.dto.ts","./src/backup/dto/restore-backup.dto.ts","./src/backup/dto/trigger-recovery-test.dto.ts","./src/backup/entities/backup-record.entity.ts","./src/backup/entities/recovery-test.entity.ts","./src/backup/interfaces/backup.interfaces.ts","./src/caching/caching.constants.ts","./src/cdn/dto/upload-content.dto.ts","./src/cdn/entities/content-metadata.entity.ts","./src/collaboration/constants/collaboration-events.constants.ts","./src/collaboration/dto/create-session.dto.ts","./src/collaboration/dto/websocket.dto.ts","./src/common/database/transaction-helper.service.ts","./node_modules/@elastic/transport/lib/symbols.d.ts","./node_modules/@elastic/transport/lib/connection/baseconnection.d.ts","./node_modules/hpagent/index.d.ts","./node_modules/@elastic/transport/lib/connection/httpconnection.d.ts","./node_modules/undici/types/utility.d.ts","./node_modules/undici/types/header.d.ts","./node_modules/undici/types/readable.d.ts","./node_modules/undici/types/fetch.d.ts","./node_modules/undici/types/formdata.d.ts","./node_modules/undici/types/connector.d.ts","./node_modules/undici/types/client-stats.d.ts","./node_modules/undici/types/client.d.ts","./node_modules/undici/types/errors.d.ts","./node_modules/undici/types/dispatcher.d.ts","./node_modules/undici/types/global-dispatcher.d.ts","./node_modules/undici/types/global-origin.d.ts","./node_modules/undici/types/pool-stats.d.ts","./node_modules/undici/types/pool.d.ts","./node_modules/undici/types/handlers.d.ts","./node_modules/undici/types/balanced-pool.d.ts","./node_modules/undici/types/round-robin-pool.d.ts","./node_modules/undici/types/h2c-client.d.ts","./node_modules/undici/types/agent.d.ts","./node_modules/undici/types/mock-interceptor.d.ts","./node_modules/undici/types/mock-call-history.d.ts","./node_modules/undici/types/mock-agent.d.ts","./node_modules/undici/types/mock-client.d.ts","./node_modules/undici/types/mock-pool.d.ts","./node_modules/undici/types/snapshot-agent.d.ts","./node_modules/undici/types/mock-errors.d.ts","./node_modules/undici/types/proxy-agent.d.ts","./node_modules/undici/types/socks5-proxy-agent.d.ts","./node_modules/undici/types/env-http-proxy-agent.d.ts","./node_modules/undici/types/retry-handler.d.ts","./node_modules/undici/types/retry-agent.d.ts","./node_modules/undici/types/api.d.ts","./node_modules/undici/types/cache-interceptor.d.ts","./node_modules/undici/types/interceptors.d.ts","./node_modules/undici/types/util.d.ts","./node_modules/undici/types/cookies.d.ts","./node_modules/undici/types/patch.d.ts","./node_modules/undici/types/websocket.d.ts","./node_modules/undici/types/eventsource.d.ts","./node_modules/undici/types/diagnostics-channel.d.ts","./node_modules/undici/types/content-type.d.ts","./node_modules/undici/types/cache.d.ts","./node_modules/undici/types/index.d.ts","./node_modules/undici/index.d.ts","./node_modules/@elastic/transport/lib/connection/undiciconnection.d.ts","./node_modules/@elastic/transport/lib/connection/index.d.ts","./node_modules/@elastic/transport/lib/serializer.d.ts","./node_modules/@elastic/transport/lib/pool/baseconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/weightedconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/clusterconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/cloudconnectionpool.d.ts","./node_modules/@elastic/transport/lib/pool/index.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/types.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts","./node_modules/@opentelemetry/api/build/src/common/exception.d.ts","./node_modules/@opentelemetry/api/build/src/common/time.d.ts","./node_modules/@opentelemetry/api/build/src/common/attributes.d.ts","./node_modules/@opentelemetry/api/build/src/context/types.d.ts","./node_modules/@opentelemetry/api/build/src/context/context.d.ts","./node_modules/@opentelemetry/api/build/src/api/context.d.ts","./node_modules/@opentelemetry/api/build/src/diag/types.d.ts","./node_modules/@opentelemetry/api/build/src/diag/consolelogger.d.ts","./node_modules/@opentelemetry/api/build/src/api/diag.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/metric.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/meter.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/noopmeter.d.ts","./node_modules/@opentelemetry/api/build/src/metrics/meterprovider.d.ts","./node_modules/@opentelemetry/api/build/src/api/metrics.d.ts","./node_modules/@opentelemetry/api/build/src/propagation/textmappropagator.d.ts","./node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts","./node_modules/@opentelemetry/api/build/src/api/propagation.d.ts","./node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts","./node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts","./node_modules/@opentelemetry/api/build/src/trace/link.d.ts","./node_modules/@opentelemetry/api/build/src/trace/status.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span.d.ts","./node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts","./node_modules/@opentelemetry/api/build/src/trace/spanoptions.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts","./node_modules/@opentelemetry/api/build/src/trace/proxytracer.d.ts","./node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts","./node_modules/@opentelemetry/api/build/src/trace/proxytracerprovider.d.ts","./node_modules/@opentelemetry/api/build/src/trace/samplingresult.d.ts","./node_modules/@opentelemetry/api/build/src/trace/sampler.d.ts","./node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts","./node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts","./node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts","./node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts","./node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts","./node_modules/@opentelemetry/api/build/src/api/trace.d.ts","./node_modules/@opentelemetry/api/build/src/context-api.d.ts","./node_modules/@opentelemetry/api/build/src/diag-api.d.ts","./node_modules/@opentelemetry/api/build/src/metrics-api.d.ts","./node_modules/@opentelemetry/api/build/src/propagation-api.d.ts","./node_modules/@opentelemetry/api/build/src/trace-api.d.ts","./node_modules/@opentelemetry/api/build/src/index.d.ts","./node_modules/@elastic/transport/lib/middleware/types.d.ts","./node_modules/@elastic/transport/lib/middleware/middlewareengine.d.ts","./node_modules/@elastic/transport/lib/middleware/productcheck.d.ts","./node_modules/@elastic/transport/lib/middleware/index.d.ts","./node_modules/@elastic/transport/lib/transport.d.ts","./node_modules/@elastic/transport/lib/types.d.ts","./node_modules/@elastic/transport/lib/errors.d.ts","./node_modules/@elastic/transport/lib/diagnostic.d.ts","./node_modules/@elastic/transport/index.d.ts","./node_modules/@elastic/elasticsearch/lib/sniffingtransport.d.ts","./node_modules/@elastic/elasticsearch/lib/api/types.d.ts","./node_modules/@elastic/elasticsearch/lib/helpers.d.ts","./node_modules/@elastic/elasticsearch/lib/symbols.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/async_search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/autoscaling.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/bulk.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cancel_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/capabilities.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cat.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ccr.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/clear_scroll.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/close_point_in_time.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/cluster.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/connector.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/count.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/create.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/dangling_indices.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_by_query.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_by_query_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/delete_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/enrich.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/eql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/esql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/exists.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/exists_source.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/explain.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/features.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/field_caps.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/fleet.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script_context.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_script_languages.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/get_source.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/graph.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/health_report.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ilm.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/index.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/indices.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/inference.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/info.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ingest.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/knn_search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/license.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/list_reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/logstash.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/mget.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/migration.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ml.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/monitoring.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/msearch.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/msearch_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/mtermvectors.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/nodes.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/open_point_in_time.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ping.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/profiling.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/project.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/put_script.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/query_rules.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/rank_eval.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/reindex.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/reindex_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/render_search_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/rollup.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/scripts_painless_execute.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/scroll.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_application.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_mvt.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_shards.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/search_template.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/searchable_snapshots.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/security.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/shutdown.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/simulate.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/slm.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/snapshot.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/sql.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/ssl.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/streams.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/synonyms.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/tasks.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/terms_enum.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/termvectors.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/text_structure.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/transform.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update_by_query.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/update_by_query_rethrottle.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/watcher.d.ts","./node_modules/@elastic/elasticsearch/lib/api/api/xpack.d.ts","./node_modules/@elastic/elasticsearch/lib/api/index.d.ts","./node_modules/@elastic/elasticsearch/lib/client.d.ts","./node_modules/@elastic/elasticsearch/index.d.ts","./src/common/services/log-shipper.service.ts","./src/common/common.module.ts","./src/common/constants/app.constants.ts","./src/common/constants/event.constants.ts","./src/common/constants/queue.constants.ts","./src/common/services/circuit-breaker.service.ts","./src/common/controllers/circuit-breaker.controller.ts","./src/common/database/sharding/config/shard.config.ts","./src/common/database/sharding/constants/shard.constants.ts","./src/common/database/sharding/datasource/shard-datasource.manager.ts","./src/common/database/sharding/runner/shard-aware-query-runner.ts","./src/common/decorators/circuit-breaker.decorator.ts","./src/common/decorators/idempotency.decorator.ts","./src/common/decorators/roles.decorator.ts","./src/common/types/request-with-locale.ts","./src/common/decorators/translate.decorator.ts","./node_modules/class-transformer/types/interfaces/decorator-options/expose-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/exclude-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/transform-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/type-discriminator-descriptor.interface.d.ts","./node_modules/class-transformer/types/interfaces/decorator-options/type-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/exclude-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/expose-metadata.interface.d.ts","./node_modules/class-transformer/types/enums/transformation-type.enum.d.ts","./node_modules/class-transformer/types/enums/index.d.ts","./node_modules/class-transformer/types/interfaces/target-map.interface.d.ts","./node_modules/class-transformer/types/interfaces/class-transformer-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/transform-fn-params.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/transform-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/metadata/type-metadata.interface.d.ts","./node_modules/class-transformer/types/interfaces/class-constructor.type.d.ts","./node_modules/class-transformer/types/interfaces/type-help-options.interface.d.ts","./node_modules/class-transformer/types/interfaces/index.d.ts","./node_modules/class-transformer/types/classtransformer.d.ts","./node_modules/class-transformer/types/decorators/exclude.decorator.d.ts","./node_modules/class-transformer/types/decorators/expose.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-instance-to-instance.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-instance-to-plain.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform-plain-to-instance.decorator.d.ts","./node_modules/class-transformer/types/decorators/transform.decorator.d.ts","./node_modules/class-transformer/types/decorators/type.decorator.d.ts","./node_modules/class-transformer/types/decorators/index.d.ts","./node_modules/class-transformer/types/index.d.ts","./src/common/dto/pagination.dto.ts","./src/common/exceptions/app.exceptions.ts","./src/common/guards/throttle.guard.ts","./src/common/interceptors/api-error.interface.ts","./src/common/interceptors/circuit-breaker.interceptor.ts","./src/common/services/idempotency.service.ts","./src/common/interceptors/idempotency.interceptor.ts","./src/common/modules/idempotency.module.ts","./src/common/naming/naming.service.ts","./src/common/naming/naming.module.ts","./src/common/types/file.types.ts","./src/common/utils/bull-redis.util.ts","./src/common/utils/data-anonymization.service.ts","./src/common/utils/sanitization.utils.ts","./src/common/utils/user.utils.ts","./node_modules/@nestjs/elasticsearch/dist/interfaces/elasticsearch-module-options.interface.d.ts","./node_modules/@nestjs/elasticsearch/dist/elasticsearch.module.d.ts","./node_modules/@nestjs/elasticsearch/dist/elasticsearch.service.d.ts","./node_modules/@nestjs/elasticsearch/dist/interfaces/index.d.ts","./node_modules/@nestjs/elasticsearch/dist/index.d.ts","./node_modules/@nestjs/elasticsearch/index.d.ts","./src/config/elasticsearch.config.ts","./node_modules/@standard-schema/spec/dist/index.d.ts","./node_modules/joi/lib/index.d.ts","./src/config/env.validation.ts","./src/courses/dto/course-search.dto.ts","./src/courses/dto/create-course.dto.ts","./src/courses/dto/create-lesson.dto.ts","./src/courses/dto/create-module.dto.ts","./src/courses/dto/update-course.dto.ts","./src/courses/lessons/lessons.service.ts","./src/courses/modules/modules.service.ts","./src/database/pool/pool.config.ts","./src/database/pool/pool-monitor.service.ts","./src/database/pool/pool-leak-detector.service.ts","./src/database/database-pool.module.ts","./src/database/pool/index.ts","./node_modules/@nestjs/bull-shared/dist/bull.messages.d.ts","./node_modules/@nestjs/bull-shared/dist/bull.tokens.d.ts","./node_modules/@nestjs/bull-shared/dist/errors/missing-shared-bull-config.error.d.ts","./node_modules/@nestjs/bull-shared/dist/errors/index.d.ts","./node_modules/@nestjs/bull-shared/dist/helpers/create-conditional-dep-holder.helper.d.ts","./node_modules/@nestjs/bull-shared/dist/helpers/index.d.ts","./node_modules/@nestjs/bull-shared/dist/utils/get-queue-token.util.d.ts","./node_modules/@nestjs/bull-shared/dist/utils/index.d.ts","./node_modules/@nestjs/bull-shared/dist/index.d.ts","./node_modules/bull/index.d.ts","./node_modules/@nestjs/bull/dist/interfaces/bull.interfaces.d.ts","./node_modules/@nestjs/bull/dist/bull.types.d.ts","./node_modules/@nestjs/bull/dist/interfaces/bull-module-options.interface.d.ts","./node_modules/@nestjs/bull/dist/interfaces/shared-bull-config.interface.d.ts","./node_modules/@nestjs/bull/dist/interfaces/index.d.ts","./node_modules/@nestjs/bull/dist/bull.module.d.ts","./node_modules/@nestjs/bull/dist/decorators/inject-queue.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/process.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/processor.decorator.d.ts","./node_modules/@nestjs/bull/dist/decorators/queue-hooks.decorators.d.ts","./node_modules/@nestjs/bull/dist/decorators/index.d.ts","./node_modules/@nestjs/bull/dist/enums/bull-queue-events.enum.d.ts","./node_modules/@nestjs/bull/dist/enums/bull-queue-global-events.enum.d.ts","./node_modules/@nestjs/bull/dist/enums/index.d.ts","./node_modules/@nestjs/bull/dist/utils/get-queue-options-token.util.d.ts","./node_modules/@nestjs/bull/dist/utils/get-shared-config-token.util.d.ts","./node_modules/@nestjs/bull/dist/utils/index.d.ts","./node_modules/@nestjs/bull/dist/index.d.ts","./node_modules/eventemitter2/eventemitter2.d.ts","./node_modules/@nestjs/event-emitter/dist/constants.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/event-emitter-options.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/on-event-options.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/event-payload-host.interface.d.ts","./node_modules/@nestjs/event-emitter/dist/interfaces/index.d.ts","./node_modules/@nestjs/event-emitter/dist/decorators/on-event.decorator.d.ts","./node_modules/@nestjs/event-emitter/dist/decorators/index.d.ts","./node_modules/@nestjs/event-emitter/dist/event-emitter-readiness.watcher.d.ts","./node_modules/@nestjs/event-emitter/dist/event-emitter.module.d.ts","./node_modules/@nestjs/event-emitter/dist/index.d.ts","./src/email-marketing/enums/trigger-type.enum.ts","./src/email-marketing/entities/automation-trigger.entity.ts","./src/email-marketing/enums/action-type.enum.ts","./src/email-marketing/entities/automation-action.entity.ts","./src/email-marketing/enums/workflow-status.enum.ts","./src/email-marketing/entities/automation-workflow.entity.ts","./src/email-marketing/dto/create-automation.dto.ts","./src/email-marketing/dto/update-automation.dto.ts","./src/email-marketing/automation/automation.service.ts","./src/email-marketing/automation/automation.controller.ts","./src/email-marketing/dto/add-segment-members.dto.ts","./src/email-marketing/dto/create-ab-test.dto.ts","./src/email-marketing/dto/create-campaign.dto.ts","./src/email-marketing/enums/segment-rule-field.enum.ts","./src/email-marketing/enums/segment-rule-operator.enum.ts","./src/email-marketing/dto/create-segment.dto.ts","./src/email-marketing/dto/create-template.dto.ts","./src/email-marketing/dto/update-campaign.dto.ts","./src/email-marketing/dto/schedule-campaign.dto.ts","./src/email-marketing/dto/update-template.dto.ts","./src/email-marketing/dto/update-segment.dto.ts","./src/email-marketing/dto/index.ts","./src/email-marketing/entities/email-template.entity.ts","./src/email-marketing/enums/recipient-status.enum.ts","./src/email-marketing/entities/campaign-recipient.entity.ts","./src/email-marketing/enums/campaign-status.enum.ts","./src/email-marketing/entities/campaign.entity.ts","./src/email-marketing/enums/ab-test-status.enum.ts","./src/email-marketing/entities/ab-test.entity.ts","./src/email-marketing/entities/ab-test-variant.entity.ts","./src/email-marketing/enums/email-event-type.enum.ts","./src/email-marketing/entities/email-event.entity.ts","./src/email-marketing/entities/email-subscription.entity.ts","./src/email-marketing/entities/segment-rule.entity.ts","./src/email-marketing/entities/segment.entity.ts","./src/email-marketing/entities/index.ts","./src/email-marketing/enums/index.ts","./node_modules/handlebars/types/index.d.ts","./src/email-marketing/templates/template-management.service.ts","./src/email-marketing/templates/template.controller.ts","./src/feature-flags/interfaces/index.ts","./src/gamification/entities/badge.entity.ts","./src/gamification/entities/user-badge.entity.ts","./src/gamification/badges/badges.service.ts","./src/gamification/entities/challenge.entity.ts","./src/gamification/entities/point-transaction.entity.ts","./src/gamification/entities/user-challenge.entity.ts","./src/gamification/entities/user-progress.entity.ts","./src/gamification/leaderboards/leaderboards.service.ts","./src/gamification/points/points.service.ts","./node_modules/@nestjs/graphql/dist/decorators/args-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/base-type-options.interface.d.ts","./node_modules/graphql/version.d.ts","./node_modules/graphql/jsutils/maybe.d.ts","./node_modules/graphql/language/source.d.ts","./node_modules/graphql/jsutils/objmap.d.ts","./node_modules/graphql/jsutils/path.d.ts","./node_modules/graphql/jsutils/promiseorvalue.d.ts","./node_modules/graphql/language/kinds.d.ts","./node_modules/graphql/language/tokenkind.d.ts","./node_modules/graphql/language/ast.d.ts","./node_modules/graphql/language/location.d.ts","./node_modules/graphql/error/graphqlerror.d.ts","./node_modules/graphql/language/directivelocation.d.ts","./node_modules/graphql/type/directives.d.ts","./node_modules/graphql/type/schema.d.ts","./node_modules/graphql/type/definition.d.ts","./node_modules/graphql/execution/execute.d.ts","./node_modules/graphql/graphql.d.ts","./node_modules/graphql/type/scalars.d.ts","./node_modules/graphql/type/introspection.d.ts","./node_modules/graphql/type/validate.d.ts","./node_modules/graphql/type/assertname.d.ts","./node_modules/graphql/type/index.d.ts","./node_modules/graphql/language/printlocation.d.ts","./node_modules/graphql/language/lexer.d.ts","./node_modules/graphql/language/parser.d.ts","./node_modules/graphql/language/printer.d.ts","./node_modules/graphql/language/visitor.d.ts","./node_modules/graphql/language/predicates.d.ts","./node_modules/graphql/language/index.d.ts","./node_modules/graphql/execution/subscribe.d.ts","./node_modules/graphql/execution/values.d.ts","./node_modules/graphql/execution/index.d.ts","./node_modules/graphql/subscription/index.d.ts","./node_modules/graphql/utilities/typeinfo.d.ts","./node_modules/graphql/validation/validationcontext.d.ts","./node_modules/graphql/validation/validate.d.ts","./node_modules/graphql/validation/rules/maxintrospectiondepthrule.d.ts","./node_modules/graphql/validation/specifiedrules.d.ts","./node_modules/graphql/validation/rules/executabledefinitionsrule.d.ts","./node_modules/graphql/validation/rules/fieldsoncorrecttyperule.d.ts","./node_modules/graphql/validation/rules/fragmentsoncompositetypesrule.d.ts","./node_modules/graphql/validation/rules/knownargumentnamesrule.d.ts","./node_modules/graphql/validation/rules/knowndirectivesrule.d.ts","./node_modules/graphql/validation/rules/knownfragmentnamesrule.d.ts","./node_modules/graphql/validation/rules/knowntypenamesrule.d.ts","./node_modules/graphql/validation/rules/loneanonymousoperationrule.d.ts","./node_modules/graphql/validation/rules/nofragmentcyclesrule.d.ts","./node_modules/graphql/validation/rules/noundefinedvariablesrule.d.ts","./node_modules/graphql/validation/rules/nounusedfragmentsrule.d.ts","./node_modules/graphql/validation/rules/nounusedvariablesrule.d.ts","./node_modules/graphql/validation/rules/overlappingfieldscanbemergedrule.d.ts","./node_modules/graphql/validation/rules/possiblefragmentspreadsrule.d.ts","./node_modules/graphql/validation/rules/providedrequiredargumentsrule.d.ts","./node_modules/graphql/validation/rules/scalarleafsrule.d.ts","./node_modules/graphql/validation/rules/singlefieldsubscriptionsrule.d.ts","./node_modules/graphql/validation/rules/uniqueargumentnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquedirectivesperlocationrule.d.ts","./node_modules/graphql/validation/rules/uniquefragmentnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueinputfieldnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueoperationnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquevariablenamesrule.d.ts","./node_modules/graphql/validation/rules/valuesofcorrecttyperule.d.ts","./node_modules/graphql/validation/rules/variablesareinputtypesrule.d.ts","./node_modules/graphql/validation/rules/variablesinallowedpositionrule.d.ts","./node_modules/graphql/validation/rules/loneschemadefinitionrule.d.ts","./node_modules/graphql/validation/rules/uniqueoperationtypesrule.d.ts","./node_modules/graphql/validation/rules/uniquetypenamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueenumvaluenamesrule.d.ts","./node_modules/graphql/validation/rules/uniquefielddefinitionnamesrule.d.ts","./node_modules/graphql/validation/rules/uniqueargumentdefinitionnamesrule.d.ts","./node_modules/graphql/validation/rules/uniquedirectivenamesrule.d.ts","./node_modules/graphql/validation/rules/possibletypeextensionsrule.d.ts","./node_modules/graphql/validation/rules/custom/nodeprecatedcustomrule.d.ts","./node_modules/graphql/validation/rules/custom/noschemaintrospectioncustomrule.d.ts","./node_modules/graphql/validation/index.d.ts","./node_modules/graphql/error/syntaxerror.d.ts","./node_modules/graphql/error/locatederror.d.ts","./node_modules/graphql/error/index.d.ts","./node_modules/graphql/utilities/getintrospectionquery.d.ts","./node_modules/graphql/utilities/getoperationast.d.ts","./node_modules/graphql/utilities/getoperationroottype.d.ts","./node_modules/graphql/utilities/introspectionfromschema.d.ts","./node_modules/graphql/utilities/buildclientschema.d.ts","./node_modules/graphql/utilities/buildastschema.d.ts","./node_modules/graphql/utilities/extendschema.d.ts","./node_modules/graphql/utilities/lexicographicsortschema.d.ts","./node_modules/graphql/utilities/printschema.d.ts","./node_modules/graphql/utilities/typefromast.d.ts","./node_modules/graphql/utilities/valuefromast.d.ts","./node_modules/graphql/utilities/valuefromastuntyped.d.ts","./node_modules/graphql/utilities/astfromvalue.d.ts","./node_modules/graphql/utilities/coerceinputvalue.d.ts","./node_modules/graphql/utilities/concatast.d.ts","./node_modules/graphql/utilities/separateoperations.d.ts","./node_modules/graphql/utilities/stripignoredcharacters.d.ts","./node_modules/graphql/utilities/typecomparators.d.ts","./node_modules/graphql/utilities/assertvalidname.d.ts","./node_modules/graphql/utilities/findbreakingchanges.d.ts","./node_modules/graphql/utilities/typedquerydocumentnode.d.ts","./node_modules/graphql/utilities/resolveschemacoordinate.d.ts","./node_modules/graphql/utilities/index.d.ts","./node_modules/graphql/index.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/field-middleware.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/build-schema-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/complexity.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/custom-scalar.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/gql-exception-filter.interface.d.ts","./node_modules/@graphql-typed-document-node/core/typings/index.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/interfaces.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/loaders.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/helpers.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getdirectiveextensions.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/types.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-fields-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-arguments-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/get-implementing-types.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/print-schema-with-directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/validate-documents.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/parse-graphql-json.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/parse-graphql-sdl.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/build-operation-for-field.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/filterschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/heal.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getresolversfromschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/foreachfield.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/foreachdefaultvalue.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mapschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/addtypes.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/rewire.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/prune.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mergedeep.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/stub.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/selectionsets.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getresponsekeyfrominfo.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fields.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/renametype.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/transforminputvalue.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/executor.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mapasynciterator.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/updateargument.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/implementsabstracttype.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/errors.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/observabletoasynciterable.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/visitresult.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getargumentvalues.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/valuematchescriteria.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/isasynciterable.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/isdocumentnode.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/astfromvalueuntyped.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/withcancel.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/roottypes.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/comments.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/collectfields.d.ts","./node_modules/cross-inspect/typings/index.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/memoize.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fixschemaast.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/getoperationastfromrequest.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/extractextensionsfromschema.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/path.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/jsutils.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/directives.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/mergeincrementalresult.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/debugtimer.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/map-maybe-promise.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/fakepromise.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/createdeferred.d.ts","./node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils/typings/index.d.ts","./node_modules/@ts-morph/common/lib/typescript.d.ts","./node_modules/@ts-morph/common/lib/ts-morph-common.d.ts","./node_modules/ts-morph/lib/ts-morph.d.ts","./node_modules/@nestjs/graphql/dist/graphql-ast.explorer.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/schema-file-config.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/gql-module-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/graphql-driver.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/resolve-type-fn.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/return-type-func.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/build-federated-schema-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/index.d.ts","./node_modules/@nestjs/graphql/dist/decorators/args.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/context.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/directive.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/extensions.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/hide-field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/info.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/input-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/interface-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/mutation.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/object-type.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/parent.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/query.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-field.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-property.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolve-reference.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/resolver.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/root.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/scalar.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/subscription.decorator.d.ts","./node_modules/@nestjs/graphql/dist/decorators/index.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/type-options.interface.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/directive.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/param.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/resolver.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/orphaned-reference.registry.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/property.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/class.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/enum.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/extensions.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/union.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/type-mapper.service.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/enum-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/services/type-fields.accessor.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/ast-definition-node.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/input-type-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/interface.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/output-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/resolve-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/interface-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/metadata/object-type.metadata.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/object-type-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/union-definition.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/type-definitions.storage.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/input-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/args.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/root-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/mutation-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/orphaned-types.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/query-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/factories/subscription-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/type-definitions.generator.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/graphql-schema.factory.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/helpers/file-system.helper.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/resolver-metadata.interface.d.ts","./node_modules/@nestjs/graphql/dist/services/base-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-arguments-host.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-execution-context.d.ts","./node_modules/graphql-ws/lib/common.d.ts","./node_modules/graphql-ws/lib/client.d.ts","./node_modules/graphql-ws/lib/server.d.ts","./node_modules/graphql-ws/lib/index.d.ts","./node_modules/subscriptions-transport-ws/node_modules/eventemitter3/index.d.ts","./node_modules/subscriptions-transport-ws/dist/client.d.ts","./node_modules/@types/ws/index.d.ts","./node_modules/subscriptions-transport-ws/dist/server.d.ts","./node_modules/subscriptions-transport-ws/dist/message-types.d.ts","./node_modules/subscriptions-transport-ws/dist/protocol.d.ts","./node_modules/subscriptions-transport-ws/dist/index.d.ts","./node_modules/@nestjs/graphql/dist/services/gql-subscription.service.d.ts","./node_modules/@nestjs/graphql/dist/services/resolvers-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/scalars-explorer.service.d.ts","./node_modules/@nestjs/graphql/dist/services/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-schema.builder.d.ts","./node_modules/@nestjs/graphql/dist/graphql.factory.d.ts","./node_modules/@nestjs/graphql/dist/drivers/abstract-graphql.driver.d.ts","./node_modules/@nestjs/graphql/dist/drivers/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-types.loader.d.ts","./node_modules/@nestjs/graphql/dist/graphql-definitions.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/graphql-federation-definitions.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/type-defs-decorator.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/graphql-federation.factory.d.ts","./node_modules/@nestjs/graphql/dist/federation/index.d.ts","./node_modules/@nestjs/graphql/dist/graphql-schema.host.d.ts","./node_modules/@nestjs/graphql/dist/graphql.constants.d.ts","./node_modules/@nestjs/graphql/dist/graphql.module.d.ts","./node_modules/@nestjs/graphql/dist/scalars/iso-date.scalar.d.ts","./node_modules/@nestjs/graphql/dist/scalars/timestamp.scalar.d.ts","./node_modules/@nestjs/graphql/dist/scalars/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/type-metadata.storage.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/storages/index.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/schema-builder.module.d.ts","./node_modules/@nestjs/graphql/dist/schema-builder/index.d.ts","./node_modules/@nestjs/graphql/dist/tokens.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/create-union-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/register-enum-type.factory.d.ts","./node_modules/@nestjs/graphql/dist/type-factories/index.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/field-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/interfaces/class-decorator-factory.interface.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/intersection-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/omit-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/partial-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/pick-type.helper.d.ts","./node_modules/@nestjs/graphql/dist/type-helpers/index.d.ts","./node_modules/@nestjs/graphql/dist/utils/extend.util.d.ts","./node_modules/@nestjs/graphql/dist/utils/transform-schema.util.d.ts","./node_modules/@nestjs/graphql/dist/index.d.ts","./src/graphql/inputs/assessment.input.ts","./src/graphql/inputs/course.input.ts","./src/graphql/inputs/user.input.ts","./src/graphql/inputs/index.ts","./src/graphql/types/assessment.type.ts","./src/graphql/resolvers/assessment.resolver.ts","./node_modules/graphql-subscriptions/dist/pubsub-async-iterable-iterator.d.ts","./node_modules/graphql-subscriptions/dist/pubsub-engine.d.ts","./node_modules/graphql-subscriptions/dist/pubsub.d.ts","./node_modules/graphql-subscriptions/dist/with-filter.d.ts","./node_modules/graphql-subscriptions/dist/index.d.ts","./src/graphql/types/course.type.ts","./src/graphql/types/user.type.ts","./src/graphql/resolvers/subscription.resolver.ts","./src/graphql/services/directive-validation.service.ts","./src/graphql/services/query-complexity.constants.ts","./src/graphql/services/schema-lint.service.ts","./src/graphql/types/index.ts","./src/interfaces/api-error.interface.ts","./src/learning-paths/services/milestone-tracking.service.ts","./src/learning-paths/services/skill-assessment.service.ts","./src/localization/localization.constants.ts","./src/localization/dto/bundle-query.dto.ts","./src/localization/dto/create-translation.dto.ts","./src/localization/dto/export-query.dto.ts","./src/localization/dto/import-translations.dto.ts","./src/localization/dto/list-translations-query.dto.ts","./src/localization/dto/update-translation.dto.ts","./src/localization/entities/translation.entity.ts","./src/media/dto/media.dto.ts","./src/media/processing/video-processing.service.ts","./src/media/validation/file-validation.constants.ts","./src/media/validation/upload-progress.service.ts","./src/media/validation/upload-validation.util.ts","./src/messaging/tracing/tracing.service.ts","./src/messaging/messaging.service.ts","./src/middleware/audit/user-action-tracker.ts","./src/middleware/audit/audit-logger.middleware.ts","./src/tenancy/entities/tenant.entity.ts","./src/tenancy/isolation/isolation.service.ts","./src/middleware/tenant/tenant.middleware.ts","./src/middleware/tenant/tenant-rls.subscriber.ts","./src/tenancy/decorators/requires-tenant.decorator.ts","./src/middleware/tenant/tenant-access-validation.guard.ts","./src/middleware/tenant/index.ts","./src/middleware/throttle/throttle.middleware.ts","./src/migrations/entities/migration.entity.ts","./src/moderation/analytics/moderation-event.entity.ts","./src/moderation/analytics/moderation-analytics.service.ts","./node_modules/@huggingface/tasks/dist/commonjs/pipelines.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/audio-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/automatic-speech-recognition/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/chat-completion/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/document-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/feature-extraction/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/fill-mask/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-text/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-segmentation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-text-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/image-text-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/object-detection/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/depth-estimation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/sentence-similarity/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/summarization/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/table-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-image/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-video/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-to-speech/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/token-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/translation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/text-generation/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/video-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/visual-question-answering/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-image-classification/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/zero-shot-object-detection/inference.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tasks/index.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/widget-example.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/tokenizer-data.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-data.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-libraries-downloads.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/model-libraries.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/library-to-tasks.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/default-widget-inputs.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/gguf.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/common.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/types.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/inputs.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/snippets/index.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/hardware.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/local-apps.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/dataset-libraries.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/inference-providers.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/eval.d.ts","./node_modules/@huggingface/tasks/dist/commonjs/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/types.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/custom/request.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/custom/streamingrequest.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/utils.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/audioclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/audiotoaudio.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/automaticspeechrecognition.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/audio/texttospeech.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/utils.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imageclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagesegmentation.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetotext.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetexttoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/imagetexttovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/objectdetection.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/texttoimage.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/texttovideo.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/cv/zeroshotimageclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/chatcompletion.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/chatcompletionstream.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/featureextraction.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/fillmask.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/questionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/sentencesimilarity.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/summarization.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/tablequestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textgeneration.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/textgenerationstream.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/tokenclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/translation.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/nlp/zeroshotclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/multimodal/documentquestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/multimodal/visualquestionanswering.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/tabular/tabularclassification.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/tabular/tabularregression.d.ts","./node_modules/@huggingface/inference/dist/commonjs/tasks/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/inferenceclient.d.ts","./node_modules/@huggingface/inference/dist/commonjs/vendor/type-fest/basic.d.ts","./node_modules/@huggingface/inference/dist/commonjs/errors.d.ts","./node_modules/@huggingface/inference/dist/commonjs/snippets/getinferencesnippets.d.ts","./node_modules/@huggingface/inference/dist/commonjs/snippets/index.d.ts","./node_modules/@huggingface/inference/dist/commonjs/providers/providerhelper.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/getproviderhelper.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/makerequestoptions.d.ts","./node_modules/@huggingface/inference/dist/commonjs/lib/logger.d.ts","./node_modules/@huggingface/inference/dist/commonjs/index.d.ts","./src/moderation/auto/auto-moderation.service.ts","./src/moderation/manual/review-item.entity.ts","./src/moderation/manual/manual-review.service.ts","./src/moderation/safety/content-safety.service.ts","./src/monitoring/cost-tracking.service.ts","./src/monitoring/cost-scheduler.service.ts","./node_modules/@types/nodemailer/lib/dkim/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","./node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","./node_modules/@types/nodemailer/lib/mailer/index.d.ts","./node_modules/@types/nodemailer/lib/mime-node/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","./node_modules/@types/nodemailer/lib/shared/index.d.ts","./node_modules/@types/nodemailer/lib/json-transport/index.d.ts","./node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","./node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","./node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","./node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","./node_modules/@types/nodemailer/index.d.ts","./node_modules/axios/index.d.ts","./src/monitoring/alerting/alerting.service.ts","./src/monitoring/cloud/aws-cost-collector.service.ts","./src/monitoring/dto/create-cost.dto.ts","./node_modules/@smithy/types/dist-types/abort-handler.d.ts","./node_modules/@smithy/types/dist-types/abort.d.ts","./node_modules/@smithy/types/dist-types/auth/auth.d.ts","./node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","./node_modules/@smithy/types/dist-types/identity/identity.d.ts","./node_modules/@smithy/types/dist-types/response.d.ts","./node_modules/@smithy/types/dist-types/command.d.ts","./node_modules/@smithy/types/dist-types/endpoint.d.ts","./node_modules/@smithy/types/dist-types/feature-ids.d.ts","./node_modules/@smithy/types/dist-types/logger.d.ts","./node_modules/@smithy/types/dist-types/uri.d.ts","./node_modules/@smithy/types/dist-types/http.d.ts","./node_modules/@smithy/types/dist-types/util.d.ts","./node_modules/@smithy/types/dist-types/middleware.d.ts","./node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","./node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","./node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","./node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@smithy/types/dist-types/auth/index.d.ts","./node_modules/@smithy/types/dist-types/transform/exact.d.ts","./node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","./node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","./node_modules/@smithy/types/dist-types/crypto.d.ts","./node_modules/@smithy/types/dist-types/checksum.d.ts","./node_modules/@smithy/types/dist-types/client.d.ts","./node_modules/@smithy/types/dist-types/connection/config.d.ts","./node_modules/@smithy/types/dist-types/transfer.d.ts","./node_modules/@smithy/types/dist-types/connection/manager.d.ts","./node_modules/@smithy/types/dist-types/connection/pool.d.ts","./node_modules/@smithy/types/dist-types/connection/index.d.ts","./node_modules/@smithy/types/dist-types/eventstream.d.ts","./node_modules/@smithy/types/dist-types/encode.d.ts","./node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","./node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","./node_modules/@smithy/types/dist-types/endpoints/index.d.ts","./node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","./node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","./node_modules/@smithy/types/dist-types/shapes.d.ts","./node_modules/@smithy/types/dist-types/retry.d.ts","./node_modules/@smithy/types/dist-types/extensions/retry.d.ts","./node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/@smithy/types/dist-types/extensions/index.d.ts","./node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","./node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","./node_modules/@smithy/types/dist-types/identity/index.d.ts","./node_modules/@smithy/types/dist-types/pagination.d.ts","./node_modules/@smithy/types/dist-types/profile.d.ts","./node_modules/@smithy/types/dist-types/serde.d.ts","./node_modules/@smithy/types/dist-types/schema/sentinels.d.ts","./node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts","./node_modules/@smithy/types/dist-types/schema/traits.d.ts","./node_modules/@smithy/types/dist-types/schema/schema.d.ts","./node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts","./node_modules/@smithy/types/dist-types/signature.d.ts","./node_modules/@smithy/types/dist-types/stream.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","./node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","./node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","./node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","./node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","./node_modules/@smithy/types/dist-types/transform/mutable.d.ts","./node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","./node_modules/@smithy/types/dist-types/waiter.d.ts","./node_modules/@smithy/types/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts","./node_modules/@aws-sdk/types/dist-types/abort.d.ts","./node_modules/@aws-sdk/types/dist-types/auth.d.ts","./node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts","./node_modules/@aws-sdk/types/dist-types/checksum.d.ts","./node_modules/@aws-sdk/types/dist-types/client.d.ts","./node_modules/@aws-sdk/types/dist-types/command.d.ts","./node_modules/@aws-sdk/types/dist-types/connection.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/identity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/anonymousidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/loginidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/tokenidentity.d.ts","./node_modules/@aws-sdk/types/dist-types/identity/index.d.ts","./node_modules/@aws-sdk/types/dist-types/util.d.ts","./node_modules/@aws-sdk/types/dist-types/credentials.d.ts","./node_modules/@aws-sdk/types/dist-types/crypto.d.ts","./node_modules/@aws-sdk/types/dist-types/dns.d.ts","./node_modules/@aws-sdk/types/dist-types/encode.d.ts","./node_modules/@aws-sdk/types/dist-types/endpoint.d.ts","./node_modules/@aws-sdk/types/dist-types/eventstream.d.ts","./node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts","./node_modules/@aws-sdk/types/dist-types/function.d.ts","./node_modules/@aws-sdk/types/dist-types/http.d.ts","./node_modules/@aws-sdk/types/dist-types/logger.d.ts","./node_modules/@aws-sdk/types/dist-types/middleware.d.ts","./node_modules/@aws-sdk/types/dist-types/pagination.d.ts","./node_modules/@aws-sdk/types/dist-types/profile.d.ts","./node_modules/@aws-sdk/types/dist-types/request.d.ts","./node_modules/@aws-sdk/types/dist-types/response.d.ts","./node_modules/@aws-sdk/types/dist-types/retry.d.ts","./node_modules/@aws-sdk/types/dist-types/serde.d.ts","./node_modules/@aws-sdk/types/dist-types/shapes.d.ts","./node_modules/@aws-sdk/types/dist-types/signature.d.ts","./node_modules/@aws-sdk/types/dist-types/stream.d.ts","./node_modules/@aws-sdk/types/dist-types/token.d.ts","./node_modules/@aws-sdk/types/dist-types/transfer.d.ts","./node_modules/@aws-sdk/types/dist-types/uri.d.ts","./node_modules/@aws-sdk/types/dist-types/waiter.d.ts","./node_modules/@aws-sdk/types/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/queue-url.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/configurations.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/receive-message.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/send-message.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/send-message-batch.d.ts","./node_modules/@aws-sdk/middleware-sdk-sqs/dist-types/index.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts","./node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromenv.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/gethomedir.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getprofilename.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfilepath.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfromfile.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/loadsharedconfigfiles.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/loadssosessiondata.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/parseknownfiles.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/externaldatainterceptor.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/readfile.d.ts","./node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromsharedconfigfiles.d.ts","./node_modules/@smithy/node-config-provider/dist-types/fromstatic.d.ts","./node_modules/@smithy/node-config-provider/dist-types/configloader.d.ts","./node_modules/@smithy/node-config-provider/dist-types/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusedualstackendpointconfigoptions.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusefipsendpointconfigoptions.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolveendpointsconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolvecustomendpointsconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/endpointsconfig/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/config.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/resolveregionconfig.d.ts","./node_modules/@smithy/config-resolver/dist-types/regionconfig/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvarianttag.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvariant.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/partitionhash.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/regionhash.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/getregioninfo.d.ts","./node_modules/@smithy/config-resolver/dist-types/regioninfo/index.d.ts","./node_modules/@smithy/config-resolver/dist-types/index.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointconfig.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getendpointfrominstructions.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toendpointv1.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/endpointmiddleware.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/getendpointplugin.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointrequiredconfig.d.ts","./node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts","./node_modules/@smithy/util-retry/dist-types/standardretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/types.d.ts","./node_modules/@smithy/util-retry/dist-types/adaptiveretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/configuredretrystrategy.d.ts","./node_modules/@smithy/util-retry/dist-types/defaultratelimiter.d.ts","./node_modules/@smithy/util-retry/dist-types/config.d.ts","./node_modules/@smithy/util-retry/dist-types/constants.d.ts","./node_modules/@smithy/util-retry/dist-types/retries-2026-config.d.ts","./node_modules/@smithy/util-retry/dist-types/index.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/types.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/standardretrystrategy.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/adaptiveretrystrategy.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/delaydecider.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retry-pre-sra-deprecated/retrydecider.d.ts","./node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts","./node_modules/@smithy/middleware-retry/dist-types/omitretryheadersmiddleware.d.ts","./node_modules/@smithy/middleware-retry/dist-types/retrymiddleware.d.ts","./node_modules/@smithy/middleware-retry/dist-types/parseretryafterheader.d.ts","./node_modules/@smithy/middleware-retry/dist-types/index.d.ts","./node_modules/@smithy/protocol-http/dist-types/httprequest.d.ts","./node_modules/@smithy/protocol-http/dist-types/httpresponse.d.ts","./node_modules/@smithy/protocol-http/dist-types/httphandler.d.ts","./node_modules/@smithy/protocol-http/dist-types/extensions/httpextensionconfiguration.d.ts","./node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts","./node_modules/@smithy/protocol-http/dist-types/field.d.ts","./node_modules/@smithy/protocol-http/dist-types/fields.d.ts","./node_modules/@smithy/protocol-http/dist-types/isvalidhostname.d.ts","./node_modules/@smithy/protocol-http/dist-types/types.d.ts","./node_modules/@smithy/protocol-http/dist-types/index.d.ts","./node_modules/@smithy/smithy-client/dist-types/client.d.ts","./node_modules/@smithy/util-stream/dist-types/blob/uint8arrayblobadapter.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.browser.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.browser.d.ts","./node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.d.ts","./node_modules/@smithy/util-stream/dist-types/createbufferedreadable.d.ts","./node_modules/@smithy/util-stream/dist-types/getawschunkedencodingstream.d.ts","./node_modules/@smithy/util-stream/dist-types/headstream.d.ts","./node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts","./node_modules/@smithy/util-stream/dist-types/splitstream.d.ts","./node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts","./node_modules/@smithy/util-stream/dist-types/index.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/middleware/getschemaserdeplugin.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/schema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/listschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/mapschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/operationschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/structureschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/errorschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/normalizedschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/simpleschema.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/schemas/translatetraits.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/typeregistry.d.ts","./node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts","./node_modules/@smithy/core/schema.d.ts","./node_modules/@smithy/core/dist-types/submodules/event-streams/eventstreamserde.d.ts","./node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts","./node_modules/@smithy/core/event-streams.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serdecontext.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/httpprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/httpbindingprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/rpcprotocol.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/requestbuilder.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/fromstringshapedeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapedeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/tostringshapeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapeserializer.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/serde/determinetimestampformat.d.ts","./node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts","./node_modules/@smithy/core/protocols.d.ts","./node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts","./node_modules/@smithy/smithy-client/dist-types/command.d.ts","./node_modules/@smithy/smithy-client/dist-types/constants.d.ts","./node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts","./node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts","./node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts","./node_modules/@smithy/smithy-client/dist-types/emitwarningifunsupportedversion.d.ts","./node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts","./node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts","./node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts","./node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts","./node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts","./node_modules/@smithy/smithy-client/dist-types/nooplogger.d.ts","./node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts","./node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts","./node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts","./node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/copydocumentwithtransform.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts","./node_modules/@smithy/uuid/dist-types/v4.d.ts","./node_modules/@smithy/uuid/dist-types/index.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/generateidempotencytoken.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/value/numericvalue.d.ts","./node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts","./node_modules/@smithy/core/serde.d.ts","./node_modules/@smithy/smithy-client/dist-types/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4aconfig.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4signer.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4asigner.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/node_auth_scheme_preference_options.d.ts","./node_modules/@smithy/signature-v4/dist-types/signaturev4base.d.ts","./node_modules/@smithy/signature-v4/dist-types/signaturev4.d.ts","./node_modules/@smithy/signature-v4/dist-types/constants.d.ts","./node_modules/@smithy/signature-v4/dist-types/getcanonicalheaders.d.ts","./node_modules/@smithy/signature-v4/dist-types/getcanonicalquery.d.ts","./node_modules/@smithy/signature-v4/dist-types/getpayloadhash.d.ts","./node_modules/@smithy/signature-v4/dist-types/moveheaderstoquery.d.ts","./node_modules/@smithy/signature-v4/dist-types/preparerequest.d.ts","./node_modules/@smithy/signature-v4/dist-types/credentialderivation.d.ts","./node_modules/@smithy/signature-v4/dist-types/headerutil.d.ts","./node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts","./node_modules/@smithy/signature-v4/dist-types/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4config.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/index.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/utils/getbearertokenenvkey.d.ts","./node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/index.d.ts","./node_modules/@aws-sdk/core/httpauthschemes.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/addpermissioncommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/cancelmessagemovetaskcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/changemessagevisibilitybatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/changemessagevisibilitycommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/createqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletemessagebatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletemessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/deletequeuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/getqueueattributescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/getqueueurlcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listdeadlettersourcequeuescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listmessagemovetaskscommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listqueuescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/listqueuetagscommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/purgequeuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/receivemessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/removepermissioncommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/sendmessagebatchcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/sendmessagecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/setqueueattributescommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/startmessagemovetaskcommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/tagqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/untagqueuecommand.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/sqsclient.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/sqs.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/listdeadlettersourcequeuespaginator.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/listqueuespaginator.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/sqsserviceexception.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-sqs/dist-types/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/addpermissioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/checkifphonenumberisoptedoutcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/confirmsubscriptioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createplatformendpointcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createsmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/createtopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deleteendpointcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deleteplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deletesmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/deletetopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getdataprotectionpolicycommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getendpointattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getplatformapplicationattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsmsattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsmssandboxaccountstatuscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/getsubscriptionattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/gettopicattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listendpointsbyplatformapplicationcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listoriginationnumberscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listphonenumbersoptedoutcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listplatformapplicationscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsmssandboxphonenumberscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsubscriptionsbytopiccommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listsubscriptionscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listtagsforresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/listtopicscommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/optinphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/publishbatchcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/publishcommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/putdataprotectionpolicycommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/removepermissioncommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setendpointattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setplatformapplicationattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setsmsattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/setsubscriptionattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/settopicattributescommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/subscribecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/tagresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/unsubscribecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/untagresourcecommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/verifysmssandboxphonenumbercommand.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/snsclient.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/sns.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listendpointsbyplatformapplicationpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listoriginationnumberspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listphonenumbersoptedoutpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listplatformapplicationspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsmssandboxphonenumberspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsubscriptionspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listsubscriptionsbytopicpaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/listtopicspaginator.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/snsserviceexception.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-sns/dist-types/index.d.ts","./src/notifications/entities/notification.entity.ts","./src/notifications/notifications.queue.ts","./src/notifications/dto/notification.dto.ts","./src/notifications/entities/notification-preferences.entity.ts","./src/notifications/preferences/preferences.service.ts","./src/observability/interfaces/observability.interfaces.ts","./node_modules/uuid/dist/max.d.ts","./node_modules/uuid/dist/nil.d.ts","./node_modules/uuid/dist/types.d.ts","./node_modules/uuid/dist/parse.d.ts","./node_modules/uuid/dist/stringify.d.ts","./node_modules/uuid/dist/v1.d.ts","./node_modules/uuid/dist/v1tov6.d.ts","./node_modules/uuid/dist/v35.d.ts","./node_modules/uuid/dist/v3.d.ts","./node_modules/uuid/dist/v4.d.ts","./node_modules/uuid/dist/v5.d.ts","./node_modules/uuid/dist/v6.d.ts","./node_modules/uuid/dist/v6tov1.d.ts","./node_modules/uuid/dist/v7.d.ts","./node_modules/uuid/dist/validate.d.ts","./node_modules/uuid/dist/version.d.ts","./node_modules/uuid/dist/index.d.ts","./src/observability/logging/structured-logger.service.ts","./src/onboarding/dto/onboarding-progress.dto.ts","./src/onboarding/entities/onboarding-reward.entity.ts","./src/onboarding/dto/onboarding-reward.dto.ts","./src/onboarding/entities/onboarding-step.entity.ts","./src/onboarding/dto/onboarding-step.dto.ts","./src/onboarding/entities/user-onboarding-progress.entity.ts","./src/orchestration/discovery/service-boundaries.ts","./src/orchestration/discovery/service-discovery.service.ts","./src/orchestration/locks/distributed-lock.service.ts","./src/payments/entities/payment.entity.ts","./src/payments/dto/create-payment.dto.ts","./src/payments/entities/subscription.entity.ts","./src/payments/dto/create-subscription.dto.ts","./src/payments/entities/refund.entity.ts","./src/payments/dto/refund.dto.ts","./node_modules/@nestjs/mapped-types/dist/mapped-type.interface.d.ts","./node_modules/@nestjs/mapped-types/dist/types/remove-fields-with-type.type.d.ts","./node_modules/@nestjs/mapped-types/dist/intersection-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/omit-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/partial-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/pick-type.helper.d.ts","./node_modules/@nestjs/mapped-types/dist/type-helpers.utils.d.ts","./node_modules/@nestjs/mapped-types/dist/index.d.ts","./node_modules/@nestjs/mapped-types/index.d.ts","./src/payments/dto/update-payment.dto.ts","./src/payments/entities/invoice.entity.ts","./src/payments/providers/payment-provider.interface.ts","./src/payments/subscriptions/subscription-job.processor.ts","./src/payments/subscriptions/subscriptions.service.ts","./src/payments/webhooks/migration-helper.ts","./src/payments/webhooks/webhook-security.service.ts","./src/payments/webhooks/stripe-webhook.guard.ts","./src/payments/webhooks/entities/webhook-retry.entity.ts","./src/payments/webhooks/dto/webhook-retry.dto.ts","./src/queues/queues.constants.ts","./src/queues/enums/job-priority.enum.ts","./src/queues/dto/queue.dto.ts","./src/queues/interfaces/queue.interfaces.ts","./src/queues/prioritization/prioritization.service.ts","./src/rate-limiting/index.ts","./src/rate-limiting/dto/create-rate-limiting.dto.ts","./src/rate-limiting/dto/update-rate-limiting.dto.ts","./src/rate-limiting/entities/rate-limiting.entity.ts","./src/search/elasticsearch/elasticsearch.service.ts","./src/security/security.service.ts","./src/security/encryption/encryption.service.ts","./src/security/threats/threat-detection.service.ts","./src/security/compliance/compliance.service.ts","./src/security/audit/audit-logging.service.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/enums.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/models_0.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/batchgetsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/cancelrotatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/createsecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/deleteresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/deletesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/describesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getrandompasswordcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/getsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/listsecretscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/listsecretversionidscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/putresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/putsecretvaluecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/removeregionsfromreplicationcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/replicatesecrettoregionscommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/restoresecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/rotatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/stopreplicationtoreplicacommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/tagresourcecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/untagresourcecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/updatesecretcommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/updatesecretversionstagecommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/validateresourcepolicycommand.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/endpoint/endpointparameters.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/extensionconfiguration.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeextensions.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/secretsmanagerclient.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/secretsmanager.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/index.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/schemas/schemas_0.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/interfaces.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/batchgetsecretvaluepaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/listsecretspaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/listsecretversionidspaginator.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/pagination/index.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/secretsmanagerserviceexception.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/models/errors.d.ts","./node_modules/@aws-sdk/client-secrets-manager/dist-types/index.d.ts","./src/security/secrets/secrets-manager.service.ts","./src/security/secrets/vault-secrets.service.ts","./src/security/secrets/secrets.controller.ts","./src/security/secrets/secrets.module.ts","./src/security/security.module.ts","./src/session/session.service.ts","./src/session/session.module.ts","./src/sync/conflicts/conflict-resolution.service.ts","./src/sync/consistency/data-consistency.service.ts","./node_modules/@nestjs/cache-manager/dist/cache.constants.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/cache-manager.interface.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/cache-module.interface.d.ts","./node_modules/@nestjs/cache-manager/dist/cache.module-definition.d.ts","./node_modules/@nestjs/cache-manager/dist/cache.module.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/cache-key.decorator.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/cache-ttl.decorator.d.ts","./node_modules/@nestjs/cache-manager/dist/decorators/index.d.ts","./node_modules/@nestjs/cache-manager/dist/interceptors/cache.interceptor.d.ts","./node_modules/@nestjs/cache-manager/dist/interceptors/index.d.ts","./node_modules/@nestjs/cache-manager/dist/interfaces/index.d.ts","./node_modules/@nestjs/cache-manager/dist/index.d.ts","./node_modules/@nestjs/cache-manager/index.d.ts","./src/sync/cache/cache-invalidation.service.ts","./src/sync/replication/replication.service.ts","./src/sync/sync.service.ts","./src/sync/sync.module.ts","./src/tenancy/tenancy.constants.ts","./src/tenancy/entities/tenant-config.entity.ts","./src/tenancy/entities/tenant-billing.entity.ts","./src/tenancy/entities/tenant-customization.entity.ts","./src/tenancy/dto/tenant.dto.ts","./src/tenancy/billing/tenant-billing.service.ts","./src/tenancy/customization/customization.service.ts","./src/tenancy/tenancy.service.ts","./src/tenancy/admin/tenant-admin.service.ts","./src/tenancy/tenancy.controller.ts","./src/tenancy/tenancy.guard.ts","./src/tenancy/guards/tenant.guard.ts","./src/tenancy/tenancy.module.ts","./src/tenancy/decorators/current-tenant.decorator.ts","./src/users/user.constants.ts","./src/users/dto/get-users.dto.ts","./src/utils/masking/field-masking.util.ts","./src/utils/masking/role-visibility.util.ts","./src/utils/masking/masking-audit.service.ts","./src/utils/masking/mask-fields.decorator.ts","./src/utils/masking/masking.interceptor.ts","./src/utils/masking/index.ts","./src/workers/interfaces/worker.interfaces.ts","./src/workers/base/base.worker.ts","./src/workers/processors/email.worker.ts","./src/workers/processors/media-processing.worker.ts","./src/workers/processors/data-sync.worker.ts","./src/workers/processors/backup-processing.worker.ts","./src/workers/processors/webhooks.worker.ts","./src/workers/processors/subscriptions.worker.ts","./src/workers/processors/index.ts","./src/workers/orchestration/worker-orchestration.service.ts","./src/workers/health/worker-health-check.service.ts","./src/workers/workers.module.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695",{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","c91d3f9753a311284e76cdcb348cbb50bca98733336ec726b54d77b7361b34de","cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","cf25d45c02d5fd5d7adb16230a0e1d6715441eef5c0a79a21bfeaa9bbc058939","54c3822eaf6436f2eddc92dd6e410750465aba218adbf8ce5d488d773919ec01","99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","8b8b92781a6bf150f9ee83f3d8ee278b6cdb98b8308c7ab3413684fc5d9078ef","7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","689390db63cb282e6d0e5ce9b8f1ec2ec0912d0e2e6dac7235699a15ad17d339","f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","d928324d17146fce30b99a28d1d6b48648feac72bbd23641d3ce5ac34aefdfee","142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","c33a88f2578e8df2fdf36c6a0482bbee615eb3234c8f084ba31a9a96bd306b7f","22cca068109eb0e6b4f8acc3fe638d1e6ac277e2044246438763319792b546a1","8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","66cd33c4151ea27f6e17c6071652eadde9da1b3637dae65fd060212211c695ce","5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","53b094f1afe442490555eeeb0384fc1ceb487560c83e31f9c64fb934c2dccd94","19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","91bf47a209ad0eae090023c3ebc1165a491cf9758799368ffcbee8dbe7448f33","0abe2cd72812bbfc509975860277c7cd6f6e0be95d765a9da77fee98264a7e32","13286c0c8524606b17a8d68650970bab896fb505f348f71601abf0f2296e8913","fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","f61963dc02ef27c48fb0e0016a413b1e00bcb8b97a3f5d4473cedc7b44c8dc77","272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","2b82adc9eead34b824a3f4dad315203fbfa56bee0061ccf9b485820606564f70","eb47aaa5e1b0a69388bb48422a991b9364a9c206a97983e0227289a9e1fca178","d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","db2108aea36e7faa83c38f6fe8225b9ad40835c0cba7fa38e969768299b83173","3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","2ad163aaddfa29231a021de6838f59378a210501634f125ed04cfa7d066ffc53","6305acbe492b9882ec940f8f0c8e5d1e1395258852f99328efcb1cf1683ca817","7619b1f6087a4e9336b2c42bd784b05aa4a2204a364b60171e5a628f817a381e","15be9120572c9fbcd3c267bd93b4140354514c9e70734e6fcca65ff4a246f83a","412482ab85893cec1d6f26231359474d1f59f6339e2743c08da1b05fc1d12767","858e2315e58af0d28fcd7f141a2505aba6a76fd10378ba0ad169b0336fee33fc","02da6c1b34f4ae2120d70cf5f9268bf1aedf62e55529d34f5974f5a93655ce38","3ecf179ef1cc28f7f9b46c8d2e496d50b542c176e94ed0147bab147b4a961cd6","b145da03ce7e174af5ced2cbbd16e96d3d5c2212f9a90d3657b63a5650a73b7f","c7aadab66a2bc90eeb0ab145ca4daebcbc038e24359263de3b40e7b1c7affba6","99518dc06286877a7b716e0f22c1a72d3c62be42701324b49f27bcc03573efff","f4575fd196a7e33c7be9773a71bcc5fbe7182a2152be909f6b8e8e7ba2438f06","05cba5acd77a4384389b9c62739104b5a1693efd66e6abac6c5ffc53280ae777","acacda82ebd929fe2fe9e31a37f193fc8498a7393a1c31dc5ceb656e2b45b708","1b13e7c5c58ab894fe65b099b6d19bb8afae6d04252db1bf55fe6ba95a0af954","4355d326c3129e5853b56267903f294ad03e34cc28b75f96b80734882dedac80","37139a8d45342c05b6a5aa1698a2e8e882d6dca5fb9a77aa91f05ac04e92e70b","e37191297f1234d3ae54edbf174489f9a3091a05fe959724db36f8e58d21fb17","3fca8fb3aab1bc7abb9b1420f517e9012fdddcbe18803bea2dd48fad6c45e92e","d0b0779e0cac4809a9a3c764ba3bd68314de758765a8e3b9291fe1671bfeb8a1","d2116b5f989aa68e585ae261b9d6d836be6ed1be0b55b47336d9f3db34674e86","d79a227dd654be16d8006eac8b67212679d1df494dfe6da22ea0bd34a13e010c","b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","44a298a6c52a7dab8e970e95a6dabe20972a7c31c340842e0dc57f2c822826eb","6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","00b9ff040025f6b00e0f4ac8305fea1809975b325af31541bd9d69fa3b5e57b1","9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","54d91053dc6a2936bfd01a130cc3b524e11aa0349da082e8ac03a8bf44250338","89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","24abac81e9c60089a126704e936192b2309413b40a53d9da68dadd1dd107684e","f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","090fda1107e7d4f8f30a2b341834ed949f01737b5ec6021bb6981f8907330bdb","cc32874a27100c32e3706d347eb4f435d6dd5c0d83e547c157352f977bbc6385","e45b069d58c9ac341d371b8bc3db4fa7351b9eee1731bffd651cfc1eb622f844","7f3c74caad25bfb6dfbf78c6fe194efcf8f79d1703d785fc05cd606fe0270525","54f3f7ff36384ca5c9e1627118b43df3014b7e0f62c9722619d19cdb7e43d608","2f346f1233bae487f1f9a11025fc73a1bf9093ee47980a9f4a75b84ea0bb7021","013444d0b8c1f7b5115462c31573a699fee7458381b0611062a0069d3ef810e8","0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","8c4df93dafcf06adc42a63477cc38b352565a3ed0a19dd8ef7dfacc253749327","22a35275abc67f8aba44efc52b2f4b1abc2c94e183d36647fdab5a5e7c1bdf23","99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","6ecc423e71318bafbd230e6059e082c377170dfc7e02fccfa600586f8604d452","772f9bdd2bf50c9c01b0506001545e9b878faa7394ad6e7d90b49b179a024584","f204b03cb07517d71715ac8bc7552542bfab395adb53e31c07fbc67de6856de1","7467736a77548887faa90a7d0e074459810a5db4bbc6de302a2be6c05287ccae","39504a2c1278ee4d0dc1a34e27c80e58b4c53c08c87e3a7fc924f18c936bebb5","cd1ccdd9fd7980d43dfede5d42ee3d18064baed98b136089cf7c8221d562f058","d60f9a4fd1e734e7b79517f02622426ea1000deb7d6549dfdece043353691a4e","403d28b5e5f8fcff795ac038902033ec5890143e950af45bd91a3ed231e8b59c","c73b59f91088c00886d44ca296d53a75c263c3bda31e3b2f37ceb137382282be","e7aa2c584edb0970cb4bb01eb10344200286055f9a22bc3dadcc5a1f9199af3e","bfeb476eb0049185cb94c2bfcadb3ce1190554bbcf170d2bf7c68ed9bb00458e","ae23a65a2b664ffe979b0a2a98842e10bdf3af67a356f14bbc9d77eb3ab13585","eccf6ad2a8624329653896e8dbd03f30756cbd902a81b5d3942d6cf0e1a21575","1930c964051c04b4b5475702613cd5a27fcc2d33057aa946ff52bfca990dbc84","2793d525d79404df346e4ef58a82f9b6d28a7650beeb17378cd121c45ba03f02","62463aa3d299ae0cdc5473d2ac32213a05753c3adce87a8801c6d2b114a64116","c9c2eabaad71c534d7de16385977f95184fdf3ddd0339dadbd5d599488d94f90","d0642c453e6af4c0700182bec4afc5b2cc9498fe27c9b1bcf2e6f75dd1892699","8f4469dd750d15f72ba66876c8bc429d3c9ce49599a13f868a427d6681d45351","d1e888a33faeb1f0e3c558bbe0ea4a55056318e0b2f8eba72ffd6729c3bbff4e","f689c0633e8c95f550d36af943d775f3fae3dac81a28714b45c7af0bbb76a980","fef736cfb404b4db9aa942f377dbbac6edb76d18aabd3b647713fa75da8939e9","45659c92e49dfca4601acc7e57fbb03a71513c69768984baf86ead8d20387a01","0239d8f6a3f51b26cbdbb9362f4fde35651c6bd0ff3d9fc09ee4a2da6065cb4e","6e5ab399ec7bd61d4f86421cc6074fd904379c3923706c899d15146e4f9a08c8","c9ffec02582eed74f518ae3e32a5dcf4ac835532e548300c5c5f950cdfeead5f","df343f5de08f5b607a3c7954ff1b512b7fa983d561e136cce0b6dc6849602a15","8fc97ef271771dc6f81a9c846d007ac4f0cb5779e3f441c1de54dfda5046fe7b","b5a060e2a4c54695076f871ddc0c91a0ff8eea1262177c4ede5593acbf1ca3bb","08ee70765d3fa7c5bad4afbbe1c542771e17f84bfd5e3e872ae1fdc5160836c8","1c225a18846203fafc4334658715b0d3fd3ee842c4cfd42e628a535eda17730d","7ce93da38595d1caf57452d57e0733474564c2b290459d34f6e9dcf66e2d8beb","d7b672c1c583e9e34ff6df2549d6a55d7ca3adaf72e6a05081ea9ee625dac59f","f3a2902e84ebdef6525ed6bf116387a1256ea9ae8eeb36c22f070b7c9ea4cf09","33bb0d96cea9782d701332e6b7390f8efae3af92fd3e2aa2ac45e4a610e705d6","ae3e98448468e46474d817b5ebe74db11ab22c2feb60e292d96ce1a4ee963623","f0a2fdee9e801ac9320a8660dd6b8a930bf8c5b658d390ae0feafdba8b633688","7beb7f04f6186bdac5e622d44e4cac38d9f2b9fcad984b10d3762e369524dd77","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"d620cfb1f05af1a0ffd9060524a34d0f0a6d4edc88b250f3394d49f4a98ad4f4","signature":"565025a258513a0a6698f77251afd7e3892cab0dcba318156aa13b78ab614d45"},{"version":"d9cd172a0838a228de72b9ced51ba9a74e5566f9925fbbf780492991ced09116","signature":"c42273173f37a6e5424abfbfc1db2fab37a3fbe9e2988b279c39d8000660196a"},{"version":"d967b56732c3527014a5ac1f997f473c344c5929b982e2e07d92521ccaff04d8","signature":"27275ad23e0984dd3d53602bd484d1c282b9edda865baa700f72259f32228580"},"b8ad793dc17938bc462812e3522bbd3d62519d91d9b4a6422bed1383c2d3eb42","8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","6c6bd91368169cfa94b4f8cc64ebca2b050685ec76bc4082c44ce125b5530cca","f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","272af80940fcc0c8325e4a04322c50d11f8b8842f96ac66cbd440835e958dd14","1803e48a3ec919ccafbcafeef5e410776ca0644ae8c6c87beca4c92d8a964434","875c43c5409e197e72ee517cb1f8fd358406b4adf058dbdc1e50c8db93d68f26","8854713984b9588eac1cab69c9e2a6e1a33760d9a2d182169059991914dd8577","e333d487ca89f26eafb95ea4b59bea8ba26b357e9f2fd3728be81d999f9e8cf6","2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","c503be3ddb3990ab27ca20c6559d29b547d9f9413e05d2987dd7c4bcf52f3736","598b15f0ae9a73082631d14cb8297a1285150ca325dbce98fc29c4f0b7079443","8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","c94c1aa80687a277396307b80774ca540d0559c2f7ba340168c2637c82b1f766","ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","6f6bdb523e5162216efc36ebba4f1ef8e845f1a9e55f15387df8e85206448aee","aa2d6531a04d6379318d29891de396f61ccc171bfd2f8448cc1649c184becdf2","d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","ab710f1ee2866e473454a348cffd8d5486e3c07c255f214e19e59a4f17eece4d","db7ff3459e80382c61441ea9171f183252b6acc82957ecb6285fff4dca55c585","4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","2a899aef0c6c94cc3537fe93ec8047647e77a3f52ee7cacda95a8c956d3623fb","ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","6a52170a5e4600bbb47a94a1dd9522dca7348ce591d8cdbb7d4fe3e23bbea461","6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","16c144a21cd99926eeba1605aec9984439e91aa864d1c210e176ca668f5f586a","af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","fd4107bd5c899165a21ab93768904d5cfb3e98b952f91fbf5a12789a4c0744e6","deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","77165b117f552be305d3bc2ef83424ff1e67afb22bfabd14ebebb3468c21fcaa","128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","d8ec19be7d6d3950992c3418f3a4aa2bcad144252bd7c0891462b5879f436e4e","db37aa3208b48bdcbc27c0c1ae3d1b86c0d5159e65543e8ab79cbfb37b1f2f34","d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","2daf06d8e15cbca27baa6c106253b92dad96afd87af9996cf49a47103b97dc95","1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","8109e0580fc71dbefd6091b8825acf83209b6c07d3f54c33afeafab5e1f88844","d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","df29ade4994de2d9327a5f44a706bbe6103022a8f40316839afa38d3e078ee06","82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","d38f45cb868a830d130ac8b87d3f7e8caff4961a3a1feae055de5e538e20879a","4c30a5cb3097befb9704d16aa4670e64e39ea69c5964a1433b9ffd32e1a5a3a1","1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","7b3a5e25bf3c51af55cb2986b89949317aa0f6cbfb5317edd7d4037fa52219a9","3cd50f6a83629c0ec330fc482e587bfa96532d4c9ce85e6c3ddf9f52f63eee11","9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","dadfa5fd3d5c511ca6bfe240243b5cf2e0f87e44ea63e23c4b2fce253c0d4601","2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","dff93e0997c4e64ff29e9f70cad172c0b438c4f58c119f17a51c94d48164475a","fd1ddf926b323dfa439be49c1d41bbe233fe5656975a11183aeb3bf2addfa3bb","6dda11db28da6bcc7ff09242cd1866bdddd0ae91e2db3bea03ba66112399641a","ea4cd1e72af1aa49cf208b9cb4caf542437beb7a7a5b522f50a5f1b7480362ed","903a7d68a222d94da11a5a89449fdd5dd75d83cd95af34c0242e10b85ec33a93","e7fe2e7ed5c3a7beff60361632be19a8943e53466b7dd69c34f89faf473206d7","b4896cee83379e159f83021e262223354db79e439092e485611163e2082224ff","5243e79a643e41d9653011d6c66e95048fc0478eb8593dc079b70877a2e3990e",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true},"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a",{"version":"1456e80bd8a3870034d89f91bd7df12ac29acfb083e31c0bb1fb38ca7bf5fbc2","affectsGlobalScope":true},{"version":"a98aedd64ad81793f146d36d1611ed9ba61b8b49ff040f0d13a103ed626595d9","affectsGlobalScope":true},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true},"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107",{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true},"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f",{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true},"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c",{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true},"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a",{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true},"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45",{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true},"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","092c1137e31de289f3cc6a57fdccb3cca298d8a680d1e367d206d3318f1394a1","855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86",{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true},"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d",{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true},"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee",{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true},"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5",{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true},"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9",{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true},"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e",{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true},"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","0ea329e5eab6719ff83bcb97e8bd03f1faab4feb74704010783b881fc9d80f92","76e7352249c42b9d54fe1f9e1ebcef777da1cb2eb33038366af49469d433597b","88cb622dd0ec1ef860e5c27fa884e60d2eba5ae22c7907dff82c56a69bdd2c8a","eb234b3e285e8bc071bdddc1ec0460095e13ead6222d44b02c4e0869522f9ba3","c85114872760189e50fef131944427b0fb367f0cc0b6dce164bb427a6fd89381","5ad69b0d7e7bdbcd3adfdb6a3e306e935c9c2711b1c60493646504a2f991346e","a12a667efdeb03b529bd4ebb4032998ddd32743799f59f9f18b186f8e63a2cf1","cee7efa0ae4c58deab218d1df0d1bf84abfd5c356cff28bca1421489cba13a19","f9e034b1ae29825c00532e08ea852b0c72885c343ee48d2975db0a6481218ab3","1193f49cbb883f40326461fe379e58ffa4c18d15bf6d6a1974ad2894e4fb20f3","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","2e2bc02af7b535d267be8cecbc5831466dd71c5af294401821791b26cb363c47","986affe0f60331f20df7d708ee097056b0973d85422ec2ce754af19c1fa4e4b1","8f06c2807459f1958b297f4ad09c6612d7dbd7997c9ccfc6ea384f7538e0cea8","a7de30cd043d7299bfe9daaca3732b086e734341587c3e923b01f3fd74d31126","78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","3bf58923a1d27819745bdad52bca1bdced9fef12cc0c7f8a3fd5f4e0206b684a","8fc11f102df58f03d36fcbf0da3efa37c177f5f18f534c76179ceef0c3a672cd","e6935ab0f64a886e778c12a54ed6e9075ce7e7f44723ff0d52020a654b025a09","9829af7653a29f1b85d3dd688a6c6256087c0b737b85d84b630e7f93fd420faf","3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","03b419ce598d77fe4d1705c8281a797a908f57ce24a15d6174d7e7276d355a65","b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","9c15e2b87cd3d8b18881bcc7d72b2d1dc6d5fe078b674ae12c12c19ec09a6a1a","0de68916e23c1e3df800f9f61cdd7c506ceb0656fcbc245ee9974aad26786781","80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","ca476924dfa6120b807a14e0a8aea7b061b8bdaa7eecdb303d7957c769102e96","848fe622fac070f8af9255e5d63fe829e3da079cae30be48fb6deb5dbf2c27c6","f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","80fc027e10234b809a9a40086114a8154657dcb8478d58c85ef850592d352870","27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","94be5c5f8cf26bbf53554cba4b112e30134349b14f3c0fd0ede3b51ec25a7174","c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","7bd94408358caf1794ad24546ca0aa56f9be6be2d3245d0972fcb924b84a81fd","0e7c3660d1df392b6f6ae7fa697f0629ae4404e5b7bac05dd81136247aff32d5","b0b3636502dc0c50295f67747968f202f7b775eac5016329606d1bc2888d5dd9","f9ede7ea553dc197fd5d2604f62cda1be1aea50024ed73237d9e3144f0c93608","b1005ae67226fd9b7b65333d9a351917f517d421a0c63b7cde59bec3b8e3562f","c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","20efc25890a0b2f09e4d224afaaf84917baa77b1aee60d9dfd11ff8078d73f93","d00b48096854d711cee688e7ff1ca796c1bf0d27ca509633c2a98b85cc23d47d","30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","8be98ffc3c54fb40b220796b796388f8ade50c8ba813a811bffccf98006566d5","4e82eed3c1b5084132708ce030f8ec90b69e4b7bb844dcaacd808045ae24c0e2","eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","6da51da9b74383988b89e17298ceca510357f63830f78b40f72afe4d5a9cee3e","512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","f281f20b801830f2f94b2bc0b18aba01d4fb50c2f4a847ffcadff39de31c8b80","738ddac5ab5b61d70d3466f3906d6b3c83c8786e922c6e726a6597296181ae87","90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","dd3f42651cfa863ded8fa0b0608fb892b826e254a0a6cbc447388cb5e11bffd5","8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","e7b9673dcd3d1825dbd70ad1d1f848d68189afc302ecdafc6eb30cbe7bd420b5","15911b87a2ad4b65b30c445802d55fa6186c66068603113042e8c3dfa4a35e2a","a9dc7b8d06b1f69d219f61fa3f7ac621e6e3a8d5a430e800cd7d1a755cc058c3","f8c496656cb5fd737931b4d6c60bd72a97c48f37c07dcb74a593dd24ac3f684a","f2cf1d33c458ac091983e5dac1613f264d48a69b281e43c5b055321320082358","0fa43815d4b05eafe97c056dae73c313f23a9f00b559f1e942d042c7a04db93c","e769097e5ea39d2ed548eeb9c093e90f26dde167f95eb80fbdd4efb041778387","a02db6aabaa291a85cf52b0c3f02a75301b80be856db63d44af4feea2179f37b","e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","1f7eeb69504ad94d16f4731f707d2af879adc7487dc35b146e2d86825bb779b4","c1b5c480e4d38377c82f9f517c12014d3d4475c0e607c4845e0836e0e89bbf7d","1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","87fc4a324b9fa5c9b93a13b5ae1b55ea390929ec1b0450afebff9620921a9cc1","73c0b8df0e282e26a53820f53502847a043bd77a9cda78782207d5349842fba2","5c7391307b9a7c540d678f015d687c277269aa9171f441467e20bab15694db40","082aa8710bbf3d16b877e798341c69599fdd487b4dc34d374ab3e3ec6d46f690","acb9367f45f12526ea808d6da48ab77eee1ceb2b6fe47ab02bbcc7cce4c972b0","d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","79f4812dffe8f933c12c341d68eee731cb6dd7f2a4bb20097c411560c97a6263","c446e8f3bd5b16e121252e05ba7696524ca95ec3f819c12fb8c37e7836744769","23386bb0bcb20fcb367149f22f5c6468b53f1987e86fd25de875ffb769e4d241","3913806467307a4bd874b105ac3e79ac261ab986fbdce7f0feea26cbcee95765","a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","ef8ff23609cec5eb95e2beb98132ad90c0c5075415b50228b12f89ffaf981a4a","80bbc9365ca8398c69eae77cdf7284d07192a17dacf1904095ab4c89f4520a5d","174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","2c0de27d99a9331cfac8bc5c6bbd174e0593628bf3df268faa6c4188962a9549","1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","2660eb7dba5976c2dcbea02ec146b1f27109e7bee323392db584f8c78a6477dd","54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","10837df0382365c2544fb75cb9a8f6e481e68c64915362941b4ea4468fd0ef61","cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","9c3e59360437a3e2a22f7f1032559a4c24aba697365b62fb4816b7c8c66035b8","393446ab3f0dd3449ad6fd4c8abd0c82b711c514b9e8dfbf75222bbc48eb0cb6","ea02a962453ec628e886a6c5d0fc03bf4da9dfa38e1f8d42e65e07b2651edd85","5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","baa9fbd480342a1d5e3e11ba3629f2826d18d4a765f1f9693ab87bfb3ce54adb","cb2fea712720bb7951d7e5d63db8670bf4a400d3e0fb197bceb6ef44efe36ec3","1b4fcfc691980d63a730d47d5309d9f85cdddc18a4c83f6e3af20936d103e3ff","ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","637c0d7d8cedbc64a3c228c3fa6bef884746f7a16a631e7532f9828c9ac06b8a","9e665aea79b702fd612ffb7ac741e4160d35d8d696a789129ebcbaea003beb3d","c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","caf3f141f93cbf527ad18ecce326311d70342fe1e16ce93e5ce8d6bcdf02bd48","4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","51e3b73dea24e2a9638345fb7a2a7ef5d3aa2e7a285ad6bd446b45fab826def1","77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","624f5dbfd76f2d77f20ace318e8cb918608a296106e55587fb443ef3030c595d","e67053c6660baa8d7df56153e342ced270bdb49ff3bd8bdca4e990adb81e8ff7","e072f2c386e145358313c8696d5a038ed20ca0153ee3919be72e39ff9e13f258","84305a11183aa850013d937f50553cd69db80add9cbda9e41080d4b2648adcef","1cb0838371e8213ce116a1497bb86bcf01a11a755b77587980ee7cfb2d625ece","68b99bc266575c070d05dacff7e144aa2c66ccf18c40fd27a1f5fa262f37756c","c837869c5edba1b21a3e7846fe98ce039778a139340b9c357c079e9eae6329e3","10b322f5bc001bec9bf08513c978c120adb0abe3c82793b11bdaf75873426c05","51b4efdc8dc92bc6ae2c44d4edad265decad70e8577d5653fc7f85200cbf6c6e","c3fa40ac56aa2598d9133c90b115eeb39bbad56c6dfca350dc8435b8b107fe26","cc542183b68b048a8cf64eb6231b3d0852f7f4d0191d4637c9d1d4c3f44b83b5","4b954a3d432dca82c787c06d2f1cca0fe673a4b440c5e0195429bd1fe43b324a","c6fd975d319a70d6ba90bf38c34ac8efebe531214038fe561a27f89f2203f78e","a818204639081cf07d80885b88aff5120e5a4135211162f5e08cfc00ef3bf5b6","c194ca06da86829b836bb188dffc05543bbea3cbda797667c7a7cade2f907646","6df6afb0424a7c7581ee98a9333d30e893b943d0a4709b88f18c252ddc3101b4","59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","0b60cfcd94fa9bd9fa58176650c7e4c72f99b9d30a50d0b55aa08b510276af96","ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","6c6dcb49af3d72d823334f74a554b2f9917e3a59b3219934b7ae9e6b03a3e8b4","9628be9799a060a3f7fe2e1f08fab2b21cdd7e97a2bbc3ef2f0029be46e0d7da","3d24aec533fe2f035b0675ba1c0e55e8680a714fff2a517e0fb388279476701c","224e2edff4c1e67d9c5179aa70e31d0dc7dd4ea5a9e80ffde121df9e5254eef2","e324c3b2058f9525cf5c11915284f9dfdf7550c98f103429b271fe723c4f8e14","70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","643efb9d7747ee1dd50ff5bd4b7a87351157e55988c7d2f90ffbdf124f063931","788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","28318622690c91b6654e50dd8aacafa76abdbb329655933705d041a9c4b92eee","6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","6bd6933efe9d6263d9f1a534a28a8f88b1e4c331b95d85d39350cf02eca8dce0","658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","6bf893d1b824bde22ee5880c0c760c1dd0a5163c38d22311441a3341b6965d2d","579d9d3c25058b854a6f7cc6368a473efcaa0740f45db13cb508761d35fc0156","68705604f0666ba3862670153eb4f965c3079415e7ab30a35b3126e36277dc9e","28b415e70f9da0346545b7d2bcf361844a8e5778bd6b45bc1a2859f99700ff5b","a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","aec91730b9f4d83758b4a45596317d34d6ecdbe9330a44629f53af47641b96ee","2321197343254570a8d4c868572059bfdfb683cf9d4099b6d4694250dac69471","18a3be03c31356b60ea1090bcc905d99e4983ca911cc70b34ad0b9b4d4e050c3","9833a67663f960dc2d1908a19365ddde55c0651235596ac60d7078a9be6f6e56","2bcb8920601b80911430979b6db4a58a7908a31334e74e4e22b75c65edce3587","c3186dc74d62d0fb6fba29841ccbf995614992526c37fac5c082d0f28b351e54","2306daed18f7f59542a99857a678ef818058eefa30c2a556af123a1cf53889cd","b41ed9285a09710807ce2c423e038dfe538e46e9183c0c05aadc27bfb9ae256a","56b9f9de03f28eb5922750a213d3f47b21a4f00a48c7c9b89bf1733623873d3a","2bdd736078e445858cb1d9df809ff3a2f00445d78664dd70b6794fb2156bdd53","2653fb2893a65c610ec17d0e454e2b16726f16118425f0bc8a38c801943ef7f5","74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","73e8b003f39c7ce46d2811749dab1dd1b309235fd5c277bd672c30a98b5cf90f","4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","8329556a2e85e3c3ff3dff43141790ff624b0f5138cedec5bb793164cf8b088f","4c889ce7e61ca7f3b7733e0d2be80b3af373e080c922e04639aa25f22963ae63","2239a8cd90c48e0b5c075e51099e7e3b4fc3d4741e4d9cc4410d2544d4216946","f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","0c792fe4e5f383b4f085a0033553fb84ed9322b7923fd59d4575aa43135e050d","228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","30c55a7b27d7ca12fde97c9e1fbacb6a9f452cd08d6a2d94b66cbf49eb58e713","fe139b63d2b8f05f95abd61e1fa81becd4fa0cf18c18e5c9c6b1e91ec5683382","c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","9d3bd4ee558de42e9d8434f7293b404c4b7a09b344e77c36bbe959696328d594","f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","1ff7a67731e575e9f31837883ddfc6bfcef4a09630267e433bc5aea65ad2ced4","0c4f6b6eb73b0fa4d27ce6eef6c2f1e7bd93d953b941e486b55d5d4b22883350","af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","782f2628a998fd03f4ccbe9884da532b8c9be645077556e235149ca9e6bd8c7d","269b7db8b769d5677f8d5d219e74ea2390b72ea2c65676b307e172e8f605a74a","ae731d469fae328ba73d6928e4466b72e3966f92f14cd1a711f9a489c6f93839","90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","3e8240b75f97eb4495679f6031fb02ad889a43017cae4b17d572324513559372","d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","088592cf2e218b99b02a5029ed8d1a763a3856cd25e012cfbb536b7494f08971","5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","52252b11bcbfaeb4c04dc9ec92ea3f1481684eee62c0c913e8ff1421dc0807e5","731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","115d092e2748990ff0f67f376f47e9a45a2f21f7c7784102419c14b32c4362d1","4ba068163c800094cd81b237f86f22c3a33c23cf2a70b9252aca373cfdf59677","53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","fca410876e0302680190982f2fc5102d896e65e4f4f20547a185b60364838910","601bc70ff67ae9855fc65bad9bb2d135f72147cf22e2490f58ea0d209d95f2ee","5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","de8a12540370f9f18b160a07ed57917d69fe24525d360531d42d4b1b5d0d9f0f","4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","5c744f3cc0a266dd95b5769a70ddc85c8b6019adbb0954d4de61f89182202ce3","b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","997f6604cd3d35281083706aa2862e8181ed1929a6cbb004c087557d6c7f23c4","9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","d84761f8a994b5444529c7c294b194de6fd5350ccda974929ea7e8b3893b753a","652e51858bafd77e1abcc4d4e9d5e48cc4426c3dd2910021abd8cc664961e135","8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","e578a36b3683d233e045a85c9adb0f10e83d2b48f777b9c05fbc363ccc6bdd34","0235d0ba0c7b64244d4703b7d6cabd88ba809abeb01da0c13e9ed111bf5e7059","9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","3238d2eee64423c8d41972c88673b0327d8b40174a78ea346bcd10954a8f3373","8f773ddff9070d725dd23f5cf6c8e62bd86984a57b5d5e3fc7583010b48cd8ac","5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","0c293195f800014f1fa3ffacf979002c8c1886ab71750432813fb590738eeef5","7673348e0cc2f4e33d1db02ecda02f39e66e56ab2cc3c5602246e5532f2715ab","83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","bfa105c32ed586b227188f7b568776d03202dc7aa4c3af2746579450c7d5e7f2","756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","14176cfdbc3d1d633ad9b5daf044ab4c7d0d73be61ca2f14388800e21f0989cd","a24f510afe4d938d625a4b5a5374ac0478e56305e8743dd7d37d86d709754286","648acdbcbcd01b1a91e8b0ad390ed59fada685977f44b90e148b65bd8159dfe8","8309898ba0ac6f2856a94a11723d499091253a6d5df34ddebc6149d43480bfd2","a317ae0eb092da3fd799d1717a2da319a74abebe85e2914cb259222969f95705","36d76e2dbd5f5243bd566b018c589e2ba707e34b24ec7d285feb11ba6bf23fbe","f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","8b7a519edbd0b7654491300d8e3cbd2cb3ef921003569ca39ebd33e77479bb99","c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","e09c56f8c446225e061b53cb2f95fcbbc8555483ab29165f6b0f39bc82c8d773","a571973bc2e34c898c3202452f957e6757f0c08cb66d50d6785f4a9042d74bad","a6a059446e66fbf5072eccce94eb5587cef2f99aa04d4bbd4ebe63d0a6592a4f","6e2533e27eba5ff02d6eed37e0a7eb69ae7982e0f72fd8f74c90ab201f061867","9c10dd3d85b7620ed3105b3f018125d0bb54198bf5847e39622afb22c651a1ad","58c62e415bf74b1423bf443587e33d7951a8bf19d7b03073f26e86d9b43ba9ea","dd6ec67ad168e92b8bf79ba975c6e0be8c60e403ba704d1c1b31a6059c12f967","bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","46165e8ac5fb46aae2496e3530cc4fc4172795bf12c1e4d50b353ccd92704e2d","3e55a65822875e85f96e444b79787f619b9473e36c143dedc6d5441a2544b8ab","d49275f9098a8e7a5df7c55321b0242cef0bfdde51018b7b2709c4dc74917822","b25556c4111afad4cb174aa4674db2e5b23a6b191dc6a3e42c7c3417ea446a68","f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","fbec4b634f26379f188f508450669cba0263aa4b1b58ff9b6c24de705f605a64","7c0541d0addc3007e5f5776023d5e6e44f96eae0684cdabe59ef04f2a294b116","70137204b720e4dd1b81260a70578f0f4f417c53837f8a13859b2f58e20d7150","b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","56d092bd6225f6e67d9acab3fd65ce0a4edb36cadba2f0370e67322e2f6f1bc8","a4709d5d466ad8dcf4ddccb905ad95348131df1616f964185be9739f96526bde","73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","27de982b428a9de7a7d8bc825cb45754ad8f2d6651b594d81c6bc5ff29353f92","bc0b17d3fd0e34083fbc886367ed53563b569d1d05214f60b21117e2dbfb7fdd","6120bbd2dbac7d6bb7005b3e00ddb8e6acb9592a37e2bedf32218ad21da915e5","72fa257966dec421bf308d15ccf5ee43c588309942d51dd6330250bb0ab39891","9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","058709777c09f2ef9b91ec305d4fd84cfa44eb4a0e39e39a3c759924b352f194","c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","a6f9821e4b5f28264f61f7a8fccbedb30edf194313088242687c31ddf6c7a336","b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","953cbf62815703fa9970c9cfec3c8d033da04a90c2409af6070dcc6858cf6b98","68065ce3af3ef8599af8338068cf336be35249eff281ee393186a0ef40db3abf","5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","1f2bddea07543ccda708134cca0600b4d9ac9bd774ec1ede0a69935b04df1496","6e8997d08f6798d0a9416df24312cafd084e6184a205d9283eba95ef56f8ef8b","ac6968717607889d24d6e407effb48dd5af82005925b4725b1d9eb52a8a047e2","26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","84d02daa32c7a8bff4946bbc7d878ffb7114c19879f7bfceeeb39bef48e93c42","29723e0bc48036a127c3b8874f3abe9b695c56103f685f2b817fc532b8995e33","991cf4ed946cdf4c140ccaad45c61fc36a25b238a8fa95af51e93cb20c4b0503","81ef252ff5df76bccf7863bb355ccbb8af69f7d1064b3ef87b2b01c30fb2c1f4","0f17f5f14a5f53e5709404b5b59fe816eaad15a469412b73330e6f69834234e0","01edea77be9c2bef3a5f3fc46324c5e420e5bd72b499c5dec217c91866be5a99","39209d2b85d238810ef19ab3905c9498918343bc8f72a1dcae7fc0b08270d9a0","92a130d875262e78c581f98faa07c62f4510885df6d98213c72f3b83a1be93c1","6029af83ecb3d7815daf2dfb53b978087288d018e0681043b1c8c586e787af4b","0aa14ffe353b8bab88046e64a92efa5cd039f095759fe884d188702956e2cba2","68d3eee1d509f45625e39ba325a72c6ce1d2116e3d5c3a40f513472e66622e02","4e5f1234308de112f09920e0a0b99f35a9780b3abbc13a84445f32a490d0bb87","9ac0e5aea87c4a1d37b4677145e9a75bc8e13bf887bd1148a4acb21ab7398d00","625b802ecd18feb6a9d69ef8ef58d6c08c9c9022b8105cdeaa3fc77acaab5667","2ac33d7f6999e0fb363d1e483d80f087d3e7d712ff6fcc2b4f7b18b5dab92f37","195749d135be639001a554e4b4025b66b3c5c627d90b68266c14399bde120cec","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","2e19656c513ded3efe9d292e55d3661b47f21f48f9c7b22003b8522d6d78e42f","ddecf238214bfa352f7fb8ed748a7ec6c80f1edcb45053af466a4aa6a2b85ffe","896eec3b830d89bc3fb20a38589c111bbe4183dd422e61c6c985d6ccec46a1e9","907dab3492fc59404ecf40f9ad655251741c5f2e471bb0376d11dae3e27cb1d8","8629340be5692664c52a0e242705616c92b21330cb20acf23425fff401ac771f","81477bb2c9b97a9dd5ce7750ab4ae655e74172f0d536d637be345ba76b41cd92","55a6b0318ec658ff37bc88e18a93e5f10ddad7257b379b71abf39e6868b8d4d2","b7d85dc2de8db4ca983d848c8cfad6cf4d743f8cb35afe1957bedf997c858052","83daad5d7ae60a0aede88ea6b9e40853abcbe279c10187342b25e96e35bc9f78","3a4e276e678bae861d453944cf92178deaf9b6dcd363c8d10d5dd89d81b74a0c","db9661c9bca73e5be82c90359e6217540fd3fd674f0b9403edf04a619a57d563","f7a5ab7b54bdc6a13cf1015e1b5d6eeb31d765d54045281bfeefcdfcc982a37c","ec99a3d23510a4cb5bdc996b9f2170c78cde2bfa89a5aee4ca2c009a5f122310",{"version":"2298578ed8dc91431a4169f474b9c3abb1d4344115fb6d3c518743bc55999435","signature":"31e961ab89fac48eccfdde86bb536a603af6b9e16eb31cbcdc0641931cb00cc7"},{"version":"1f7e9cdd7f849700830606ef31a28149b15b94640c3b327c98cf93c17dbe6fa9","signature":"ac0c7dbf97be8efc3a268c4b578c0fa641aec5b8077cdd375d3709d89a45fc5a"},{"version":"e50665e9c15973983d46cf8a8cbae5565cdc26aafe70eef5091d6bbf4c2d7c05","signature":"769d96fb0520c133c060bd36e3ae6a9f283fe98d56253c5d523cdf851dfdfed2"},{"version":"5e0d53d86289dfa8b0ee98c6efed8102c1cfb3547532dbd3d0c5c3d296078118","signature":"93928d1f034a782acbc9daf6756863b800a1ff276b2bdd03e5ef11e32dc4bb7b"},{"version":"3f9aa57cad1bbeccbf70f26f25c63008a74154d7fc49cc1bf8c3d6f0b6d3e232","signature":"108e05e9316d62fc45b6671c50c7465e27c163fdb085b74888a43c481b3d19ed"},{"version":"f587196e9d969711fcf723f742347280c72f09553524cd5cc1e9e8748b5105ce","signature":"bf39329839288baf358b181b55bb5863fae02f14da4da3392ffeb770f1e7381a"},{"version":"3ebb333c423fddcfb9c7d5f091cc847fdc302a640b6ec2c7c41cfee49ee3ca9a","signature":"1ffc1aad757a24b81ca5b5aa1f0acd23941d8d20aea8b93d379b399d078a8543"},{"version":"5c38ff31db56c231b1dfc51d10441fecb1eb815a81a219f19c08be93d1032718","signature":"ea38afbf45c7e94ea90dff03fb26ec6f634de645d0899f25ffb6bf68313d6f9e"},"cb5eaaa2a079305b1c5344af739b29c479746f7a7aefffc7175d23d8b7c8dbb0","bd324dccada40f2c94aaa1ebc82b11ce3927b7a2fe74a5ab92b431d495a86e6f","56749bf8b557c4c76181b2fd87e41bde2b67843303ae2eabb299623897d704d6","5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","176d6f604b228f727afb8e96fd6ff78c7ca38102e07acfb86a0034d8f8a2064a","1b1a02c54361b8c222392054648a2137fc5983ad5680134a653b1d9f655fe43d","8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","2426ed0e9982c3d734a6896b697adf5ae93d634b73eb15b48da8106634f6d911","057431f69d565fb44c246f9f64eac09cf309a9af7afb97e588ebef19cc33c779","960d026ca8bf27a8f7a3920ee50438b50ec913d635aa92542ca07558f9c59eca","71f5d895cc1a8a935c40c070d3d0fade53ae7e303fd76f443b8b541dee19a90c","252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","2d2ec3235e01474f45a68f28cf826c2f5228b79f7d474d12ca3604cdcfdac80c","6dd249868034c0434e170ba6e0451d67a0c98e5a74fd57a7999174ee22a0fa7b","9716553c72caf4ff992be810e650707924ec6962f6812bd3fbdb9ac3544fd38f","506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","053c51bbc32db54be396654ab5ecd03a66118d64102ac9e22e950059bc862a5e","1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","0f6e0b1a1deb1ab297103955c8cd3797d18f0f7f7d30048ae73ba7c9fb5a1d89","0a051f254f9a16cdde942571baab358018386830fed9bdfff42478e38ba641ce","17269f8dfc30c4846ab7d8b5d3c97ac76f50f33de96f996b9bf974d817ed025b","9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","083d6f3547ccbf25dfa37b950c50bee6691ed5c42107f038cc324dbca1e173ae","952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","893e5cfbae9ed690b75b8b2118b140665e08d182ed8531e1363ec050905e6cb2","6ae7c7ada66314a0c3acfbf6f6edf379a12106d8d6a1a15bd35bd803908f2c31","e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","97146bbe9e6b1aab070510a45976faaf37724c747a42d08563aeae7ba0334b4f","c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","09e64dea2925f3a0ef972d7c11e7fa75fec4c0824e9383db23eacf17b368532f","424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","ced02e78a2e10f89f4d70440d0a8de952a5946623519c54747bc84214d644bac","efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","0c0a02625cf59a0c7be595ccc270904042bea523518299b754c705f76d2a6919","c44fc1bbdb5d1c8025073cb7c5eab553aa02c069235a1fc4613cd096d578ab80","cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","e9cfa80b64614d19715af80c0bb4025521b619a215723fbcfb2d697a18f0708d","c5c8d3c4e9eda5b7b6adbdff157329ec942476eefdb9f1f7a6eefa8d9d7e8a09","89968316b7069339433bd42d53fe56df98b6990783dfe00c9513fb4bd01c2a1c","a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","62e62a477c56cda719013606616dd856cfdc37c60448d0feb53654860d3113bb","207c107dd2bd23fa9febac2fe05c7c72cdac02c3f57003ab2e1c6794a6db0c05","55133e906c4ddabecdfcbc6a2efd4536a3ac47a8fa0a3fe6d0b918cac882e0d4","2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","2eb4012a758b9a7ba9121951d7c4b9f103fe2fc626f13bec3e29037bb9420dc6","fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","471386a0a7e4eb88c260bdde4c627e634a772bf22f830c4ec1dad823154fd6f5","108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","079d3f1ddcaf6c0ff28cfc7851b0ce79fcd694b3590afa6b8efa6d1656216924","2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","7e9c4e62351e3af1e5e49e88ebb1384467c9cd7a03c132a3b96842ccdc8045c4","ea1f9c60a912065c08e0876bd9500e8fa194738855effb4c7962f1bfb9b1da86","903f34c920e699dacbc483780b45d1f1edcb1ebf4b585a999ece78e403bb2db3","100ebfd0470433805c43be5ae377b7a15f56b5d7181c314c21789c4fe9789595","12533f60d36d03d3cf48d91dc0b1d585f530e4c9818a4d695f672f2901a74a86","21d9968dad7a7f021080167d874b718197a60535418e240389d0b651dd8110e7","2ef7349b243bce723d67901991d5ad0dfc534da994af61c7c172a99ff599e135","fa103f65225a4b42576ae02d17604b02330aea35b8aaf889a8423d38c18fa253","1b9173f64a1eaee88fa0c66ab4af8474e3c9741e0b0bd1d83bfca6f0574b6025","1b212f0159d984162b3e567678e377f522d7bee4d02ada1cc770549c51087170","46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","86cb49eb242fe19c5572f58624354ffb8743ff0f4522428ebcabc9d54a837c73","fc2fb9f11e930479d03430ee5b6588c3788695372b0ab42599f3ec7e78c0f6d5","bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","293ca178fd6c23ed33050052c6544c9d630f9d3b11d42c36aa86218472129243","90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","91324fe0902334523537221b6c0bef83901761cfd3bd1f140c9036fa6710fa2b","b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","a88ddea30fae38aa071a43b43205312dc5ff86f9e21d85ba26b14690dc19d95e","b5b2d0510e5455234016bbbaba3839ca21adbc715d1b9c3d6dede7d411a28545","5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa",{"version":"e4fa6de10079db5c02f803de7d08980e9ba989e6c7ee9fbdca616bdce899f0f6","signature":"3cd86a115ff2c8a80db445381b309f816106355bb710ab523a48d206f48715d4"},{"version":"ed4621f0a33176dc3ae2c86b207d0687941125b47e86e1998ad57c7650c5c668","signature":"48e17024c758d09c6c17014a287d0ca33a61456a3fa6cb16d754522bba5e8b69"},{"version":"d9326cb92315fadb6b2d36b851d1b5126de6cc7a5ea173c18e2ef9863a5cc682","signature":"70ba1a5eeddf6630760c735f40c50a0f9be823f7ca8bab4e5e7eea7719f0eb26"},{"version":"63a0a3acf1a538928ed4f27ddfd58b74f1768169a2858336bd31c7cc0c1e1ae9","signature":"a85348f0ad7206f20765c9296891b930bf6b9f4cae7dbc1d2901292df078ddde"},{"version":"ffcd0c5e125f4c5556d1edc6b1cf58bf3c4f3684b18abf5765c54a6fdb4c2315","signature":"d08013bad655700225e5f1f1782f068435dfc21537edfe104b95d70fce972bcd"},{"version":"7ec15db6c5acf9a3534cf6335905001c932ec02789b46b320909b201b7d8db40","signature":"bd5c53fa3a45d5345899aade9efbe153bd0e82b59351706bbb567b5890bf02a5"},"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","93a3b8e57c68e348fc4054b245bd7cf4893225f56c991028844b693c2fa8c03c","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c",{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true},"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47",{"version":"cf95c55fe19eb9e31e3b6869b2c4f41df0ca13eb1cf67e6913fed7bf874f8a1e","signature":"a2fac3ee3296ad563706974fef4e8c7691683f2e34fcf3f21f5a291f4aa28380"},{"version":"f9d0adf651150025471d63810186f239679fd0dc483d6e5250f0a13c55d223fe","signature":"201e79de4dc2b75b5651019b545f42dda37fafcd2546aa14fe75a62b4f3fe5df"},{"version":"7a3b557ce0b8fb2bb5c15a27513ec5c938b806456a170a61227542d669d40a74","signature":"32d9fb5dab176bc0fc531d6660645eac8c1b60240ab27de9affe3868f0fbf453"},{"version":"f5b41ba7f9516998ef7b3e72b2d33e0c88645934485cd1e7d08ba91073ede295","signature":"81c8333e263454cda0a646b4f0545b4254c5d8b6272b1122d9e559ece0ca9e6a"},{"version":"6b6d18c93cad6b456c42b87ff2068ad1b2c636ef5f133b9f438ce2f6df8ae7c4","signature":"407daf12ccd1d649ec4e576bc407311d5d25f5f44a71b9312999a7f3707f2c26"},{"version":"b6e3e3f9a9fe42ae2ef36fdf5e3c0dfe8bb1ed3b9c35fff068effe9a1adcfa76","signature":"b74d0850d13c5224d690ab39697ce348dd89e3e18bdc46cfbc875edeeb77a18d"},{"version":"586a4d46becaa179f6fceeefbf0bd4e725de90a9105069101bc325c71eed6838","signature":"b82491e2990291580288c5602d4c017238977749d52b17391f0e45d9a29be644"},{"version":"a760316edaafc2dccef602fdbd4fc78934eed89b7bb1b633aa4558a64b52778e","signature":"653711fba8904aa27fd8911b63cf526e7b334e13a292da4cefdbbe179ac3f3f2"},{"version":"ff2501a2fbf4cce9fb7c4bf8ed5a709d60f678e62bdfda44c26f956b6c0c91f9","affectsGlobalScope":true},"398d3b753d3741fcf0b069a6b8a1315fe527e328e84160119d81d8425f798c33","a02124c0ee850443005ca9a4800b743c1afed28f9752afaf8c95cac6baf83877","4db8335cb921acd3448288c991f721ad7f4939069946819221b8b3cbfe9b6c5c","554acf414793d442a5602055e4f8d0b83edbd0e4a977bd4a90fdcf7b0b1fd898","52e2d806ccaab9371209f3fe262252e44cb4f79592e21500559bc6261c534d1e","b123d189617fe233217ddb7c8c0fd06b4581fdef69e77d63728d3006499f33eb","3cd4c2711fd3496674d4267305e67b69a5a42caaeca1b45c294a1de5ea3897c1","117c9403487420a1fa5936658fee58de9d77c07b2c7510aba24e9dbf92e9b622","3c201db56028e893e4de5bd9d048bb804daabcf820be6bf96bb5905a0ffa1024","a29d69c75a5a7b1d451b30dae820b745eb7efb5cb74abbe546451b1185c8b339","f2bac29fb3514f46c0c1ea981340c674098aa74c5fffe1e7630d31c177686450","b5499e8d3e39a1523d4d12718f77f1e2dcfa3f825f67898fcb90a9edb680e43e","96fc3dae2f110377fb32c48acf3efcebffd12df01c798466287183ade087719f","a64e1342f2c32cfa1b9da3f5282b2185dbdd0989e30b48ad07962e7771244a18","cefc795bc727964f7ec2991703fafe975a0b265ef4938d342f4dbd93ed7a5f86","0d390748eee58a959b560b93da0d6261a1d3ff87a246f459d8b3e7a20391b62c","fb652d576e7c73b08eb6f9a4f322aa841c1b857195745e6ca436724c179de2fb","d192c4305f2add7ebbe22e9328f788b341fcb66e5ce4bd23cd2b1de097fe890f","925c28c5e11d57a08d05059a147f7a91c0e447ec27726dc8b79655fa1ff05301","8c4242fbbba473b36879fb5c23f29482335ab05e4150f06c22edae4e44c894dd","2681cb7b5767f12041662d1db8c0994012ef98c8b41d26d2388497adfcb0cc64","4ac4739a6edf9fbd20a18b5b675b08291fc860dbf89784fbd85f6f303df8047c","1840ac8a2b18e0982da57d80a09f5e5ec0e38d18afea7ac4ce069d9bcb3b3cb6","681c823b35bcc451c501382a6ebecf0b09fc792d83efa1279a005aa62285ff7b","cff0422eb92de48515743c3638bed6c73cd7d1312513df94030dc4c41090457b","d478539c608c8ec78b2d0a7817c29efab421e29d80b641ccaa074a96fb577f04","f97e2644e1e7763c6332e1067695ab3a2e51c06baab3985507da46a6e1200958","e3c8c01adb8d63c65f122778d8f63911437024ec3f4733622c510273ce3b8823","a12603dea0828662dc971e86e1169ec7b243a606e460a04ba1e01051c4f52f36","b86d0df4f4c8abcf28e629ace836c0f6423ea1509853178f56c6329b2a26ccfe","0e62d4ab3949b67c679fd23b39e55ed9f19597c0afb21d8ceeaacc4716ed20a9","04771a6db3f7b054afac1bb6d540d18efdbba7439415d4bbb759b8f39f1f5377","d0cebbf45fa0f4b492284e0be4b3cbd1610f05e33ed201ba8937b1c147bc974d","6a1b55618aef82ea35596613159dd7cd7805b07dbfcdc8fa288e41745f3ec98c","572fa17bfde079d0d5159c47702addc4f2e0060f8abb0437a5ce9d451473f53b","9c2971938ec0bb237bc330aeb026d82d1e7ed0da7391c8761263e717875f2b21","8db1b5e284bdd0df8797b1f70406cc7dd126587fca77be01e711910cd04103fa","31549213d7a9f3cf3aa96845b5860144e3900997771713c689d60276b4786664","822a8277cc73b8d96ce336ff56a1072c9f66485a64a562cc0f29cd7e550a87fa","a097e76e2b3a5a7ab5db2db9a5787dc4a3bccbc65228951c243fc0d58675467c","e996cc50e5bae651f0565e8499873d38145d8955e521e758426ba73758eb3bf5","8ad61067b3ba801965c04c2815c231847631a61c4da2b1987500b5aca6db161c","aadd40c020be82d01ba79caf35e1169bd3cd53bb6b999a4ddc5f00c9db847a46","f16df5990c987807a817d3d4218335095cf2783a1a7521e2871e64b8d0f6648e","81320fc91eea90e06f8781d5f6bd0d3990e0cc7a50e766a78b56e0a1cd44a332","224f89650a8724c67f36b98b5e5325d4a224cadfb9b387bf076adb76437443c7","36338d4f4ac9768967f2cdc092734373a3d0eb70b808def5222765825dcde534","3bc987bed2ad368f08e5e0b05148783a46621d3386c4a123af145d12082a3850","27ae73c6c31329e8268cfadf194e127a92b5c6ada1164693e784622576b94f81","0e5a227256596eb516def2d3ab823c2321cef34c28cacbb559c924b2374143e7","718d456c2624bdff0b7683ed67041995519f657b98f52b7890f11cdccac36f89","4b2e887e533849e74020b1c594604e990dd8fb3abf693b1d82c96d5079b27ea8","2f4f0059c74e8ecf9a5e962c6a8fc3aa258941dfc18343f50e2efc2923ea5c56","92e0c20c54604feb984ddc519b56460c61dd9b285fbc30174839286545ddf848","54a336776a1161336928376c78fcc9deda2b5890f9008631c7aea700b6727bb5","14d18076cf79b3c6ff515123a71836644f50c2956312a2ffc960028111489316","632e5af6af4bc7c3977dd4782ad03b37c0229806de4eec9666fd79841b6a68c0","8c3e1c25eff5752f6642204351420c99844c1b2a73aa0dd5f81b315cf38b32b0","2e51565212c8cd03202a9492d57e93c431041114762dedf69ac3be0f62e7fb20","06f894fea5d5bb81048440482e750f7cbd4932cabb95e4d485cb0b9be1d3eeaa","b617019b6a719ce7a920e1909f3e62be8ac6a914746667bcfe10d8f350cc7089","cecf293195c298e093742c82e5995cbde08af76d41f9440224de7f83e077c4aa","575ce340b9a859c0589a04305dd9846184710eaee71a4effd071d5d406377ffd","8c08e433b7d3a998a2cadff9d54e3da445c26a13815f0c2fc8e7f3fdc7cbd1db","ed872db0e2a3622d6d92d9b110b7165d8cf23d44b6993783328e0088fdc6a33d","e34adafe9efbbe6d7af7e346ca7df8bb2e77a3a851d8207ae6199357b903b192","42b2b30e00d58b57a4204ba1118422e1bf83634816f950869e7454472fab4e35","958fc2e0308e04a48b1f3a793d66aaec672278fc1ae0f31efb89febb84dac1a9","4e771fb2e12b05ef96d1a215adfd119643c057ad3e97739f85d1d7533a18caf7","02ffcc56317b8d9ee19f209b7cd8e037074ab508a1ad06754a2b1f2e77911f66","ab570c33c53acbc83ad2e24433a433fccf12c28389271cf3f5c44b871f547b2b","8d6c8608ae5cde40483ab309156f5db32bbb2ee86486f7cf0f1d85733fd39f53","f4529b8473a9022e02fc7a4b5f92e93659d1874809f2c7b38fc367441a93a339","b92c58600fd18c32ff687b783eebfd0796cd995e5965a86ca17275b523d1fabb","ac46a79d9cfb4df1f024d98c886e4a47ea9821a2a467e4cc9623d96b8f753766","ff8b5fb2bca480984f53b064e53a0f3ebf4400c0a1a4b53cede4f77de95002ed","ab1a99b4017155d8040b5456cba7bfef33bb767da1eb8e4ca369d5185810f349","0c4286c0a84c20e05c1f5cda5add26956e696aa817b33d45ee2458eecb3ec375","eb155438a82c3e7228cfda102f1d6e1ab4652aa83cb8ca01d8afeeb782803f1f","1f0012e2fac75a6ef2406eba7a9ca9ea16c553947583d663eb726c97a26880c3","54ec65aad2d7775fab779d01763bf55d7e768920d68f7a05946901eae49ebbfb","ae1099212ffebd47c3f0e51162fb0c1e5d4b104421b8a66edddbdf920899334d","9cbe0b736b34de9fcf54ba1db60133cfcffd413bc87ad008384ec6442d4ccc14","3f713c2dd9b26d5e3e475c811a8d7ce219f1346cbe46dad4596dc6e1d8d35cf7","d538fbbf8fd0e073bb11279bff9a37deddbd192513362737f98cce00f2fa3c34","a7d869e34e5b3201695b1fd231884d163cf41d24975e1e6a407eedc31d7b9efa","d5b6042c1806e7f8ef08b9be9cb72ee50cb7b991a28efbda30a61434b1610216","8d30f52bf78ba0b0435286cfa393e2f62077d64fb9536eefa9cddd62c1252884","431e627e173edc76477913c8fe99dbbb96f8fde04aab57f133553f359d4eb20e","2d37f551e55c0ecdc324b7af4d2ce823026a3109f64d8c4f5d9fb050a01460da","dc6e89155b11ff755ade6d9eb497d247f1f7beaae87f64332e2c1e5ef05a3cec","4e2fb39d94dac2785eeac18a5d53df1f73bdbad18900fa22e46bef5cb3ad789e","734e259be474d6c6c2b63e161974d600158d3defe08e78f378301fff846413d3","ef71f578ad24aa892b5f52e9e5aca43fa56434ec07ce5d62423a6499c15708f7","176d770c6577804c34df935fa0d0fc3f60396ab125fbf20d95698e35c08bf077","314c4b1b0b4977f9f55a5854a6c6effdeba1342edbbb89e7492e550cc38ce4cb","b03941a397cbaac2a62ea7094ca56acd26e90d73865d750788a439c68c75dfdd","67d0d710465d9f4e26c3e55865d110596b95e84f7598164ad3046345f422931e","34e8ade0345445320e23a677a1011f78efae36e8653446fda313b38957865dfd","abb451358f4487f36cd7fe07120948ee6b700f0e7f5ad07591bb63c2b5c79b71","a02935c93c12620b4602f0adc823f20e6e1846d3d7a7a8bebfe303794c9671e1","465d478cecb928a2cd1b3ba3a07d1a2837cf3779375d5fa42fb46e9dc1fa4a76","42843220b0536af6997a420dcf33a0be817b4df50eebd20d1fe154cb6e8b7cfb","a0df4b1e4af6007211dbd710098e3ab753b119886c94ef877730644c66c166d7","91e683674172f9b5318021598e99f907dade21763a157a204faa7590771fe353","d45edcb4ac7d734f90d9624f33b01c54106bdc39c659ea6f36a0f7e935324f90","a7187425d04412674ff5f311012c11b459860cefcffa463b286068edd43c0776","b344bed7a9efe077679682e1ae59030c40b377cdb8d9995b024ada7c6ed61eb9","940b599dd43946b484a70368fdfd5fcf240e5732cfac5e08564b879f96470eae","55da79a1f289545c2d4d5fdc56f797a18074e62c252b8472d2680f592a159310","4123ddc1f4f7b4652c4da7aff4807605ad15279f100341ef4f5ea10ce8fd58cd","e3dbafa3bd33f2155464db1ff01bbc7a54635625d3266ab3632a9db13366faf3","71b2749ddc97ea329d22f141bd0d2231dfbcfd0c77b673fc54f22a2560d570d0","d8bdadb41912e8bd858a06c7550282243d2a4b8c7e9b827ef06da11068914218","7047200b3de005a6e8da3175f01387c228830644aec97c07edda000308991eeb","d99bece612c3ce15c8888c25df7e0444a338049cdb815d3931fa85891cad7027","a8e3e304d5584080c99e081ccce819d05ee369062c2f0e1c174560ed2cc2c034","09bef2dc3067c333c109f7b7b79bde43b843335b32d8ae51e712778941f89d68","aaf6132ab602e07ef329ae6aea0f4b976988e7d88432d4309f2a9fd0e6d9f895","dea409b891c81c9cc218cbabf4964c43c6cdf247aded796b3a30fa3f0f14593c","82aa855a9e602dc5203cf517582f06f2f1bc4e4a43300433d14dc2e909408880","92fa6c066987a4cea71a0ffe9fbfb683b45b5300ae9f5584b02592f3a27b3ed0","a5c018512673b7e1ff6cae34d14713e89e94479fff33c14696f7e2153e4f4755","e459c1d4e7623343476da01e7e4edf8290bca1f1315287559137af5557f3ba39","5981c27079aeb53fb96829328f014ae7a5a690cec8b1c93815bc23e6fe7189e7","2b69fbd1f361e82dfe9bbb786133f0b58845c79d7094fa5790306e5ec271e5bd","c10c88f1daf9fda0323c9205ee7a0fd63ae4f67320d3b673468242d89061a459","a68ae02c58a9b6ffb29eec100c886ce8eb80201e454fcae79c299bc2db0b37d0","d764056449904a73c1f2c6f8c2ae79edb0d1cc799eda5fc3a60a30fa97b94749","7e73db72fa480a32afd616f2ab23edb4702316c7b898bd2ba6b5eff6e8ab9412","916e84931e102ae5091d09c1ac5aeb2cbf5458f11e0057b23157f5c062254999","226d624e4776b837abb8c1eb775f27fc265d7ab4c7473bb48f39c535cac94285","4173e4d951eb16efa7943068fcb21aea81bdf4c996dd047ee78625874836dad7","9c219a351e0e80e556380fb3372a3fd2c54fa3f1bd9574710ab4e577ea26063a","ac18a2d24df81dbbb885e1601fe94fb9a7ba42f04c98df04d16e69f4ca9ee9db","8a9b3c96ea397dc289581c1aa4f045cdd2f8a55fc5d917c56d40370a83eedc5f","5b289d52c1414fc6737fc451b85fca5f70ead22c2294f5a9484ec1ffbe233a83","30af3be0483da0faf989c428587c526597b80c1e368d85281a3fbc95e360987e","95f50c554cc9bd129a38fc61cabf1b0b56851c3b4db34177c909c2a03d3e2b9f","a2b35bc1378fbc1443e1678fb3ab6e8023269500146537b5a098e8db214327e2","4428a7e681f6ee541f90b54d6422325fe26263c333b27293203ec8cf98da4dae","cf25b77288f29a84be0a436ea2f5b8cc00bc06b6e142ff975f60a2252a6fc18c","9fbd375bb1f6ca5490ddc37165bf761f2fe89d93bd0de57e5bf3dd12cf94baf4","fc291372c7992060d4222381491902295756466f44fbc6f0889a6d4e28d0b937","6ca9bc3ae7c4fabade7fbf2659731cecce54a745d286d69755fa2496c545456b","e6a2e3b9fe781537a0f91c301de9961bebdd4b33187f98a582d694177acda462","27316752e6998304fd7db2d67ba0b26d8029b6f503b3ea89efe845c39fabf9f9","4add6412e18d83b5bd7c65dd07c3a1544bf6b31baa22473775ce967d685aca27","8a7d6fe5fbb7e37ebb0bb81241d59c4a806cbda97a5f1f15af3fb9c903672598","74efaf42f5842c4c4fb398d2f74d59a86792320c53df9f63dbe00ba8b24b88bc","08603c7d3cc9cecd1ac97cc1baef2d90b116759b541eb4181109bdabc64788a9","64068fb5c2c88a2b7016d34b02b03582e759b3f0ffb89e9e07f968838275a564","1825619ec278edd94785af65ae589289792cc6db662f63adfddf2a79f6bd4233","3c63b1b5ea4b20822405d6b7a8ba96429ee2b400367b61c82507f80be6202289","cbd2ae79794fd7bcff66e343af71f7e174a6eb95f17a8742b1ff62c8482f7cf7","e36a635d498defc980ef7b96eb5cfaddc11eeda2bd0de7ae249adde06b2d168f","5ebe388148630bc63525fbf1f408370c657ae888abe179001e64711b0dc8d663","cda3e014cbfab2a60d7e598a50f90dd30c7fcfeaa73a60dd916507bd9965260e","432ba4ec869745ed9de5ba6a12c76549dd76ae0a146faf0bfdf35ffd4a4e6ea7","a88437446e80a492b1c4d3f5c9fff5d80b5c5e52754cbb3eb2cfee3d3690ca94","bace2dc66c954f2a81c641fa9f0dcb1b36ddbc6db3635ea446ee10c47ada15f1","c5c7f25f198dfc5ffc62fe2e8ef3f25647bf21070a5f05ac200748c83ab7da4f","60390e7b89c19d160b3bf2c854a9e06414d001debd9947a5db54623004a4be0e","5909d075463236fbe7fd8a785248203f6f32d73b032c774d5018adc3c44846d8","c08e7bfca5a8bb244cad7689ddf7546cec8a5bc5367b18bcadc0628ae927f797","b7506549d0f8ea4c74e4b4b4263932090578f193cb37bf719b44c5f149a934f6","992aafb2a060c3e2099941c7128d88aeb9bf8f5fcc594e9fe561d19003b5e4be","9874f63b3f3167f344d2a30047722b409e2915a502d9b9a50a91ab1a23b49623","b55dfdbd1e893c0b6cf91dca75395f4bd8aab8e624007f9fc70d650d8b340137","1740fa9c57b951441b1db4478a7f6a82ccec9de1de650920cbce74ed10e08eba","6948d2c91da770f73b9a6459c3daf8ab23d80bf7b70e215551ca3219ac041b68","32dd24f732e9efb063532a95a730e6bd68b7c8e54a3d4f026fb4a1fa71d115d0","e39c146a2b8a3f48452973628042cabc94bb2893488bd6a79b3e04cfcd89c729","60f5165cd2492544cf497f3eb4e8a75fa340185b4b98b8aa87b62853d57d1549","fe9cc3f1d04297f8d6995789f4df2b531a1ee7f1d0c8add6371281f4a31d195b","66b9b5e8625e6ada62c4d070918350dd10d01fa260426674448b25ffc7009488","0d25032744f0015a340edeb2e84e685a4c79ee1c9066d761d7fb0affbc2dfdc3","dbade843dd62f6241d1a30d944dd80152ddb554ea86a2778caf0f3ff990402ed","c5fe75259bda7aba824205a9138ea7f3bbc47d20ce777cea79d40930685b6ac8","3d485a48053321817c3ce51afa41c07b180b462274551d53c5a4927a5d052038","9e2f9ee99f0e172ef91af1d571e09743304b3b2430d41a8bcab357b878114757","5d6257ebe252d97b3d6fe3e0a49a0f148cd7312849f5f1d6f6b7265d3d72b5d2","2c60950709e37e95cc5dfa2ca27c5da53521ee09c254f894f8d91ae8717e7885","8bfc090ffec588f44eacbd6714f798a8a0c3dc1b02855f5e12e567b4f161b30b","b302d3e1a806fc890c324ebe90dfe07a780e973267c66bd159d0dbc1f6e3d055","b1c627fa2a4cc9199f937f4d35ccfdef2efd6ef40d5525ffd384acb29cbaf66e","5211c6778aff2c045d7fb44236ef9b91ab424ee916f6575901dd0dcd9d58857a","39959ee712b3455499af3b1c95bbfc9ea59d584d5af2b01dcde120fe5dc6fceb","bc27582d90eaa5a793cc4f3e27acff890eab95641431c263144f3162bbd4a8bc","2992d19be476415c0296bd548764c20fc9cac2876e45abbbce23dafbd65438d9","dc117b16848058e94c39b68cddd38b36be885a63a0130097e6e992cce6ad9bf4","11bc3d6606ca11c982d848ff3946f1d978360e7861dedd8bb97348a21b4a8ad7","989b88698577f76069fe791b224d2157a0205aa2b029718dfd386b7b4706fa0c","fab62208329b9bb74dfe558a6b05f802bceda19274c763efd8ea0b47cb68925b","b7126f4bafda5e7424504458d53b298d92139de65e34859ee67f6f8f1d43bfdd","34e922a2625a8cc2f2c586afc7f7068cfdac27bd5119cdfc10f8e22562b2a142","332680a9475bd631519399f9796c59502aa499aa6f6771734eec82fa40c6d654","191bee6605de2b5210f29f22df04f5b5e6bdcc1f6e21fb07091d40eeeb75fd72","d83f3c0362467589b3a65d3a83088c068099c665a39061bf9b477f16708fa0f9","180e527dbc1f5ae2bbb79d0a3db1ada49258783d7e6299559e0f2ed663b4afec","29994a97447d10d003957bcc0c9355c272d8cf0f97143eb1ade331676e860945","f4260022f7af38e533d364ea62eb7ae01b0a32050033d7f6772073e1dc908025","9cddf06f2bc6753a8628670a737754b5c7e93e2cfe982a300a0b43cf98a7d032","3f8e68bd94e82fe4362553aa03030fcf94c381716ce3599d242535b0d9953e49","63e628515ec7017458620e1624c594c9bd76382f606890c8eebf2532bcab3b7c","355d5e2ba58012bc059e347a70aa8b72d18d82f0c3491e9660adaf852648f032","311cc121259b3e0c3c08304fc25b525aa02ba0f9bf55b3e7c60b0dbb7422014e","74c269b43d39e5ece20b2cca49c14e64c05b01e46407200d7558301d0fcaabf4","ec09bd95866efe38cd00ebb79dfa7a26563d600fa4a30db0f7c6d68f8f6d2b06","482d0ac70d56aa79941be30da6df28e926a007f835eed70cf7b5f3135368d1f6","7dd19397d5a090c9f8cd762bae67bd0ad6f782abe422594fb71168fb578673b0","84cbf6204ada0ee2f80493e55e45befa079954788718efd6dcc103183104e3c0","ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","9a0a0af04065ddfecc29d2b090659fce57f46f64c7a04a9ba63835ef2b2d0efa","10297d22a9209a718b9883a384db19249b206a0897e95f2b9afeed3144601cb0","034b8b5912823744c986986f24432bf3fa7bfa671e69316b672f3f2db5166ce4","34d206f6ba993e601dade2791944bdf742ab0f7a8caccc661106c87438f4f904","05ca49cc7ba9111f6c816ecfadb9305fffeb579840961ee8286cc89749f06ebd",{"version":"471e324520c7373de5de2a810bda9703b2603962de5a3e55fb9cbbdd4ca45569","signature":"1c6aa17c2da46c29c2feb0ab6add5f81ede491681401c3e9e2f72f627743777b"},"03464dcca517bcfb982cefdc316afe821aae8bbe02dcd4765dfa25bc2aecd097","59bdc8b3c0ca88ace4d08cf703a52a14f91ce05e3d66235df792915ea54f67c9","8a90c628f293590574bbeb66092271849d180a7f4812cb05233a2c4cb30e0c04","d2ab468a72716e9a385b9c0188ddd17045efb781ce90fd9f00141729cdc867e6","c3fbb898f4185e04b223a3c406f71be2ce89b58816b95096e91bd40bf74d2a08","7bac41f2fcdc718cb06a0caee8796305de3f435a1c3d5a700305f9cb26ab3041","e46abaadffe51343e4b50115f22ec40c55efc952e1a5ad8ea83a379e68fdc41b","56a44eae80f744ff0ed0ae54ed2c98873d9efaeb94b23102ce3882cbf3c80c87","c1608564db1e63ec542694ce8a173bb84f6b6a797c5baf2fdd05de87d96a087f","4205f1615444f90977138e01f4c6becc1ae84e09767b84c5a22185ddea2b8ffe","823fcbdb4319180e3f9094bc859d85c393200b9568c66f45ba4d5596ace5641d","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","0972ae3e0217c3591053f8db589e40b1bab85f7c126e5cf6cc6f016e757a0d09","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","165181dcaf69484f3a83fef9637de9d56cfa40ee31d88e1a6c3a802d349d32b2","823fcbdb4319180e3f9094bc859d85c393200b9568c66f45ba4d5596ace5641d","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","8e517fddbe9660901d0c741161c1ee6674967aaa83c0c84916058a2c21a47feb","30f2b1e9cecf6e992ee38c89f95d41aebdb14a109164dd47d7e2aa2a97d16ea9","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","f44bf6387b8c7ab8b6a4f9f82f0c455b33ca7abc499b950d0ef2a6b4af396c2a","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","0a7a83acf2bd8ece46aff92a9dedb6c4f9319de598764d96074534927774223a","4f9142ccaefd919a8fe0b084b572940c7c87b39f2fd2c69ecb30ca9275666b3d","b80840cbfda90fd14082608e38e9b9c5fde7a0263792c544cddc0034f0247726","dcd34efd697cf0e0275eb0889bdd54ca2c9032a162a8b01b328358233a8bcd49","98ca8492ccc686190021638219e1a172236690a8b706755abb8f9ff7bb97b63e","b61f91617641d713f3ab4da7fdda0ecef11906664550c2487b0ffa8bfbdc7106","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","725d0451e136578def8263b9f5631d45b7c7c54e72a6ce3b524a1fd5bf6a31f5","61cc5aabafaa95e33f20f2c7d3289cf4cab048fc139b62b8b7832c98c18de9ef","811273181a8489d26cfa0c1d611178ddbeef85ced1faec1a04f62202697a38a5","487d2e38f52af45f6c183407858ea3e0a894fb3723c972140436f40878a27e85","15e56c8cb8c5515fe9794c5d223ca5c37a302c62183137a595ba657f5d961527","fda3db70b49ad94d08ec58caf0ca052e51d38c51d0461a28669a419c67edb396","bb7dd4601aaf41b0313503ffc43142a566a87224cc1720cbbc39ff9e26696d55","5ef05c11e0fe4120fb0413b18ca56c78e7fe5843682731fe89c6d35f46d0a4ae","02c3a89952ea1b30a3573246649c474cd27b17a26d532abed1e152d5981a6b97","d2873a33f67fd7d843ead8cebaeebd51ada53f5fc70d4a61e1874c5d2e3fde4b","94c6e873b76d2b5094bd2fddd026db85264bc24faa9cb23db9375f1a770312b5","2e8e67d756f97ff13764c81f098b9de13ff91e31028890f3dabe9e8d354f7e47","a3476600ff22e7d4845d951dbd0548f8d118f2bfe236aaa6ccd695f041f7a1fc","02c3a89952ea1b30a3573246649c474cd27b17a26d532abed1e152d5981a6b97","a86a43e07633b88d9b015042b9ea799661fe341834f2b9b6484cfa18a3183c74","8994f4c217d03e50957cc4693ae5fd35fd15c60c7d77a31528d90cbeb89311df","f5db90ab2b03fc1bc55b4d46df4aa6d4cacdbdd1491bcba0a3cf1a73777204d7","9fd04134a11f62f6b1523168945b42a74c35ffe1ea94dfdb08ecddf32218c5c2","dbe0161c1a41397e79211136cc6d595b10117aa23ac2f17f7484702ada81bc13","b21e6c15895ef16c12925295ebbb39f6731a0c74116f7bfdf5a9085040178bac","ea9911c1ac347d631cd840485aef26a8079f0ab64019cc90ae6c97d97dd65034","e9ff90fbab735e28c091315b542c620141a76f91bb0d56a14178908905e51b35","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","6fcdcc891e7f13ad8bd34c4de33d76d96c84f06d9ab6629620c8cf08d0cc6bea","16a187924c639631e4aab3d6ea031492dc0a5973bae7e1026b6a34116bd9ff5c","cd78f65631ff21afa0d2d72f47bd7783126e48c986ff47df22d1dc31347730e5","f5db90ab2b03fc1bc55b4d46df4aa6d4cacdbdd1491bcba0a3cf1a73777204d7","ad068305ead33649eb11b390392e091dbf5f77a81a4c538e02b67b18eb2c23b3","8994f4c217d03e50957cc4693ae5fd35fd15c60c7d77a31528d90cbeb89311df","caa292653f273a1cee0b22df63ce67417dbc84b795867bf3cd69f7386bb0f73c","cbe901efe10faaa15e14472d89b3a47892afc862b91f7a3d6e31abeb3546a453","717b25e589f53597f65f42e0ccff891cd22743511c79b50d534d2fa548484937","79d5d086cfd15de8c973783e166e689aa29100d0906ccfef52928504949cf8c2","15ecea8b0870ebf135faa352b43b8385f5a809e321bb171062da7ad257c9fd08","df9712034821067a7a2a0cf49c7bb90778dc39907083fa47b20c3e22c4e62da5","6b2394ca4ae40e0a6e693ad721e59f5c64c2d64b3a6271b4f20b27fce6d3c9c2","27ea6d85f1ba97aa339451165cae6992c8a6a7b17d3c8468e3d8dce1c97d16cd","05751acbcbf5d3ff3d565e17589834a70feb5638ae7ee3077de76f6442b9e857","54edf55c5a377ee749d8c48ca5132944906c09f68b86d1d7db4acc53eea70d57","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","bd0923e7cd1c54c64d7396fbd284983003f0e757bd67f3d6cf3a4e5d394128d7","b80840cbfda90fd14082608e38e9b9c5fde7a0263792c544cddc0034f0247726","4628d6640af9591f1671e0737b3b7de3abe790ff92686a46d6ca5b2e867162c1","50145df9cc9bdb77ac65e4622d11fb896b4730f6f727ffd42337a4fdcd2346da","0211a096d47b00b5ba4f6a2557184c649db02cb13a8d63f671428c09818b6df8","d32d132c14387d64aa1b776f426a5c3ddcf8211d8764526380dda04f9f4dd776","af1c879f74fa27f97cf8ae59ed33421826b7d00647c601cafbbeea129ed5ef5b","3b47ab89a1b5a0d3943aace80a68b9af7ae671e359836679ff07536c56ada3fa","99c0975f5d575eb40fdf0b43fc3e9e8538aa89f47fdf1c20b06bdea609bafc60","ae66752cf1b4d08f0b1870dd7c848e491f078116e6395ee5171323c7ec30e92b","14a9ec5df1f55a6b37f36d5d91699092119dba1d81defd12151eb0069a26069d","ff49d78bd5a137f76e23cc9629105c1d216c43bf68f545acf3f997e838a47ba3","842f200637a0e0f390a6512e3e80c8f47c0193bbdff19b5700b070b6b29f1787","26a06ef0d60229641de4f9d0ac8566a471b99a3c124e567405a82e77116bee2a","f4f34cdbe509c0ae1a7830757a16c1ccb50093b3303af2c301c0007ec2ddf7e0","59ba962250bec0cde8c3823fd49a6a25dea113d19e23e0785b05afde795fad20","ea930c3c5a401f876daaec88bfc494d0f257e433eaa5f77208cc59e43d29c373","318ba92f9fcec5a9533d511ee430f1536e3e833ffe3ea8665d54fe73e28b1ad4","adc45c05969fc43d8b5eaac9d5cb96eccf87a6a1bd94498ddd675ea48f1ba450","5691d5365f48ff9de556f5883901586f2c9c428bcf75d6eff79615ae1fb67da6","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","a67a76d1886745066bd45956fdc5842812786be2a47285d2c59424882cefd6cf","66adf84e776d039acb0207f079934f389147264385fc8847b56481253da99fad","d2eee6a9d0b2f4123aba65f6e1bc4df3f973f73a7bdeaa9f76c3c0d3f369bef8","8f47038a38222bcbc8551a017ae2e32933ca4e6d2a4ec5cfa01179f1facfa975","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","73c82b8dd8ac2916e7cc44856da0dc795ca9952bb63baa220743d31f62b278e5","9e302a99187359decbfba11a58c6c1186722b956f90098bb34d8b161bc342a0d","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","9a06d96357b472809d65ea00b724b4309ba8c9bc1c73eadd3c465e1c336a1e2f","ac2b056c5c243b64e85fb8291efd5a1a5481f0bc246b92ea40827ed426ff408c","be78757555b38025ba2619c8eb9a3b2be294a2b7331f1f0c88e09bf94db54f3c","d68d6551207bf833d92fb7cda4d9428182f8c84eed1743d9a1e7135003e8e188","99394e8924c382a628f360a881171304a30e12ac3a26a82aba93c59c53a74a21","ed1f01a7eb4058da6d2cde3de9e8463da4351dbab110f50b55e6a7e6261e5e86","19ee405d4f1ae4cbacf4361f9a03092a9d69daa3b4ec147c346049d196b5656d","6d82ce2eadb900816fb1fa8b62eb4fcf375322bd1fe326b57ef521a0cac3c189","19ee405d4f1ae4cbacf4361f9a03092a9d69daa3b4ec147c346049d196b5656d","9d344fa3362148f3b55d059f2c03aa2650d5e030b4e8318596ee9bd083b9cf05","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","bfea7300ed7996fd03c8325ce6993eed134984b4bb994b0db8560b206c96f1f7","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","ca87e8ccd63c92b34fc734eee15d8ab2d64f0ffb85d762018bc0df29ca7185b4","4628d6640af9591f1671e0737b3b7de3abe790ff92686a46d6ca5b2e867162c1","a3913393d42c709b4faea550820241a262a4ba3577f9a00e2f8727eaa92be535","5e424456e19df83a4befc6cd24561c2564b7a846b7025a164ce7076ee43828ee","887dec57d4c44eaf8f5275c9f5e02721b55c0a34f21f5b6ed08a1414743d8fd9","2d53acf155ccbc6b7dca2cfdb01bac84e3571865d925411d2f08ff0445667ea8","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","a7161c3e94028388a80f7091eb2f7f60d2bdde6a58f76876ab30f66c26f6128e","381936e93d01e5697c8835df25019a7279b6383197b37126568b2e1dfa63bc14","9944093cbb81cc75243b5c779aebfb81fe859b1e465d50cd5331e35f35ef263a","fb19163944642017fcdcbdc61999ab21c108334c8b63377184a2a1095698889a","839ebe64509ec88e2d7e48cc36bed2b0f52e68b02818478a6e18a88b041ed78a","1bd91f5355283c8fa33ad3b3aace6c4ebb499372943a49f57276f29f55fd62c4","6535056b39d5e025505b36ec189302e15af7d197a6afd9a3c853187eb1bea7b5","34f97cabd716ba01042042f6523183149c573b8fb15a08a3a9524bf1950216ef","01911dee2f91c28782c46d57e2e19e250f7c9db4388f8e9945476379e9392d56","95ce7b12742f82bddb85134d8ee20a759c698e5d8beefd559fd6e87112fbf72f","0b464435da3dd6473694a2128d49f37c9cf43951455c56f0aa5a940f290c69d2","75a5fcf80ec969763cb4a31d2cf8b8531b076d6f1ef8699bd9dacca43d34b571","b27117352bfa4f1e6fa6874c3f5518252ae2ff30e345d9e505409a75a232372c","d21630c0cd7409e8078cc0aeebf3cf8b915888553d7c9c2d9debd918bfd4bebb","7e7a2691f49c7d2623b8a531c9eb4005c22daa57e7789f1982c19fe3c1bf55eb","80c54f1d257a28de68ec6c23ca7da374071646182d9a2d2106a91606ebc15f52","55ba9e8cb3701eff791fccbe92ef441d19bc267b8aab1f93d4cac0d16fffa26a","a40e9367d94ec1db62a406d6e1cb589107ea6ad457af08b544e18d206a6ae893","12b260ecee756ba93760308b75a8445f2fe6a1cff3f918cf7e256e3d6d1066cc","181de508acbe6fe1b6302b8c4088d15548fb553cb00456081d1e8d0e9d284a24","ead149a41e9675c986e6d87c9309e751a8c2d0521839a1902f05ec92b2cba50b","d15a8152e6df11bfad2d6813f4517aa8664f6551b0200eca7388e5c143cd200d","98884645b61ad1aa2a0b6b208ebaab133f9dd331077a0af4ec395e9492c8d275","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","f660100bff4ca8c12762518ba1c1d62dd72ee1daa7ea42f7eae2f72e993bec6f","fd7140ce6b8fc050547d7da8696ed2bcdf4cabc4e65f40f4ac1b080f694711d8","8689dabe861fb0bdb3f577bdd9cca3990b14244d1d524c7bdb8d89e229c903a6","15d728b5790c39ce9abbd1363e0a5ed03ee6b59a38ee3c4d9d25476641baa7a5","95159570a0fc2b007b1a46ed8caf145ad6711030c0c4727cee979a3b770b0634","e5446a2b0c44d21a4e2ed885bbdb40a4e39a184f9155f13717993782e313bc7e","8683b5b593a5fd2cf99212195ba25106e61a546169068626c8a3745ec6e94bed","3f72337d957fd6c87b5c8628c85633d7314b8539cc641ea71a6f93a71f7533c2","5d0975641e296dba1ebaf16bb987a2b3abe0a62d18fa1396f57c9d4aaead48e8","7b08a55fd84cf8bbee204fa09e8ea402996a648c5af38b52d27231c60d9c8e4d","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","60d3271e8f6a7e952844b716a5f9f71744cb8d6fbeb9adaf35f1735ff7e44aa0","632e473a59bfaff109a4405851b56c61aab4a82cedd2a658b37931f98f64ba91","178871c23f0cac1cb358aa23f0ba3b1650ec3e962f575e82d33bce7550e55cce","94386e32c1da2a3dbff53bfa3aca55ef89397f09bfbb7546890031f246d65716","2b96e9789937d863abbb5e33861c941da0d0607fa548f965cdf4e0cf984579ce","ea80ad7543efdaeb5ee48a3951f5a32adaa8814fb2a8b9f8296170aa31083455","72aad439f7b0cf1c9b28cba809c6b818c72d09f8eeb5978f626d088c2d520f18","40d4add4a758635ba84308ecf486090c2f04d4d3524262c13bfb86c8979fac4e","72aad439f7b0cf1c9b28cba809c6b818c72d09f8eeb5978f626d088c2d520f18","f44c61ac2e275304f62aace3ebc52b844a154c3230f9e5b5206198496128e098","924f76dc7507df1c4140262ea2a2d8ef99b8c31e995edefc8271928a3e4807a6","3ffc5226ff4a96e2f1a1b12720f0f8c97ac958ac8dd73822bedf6f3ed3c35769","924f76dc7507df1c4140262ea2a2d8ef99b8c31e995edefc8271928a3e4807a6","9df26a86871f5e0959d47f10bff32add294bf75b8d5a4f77a19dfc41694649d2","bfdd4ae390e0cad6e6b23f5c78b8b04daef9b19aa6bb3d4e971f5d245c15eb9a","369364a0984af880b8d53e7abb35d61a4b997b15211c701f7ea84a866f97aa67","7143d8e984680f794ba7fb0aa815749f2900837fb142436fe9b6090130437230","f7b9862117ae65bea787d8baf317dcc7b749c49efeada037c42199f675d56b7b","78a29d3f67ea404727199efc678567919ecebbfdc3f7f7951f24e1014b722b46","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","e53b2d245026cefec043621d6648fab344fd04415b47270da9eb4e6796d2a9f4","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","f10a10d90bd1e3e12e1d7d027086a716dd6fa03d251597af77210e7a3081ac0b","b2bd6911e91dbb008938121d0fd7df51f00148652090bc9ccde4dc704f36f011","1bbdf84753428ed6f1533eabb066f9b467fade05180797e39cb32b4be4ba7d5d","e52d0f3e5073519a3a0a69fb0090c180f219fa04fc4053bb2bc5453a61296acd","24b30db28923568ff5274ec77c4c70c3e18a62e055f207633b95981ba94b0dee","e285a018fca2bcd32f25e2e048076b135086b3bd0d6215b1f72716129dce44ad","d9901d27accf8b30a3db21c9537e516427f55abd13ca53283c8237711bd37c16","46ded89297bd3856f536a6a990d64831ea69976626669e9371fe12e47a263ceb","823f27e48b1e7ff551b90d15351912470ab3cd0fa133bc2e1ddc22bea6c07d23","189abcb612878978d45a513656690710591b93860bc9cc2d2bf58c5f2ea9b3ae","e6251b50929025156877155e58eff37840da58c85d094e3f128b4f07e03aa66d","e6251b50929025156877155e58eff37840da58c85d094e3f128b4f07e03aa66d","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","657bfa91b3233a36081f7030fa35a16728be10e90b926a9e8ae218e9078a5e75","c6b1f54c34ab08126f8594801908410a93a64e0dff66df8a226a9b5460054f19","ca969c350e570c5fa395c4fb88ea52dfe50014890c445d2834e4f1fe96e93c2d","a6f374e4c41a9aaa10213ba98f7d1e520f4cc314c2f20770145124e2f207f11c","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","1481094055c14f5976d55446330cca137adf0b2a39dcae164f1d6460862e5e5b","914912142f2648f12b831ad10bcfacfbc02876161de095c479a1ae308067f646","b5f7732acfd56640a680acbd12caff991c839c3dfd5a4b48ad90bd7a730d501d","8b801973d33012fc9b97dcb37cfd2d5d30eed228b4d342ae3563972ba1004279","09c3bb9dac02114c00586e82c825655ea0c5031097667855544d436063322760","14e64ceb540cc27093ba1a04948aec14707da94a6ff1d9675efca976e10fea49","da6e2dde5747e6e71bdc00a26978fe29027a9e59afe7c375e2c040a07ef9ff25","5d6ddacf1e9cc6fd92ae992eb6eb00910cfe3fe95f6e29b44f0730c710b2def5","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","da20ac2b80ec650f4c36df8ebff9493625634329eb0f901a0971dd6619e0978c","ef51ac3ae8d6ddc8ee29937a039cbb4a9bfe6ab34267d4c9d998645e73f91237","cc45a177fe3864f8a5579ddb987cb5db0ee47c4d39335832635c241b5f98337e","3aaf74018283ef4c49f52bcab37f09cd6ec57fff27503090bc4bb75194fd68a8","69578d34fa63a8314823b04f6f57a60671755666055a9990b070f5403f21d417","c9aa17bf9f1d631f01764ad9087de52f8c7e263313d79ac023f7cd15967b85cb","78d05f11e878fe195255ac49d0c2414a1c7fa786b24e8d35c0659d5650d37441","b93a1522b0ae997d2b4dc0e058c1d34f029b34370ee110b49654deeef5829a41","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","ae2104bdc52ab3722b5c0cfa26aa65b077e09d7288695f9e0ee9ffde08721b3d","a4038d37487d8535f99ba99adc4a01b08f038515dd939e57bd80a3743c0e5662","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","483095dc7d04bc24cc55e72a807fa8d786a52981068c6f484947f63956b0fa92","4539884fadd3b91977560c64de4e5a2f894a656a9288882e1307ba11c47db82e","430016e60c428c9c8bfa340826ff7ed5988e522348838700f3c529dc48376c10","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","2e1b0586468b145f432257bfc0dc8d40a82b04ebd00c5f92efdde426d14d122b","976d79fce50c222b3aa23d34e4165e1c8424060c3744a4a5b5834bbc644e64a6","d61d7221ed4b74db0568ffae7765f6c2a48afc64a076dd627e98dfecd1ad9897","89ac12f3bd077e0d31abc0142b41a3dbbdb7ae510c6976f0a957a1f3ca8c46c9","694d279f9a6012c39bba6411e08b27706e0d31ea6049c69ff59d39a50de331cc","e27f95d214610d9d7831fdeccba54fbe463ae7e89bd1783d828668072c2d2c92","ed48328b38a82b98abf873153e939c9baed42cbd5d5289830dd832c552db5024","6ca43ca6b5f1794be3eee4993c66f15083c3b47ee45615163ee49f450e4b464a","8d8381e00cd14cf97b708210657e10683f7d53a4eddcfc3f022be2c9bdf591dd","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","a37d882a1490198571664d4d06e584d226f8c62445b25696f3f9efff776b2a0b","ec85bf4283c2ec8108b0b6161f155aeedfc770f42dca27bb6fca2cfb0abf1a8a","ec2ba248e2ad73cfd1989cb7f53ff1df5612f63b628e03a472308c1bab10c0f9","ea763067ac7adab4741f87de9fec3fc154ac1f3578b7e3bc0c64b42c6f6c912e","a6add93dcdbb7c0b119b363ba421fb530d7fd68814be4a8314ec9aee486478f9","d54fa16b15959ed42cd81ad92a09109fadbb94f748823e2f6b4ad2fbbee6e01f","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","2e2ffb8593c9db471bac9f97c0b1f1c7ef524946a462936e5e68858ac3e71566","d4c081ae5c343c754ac0dd7212f6308d07f55ab398cee4586ee0a76480517ae5","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","a4f2c605bbc73124b1bb76faa66be28937ccfb7f5b77c45cd8022071bd53696c","be4c58de8fd3ddd0e84076c26416ce5ffcf193a1238704692e495bc32e0a6ec5","af9491fcc19d5157b074871bdceafc18dd61972020fb8778c7d3cd789cd8186a","64da3dee7d98bdc4b99b24de094a08ffb2dda8aa14270cd51fc936dc8af1cdb2","a4038d37487d8535f99ba99adc4a01b08f038515dd939e57bd80a3743c0e5662","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","152532087c2a91adb4527e96ccd7b3640f1b08c92301fa2f41ed6a53130bda67","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","549f38b7fc2753d95809f16c29e8f86cf6f9d99cb17d8eb53f0132bc92192a2b","6e39d03aa07f268eed05dd88e1bd493cb10429c1d2809e1aaa61fbcd33978196","aa7384441d37522532179359964184e5c8cf649db32a419542e7b5605208b45c","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","36d27819ece3bf0eefe61ecda9e3aa2e86b5949c89dba79f17dd78a2c4587a61","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","18a20ae79049147b460771dfd6b63b3b477772d763c26b367efa499c98e9fb5f","4c91908ebcc1b1c91f5c9cd7e9ffff83fc443e6926013b0b0082a6c2778b729e","ee51a4032beba0b38ff75838b386627a38c53008b8ca350bb42f192d0fb3cf58","b14b8756b166914ab1cb68c44bb579566833449d5e9d68655726f6ffc6d5e457","a09ae8631b5e442bbcdb93e3b60d6f71a54d192452af841616e2b49c5a03fb26","7a254103740333c7fb870f95ab9a26fb028cb298478f43e4750b8eddefafa11f","d54b449b0eff66bc26e09593df44512725b9e9fce4d86ea436bed9e7af721ff1","91991180db9a4d848bd9813c38a56d819a41376a039a53f0e7461cc3d1a83532","4e5f8c9d9655d5cedd160d50dc0d04f78fafb2c21db87e5b0c87105050445d91","637ffc16aeaadb1e822bffc463fcc2ca39691dea13f40829c1750747974c43d4","7955f3e66404ff9a4ac41f40b09457fe1c0e135bde49e4d77c3ea838956041bf","f6d23ab8669e32c22f28bdbdf0c673ba783df651cafcbdcc2ead0ff37ba9b2b5","c90ef12b8d68de871f4f0044336237f1393e93059d70e685a72846e6f0ebbbff","ecefe0dd407a894413d721b9bc8a68c01462382c4a6c075b9d4ca15d99613341","9ec3ba749a7d20528af88160c4f988ad061d826a6dd6d2f196e39628e488ccd8","71ce93d8e614b04d49be0251fb1d5102bb248777f64c08078ace07449700e207","9560571cf48c84114027d57b34d769cd4e9a6cfaac7919bfbdcd6ad0801bc73c","4818c918c84e9d304e6e23fdd9bea0e580f5f447f3c93d82a100184b018e50f5","6e39d03aa07f268eed05dd88e1bd493cb10429c1d2809e1aaa61fbcd33978196","eab3b41a54d5bc0e17a61b7b09639dc0d8640440e3b43715a3621d7fa721ae85","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","da31c5275a923bb601a84bd648fd24cc9009860fd5901351f32e686e69bfd432","36d27819ece3bf0eefe61ecda9e3aa2e86b5949c89dba79f17dd78a2c4587a61","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","ce8eb80dad72ac672d0021c9a3e8ab202b4d8bccb08fa19ca06a6852efedd711","a336b950cd64c3c3dd2503384bf2915a5ea03d694672bfedabd71fafdae34ebe","d12e9c3d5e2686b5c82f274fb06227748fc71b3a6f58f7b3a6f88f4b8f6921fb","5f9a490be2c894ac65814a1a9e465b99882490ed3bce88c895362dc848f74a8d","2d5935948312241d3195b5e24df67775c6736dec1e1373efb1b6f04447106867","686ccf874ccbf999a155208a7ec8358a718d211f779980c2fe7cca176025d769","48bf56f3c8b3d0b27f94587996400c129773ab9c4810354d89850b0bee92b3d7","e6e9bdd2f65408a0b52d8e8ca9ddb7827c5f3496561788c974e4f2fb485427eb","193772121770797ee600739d86de128cd7244e3e3e101684473eb49590dbfce1","7a6208fa971deb77dbd7c59d56f7eb5b2516d76a3372a55917b75fc931c44483","b9aa4ed5dc603ad443dac26b9c27b0680b1cf4614f321b8d3663e26c1b7ef552","8613d707dc7f47e2d344236136010f32440bebfdf8d750baccfb9fad895769ee","59ebb6007bce20a540e273422e64b83c2d6cddfd263837ddcbadbbb07aa28fcc","23d8df00c021a96d2a612475396e9b7995e0b43cd408e519a5fb7e09374b9359","9a3c859c8d0789fd17d7c2a9cd0b4d32d2554ce8bb14490a3c43aba879d17ffb","431dc894a90414a26143bbf4ca49e75b15be5ee2faa8ba6fcc9815e0ce38dd51","5d5af5ceb55b5ec182463fe0ffb28c5c0c757417cbed081f4afd258c53a816c5","f43eee09ead80ae4dcfc55ba395fe3988d8eb490770080d0c8f1c55b1bd1ef67","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","4c9784ca0ab39916b498c54db858ea27c929777f161a2450f8712a27cec1b017","9c92db9255eab1e3d218bdeca593b99355bbf41fa2a73a9c508ad232a76cda96","bf2cc5b962f3823a8af297abe2e849227dbfb3a39a7f7301c2be1c0a2ecb8d32","eaed6473e830677fd1b883d81c51110fcb5e8c87a3da7a0f326e9d01bf1812ff","3ac0952821b7a43a494a093b77190a3945c12f6b34b19f2392f20c644ac8d234","ed5877de964660653409f2561c5d0a1440777b2ef49df2d145332c31d56b4144","c05da4dd89702a3cc3247b839824bdf00a3b6d4f76577fcb85911f14c17deae5","f91967f4b1ff12d26ad02b1589535ebe8f0d53ec318c57c34029ee68470ad4a3","f6ac182bf5439ec39b1d9e32a73d23e10a03fe7ec48c8c9ace781b464ecc57c3","eec377e6bfd366a64f9641e80ff1e7ab5fa58963364a9d6a76a11365dccd87d3","687b26db97685fcadeb8e575b6bc252ea621fef8217acd2bb788ce781a4b05b3","e4a88ca598bf561ec253c0701eea34a9487766c69a8d8e1b80cf67e60dcc10d7","281cf6513fcf7b7d88f2d69e433ebbd9248d1e1f7571715dd54ca15676be482e","dc9f827f956827ec240cec3573e7215dc08ed812c907363c6653a874b0f5cabb","baa40541bd9b31a6f6b311d662252e46bad8927d1233d67e105b291d62ace6e6","d3fa2e4b6160be0ab7f1bc4501bf0c969faa59c6b0f765dc8ca1000ca8172b18","cf24c5c94e5e14349df49a69fb963bee9cd2df39f29ddd1d4d153d7a22dfb23f","18a20ae79049147b460771dfd6b63b3b477772d763c26b367efa499c98e9fb5f","c5ad2bd5f2243c6fade8a71a752b4333b0ba85ae3ea97d5323f7d938b743cb26","cf1e804f283ae1ca710f90dba66404c397b7b39682dbdfa436a6b8cc0b52b0ab","25fd641b32d4f7d6811cec4b00c0c9a74cb8822ec216f3b74bae205a32b1de08","658f07f1b7c327ecc8b18ed95ada19a90f9fc3f0282d536ca9d6cd2d597631f4","35c8e20c61bffc19a0391f42db2fe8f7bb77caa414bd2145a8891826bfdb9667","658f07f1b7c327ecc8b18ed95ada19a90f9fc3f0282d536ca9d6cd2d597631f4","b3279a079db8ea0c8b76f7f3098f4b10266c3bb24fa21e5838fe6008e3d40043","803e5b05c612513cf773d7826c8556eb30ff4a92ba33e9c9dde5ab4cfc342cf9","8aec152ae554311c39f87fc5ec3c1f4c5d5d44e1145704782a4fdd6b16c2f1d7","9b4a1b563bc6d3d02a4a9d3e72bf699d486a6b117fdcf29199d49d3650abe122","803e87c5c27720886ff9f591a47e3281b02bf737f6c67964d72a4d8e7b905a21","ce762eb7d3137473f6b50c2cd5e5f44be81334550d9eb624dadb553342e9c6ed","3a4d63e0d514e2b34487f84356984bd4720a2f496e0b77231825a14086fb05c1","22856706f994dec08d66fcbf303a763f351bc07394fb9e1375f0f36847f6d7a5","1f2b07381e5e78133e999e7711b84a5d65b1ab50413f99a17ffccfc95b3f5847","39aa109cb3f83642b99d9f47bf18824f74eaaa04f2664395b0875a03d4fc429a","15ca7cf99d213ac6a059a5f81ff17dd2c0d4e31260821719ef7e78ea6163f518","ee130bd48bc1fb67a0be58ab5708906f8dc836a431b0e3f48732a82ad546792e","9d32f274f0b2388e27a83b6b88b33616a4b73b4d045c00d814e942c07a5c9a57","06a6defbd61ec1f028c44c647c7b8a5424d652b3330ff4f6e28925507e8fde35","9d32f274f0b2388e27a83b6b88b33616a4b73b4d045c00d814e942c07a5c9a57","15ca7cf99d213ac6a059a5f81ff17dd2c0d4e31260821719ef7e78ea6163f518","9df4d5273810ea069628b1efd0ea6ca9932af9694bfbc8dcea17c8253f1790c2","9b3ca716ad96d961aa8f2bab5fbd6752637af2da898f54c8d4021ef8ab2607d2","60d53d724e5854f545fd4753881466043628eb886159a73568878f18b3020afe","c53d0b758384bd45cd3a051a5227805b57eae8f2142e906d65ae97c8868fd45f","a844bbf1cb0bb844743b2d78eee9bdc78df80a98989deab32ff8cd3228b41289","b641f9357511425b12ad981f9ba66d964fc114b78a5761ead8595599f036a22f","3537c3f024e3bed94fedcce3444fca3c1bce744942912a5a4857f7050ab25429","96a5c70389556c62902487f56bb34259ef57439a4cba6c9bdbbbb55225b32e63","54895ba2b529f7c369600228dbb88c842c311d1fb7de4ccbc43123b357c26a90","9d0050ae8481d6e0731ed80b55f6b475ae3a1cffbc61140e92816a0933dba206","68867d1d1560d31165f817de3fceb4b2bedbd41e39acdf7ae9af171cdc056c47","1c193e68e159296fded0267475b7172231c94e66b3d2f6f4eb42ffde67111cc5","f025c51bcc3c7dacbedb4b9a398815f4d5c6f4c645db40880cee4ac6f89588de","b94704c662a31e0d061abb006d38f6211ade97422f0ae45d751ef33d46ce3042","c3e2f2b328bd55ae9a401673bd33f86d25a7d53a4f5e1fad216f5071c86c0b79","5f6e56ac166b7a5bde756afd2e573af1e38fdd5f10ddb72e46bc44f3c0a42369","9b65fd7edfcf3c4c6538d735d269647edc14856dc062e9dde80412c45ff2cf29","fbb26af430ebc8743161f6026a0722a4cee3df8c08bdc2610a1d037f733fa823","65de396834768bf2b3548447b84b774310f83f33d00f9fb951c1b338dd9b5395","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","75b022f6a48640ca4e048da35132eef2cb9445680c7e1080021ccc15f4d2bf59","ea7c9f9c4b1cd2573d49dd628d446fa7611052e00ea1a3aa385a83a7b07c7fbb","a74eec58a6011f6ba3d6bbe4eacea0935f7fce9ad34f8c8bd8ed8872ae68f826","6bd326162475f1661612f9bb68aa7833e548c7a726940f042e354086cd9b7c2d","4b3d55b3d962f8773ea297be1b7f04093a5e5f0ea71cb8b28cef89d3d66f39b0","39d7517763d726ce19f25aacf1ccb48ec4f1339978c529abdf88c863418b9316","4ce8ae09e963394e7ffe3a5189007f00a54e2b18295585bb0dae31c7d55c1b3f","b29b65017a631dff06b789071cdf7a69f67be35238b79f05e5f33523e178feaf","58cb40faa82010f10f754e9839e009766e4914586bdb7a4cceff83765fa5e46c","efa190d15d9b3f8a75496c9f7c95905fca255a7ce554f4f0b91ba917b61c3b7e","303fd31bbed55c8cdf2d3d9851668f4e67746f0a79861a3b4d947a6c1c9e35c5","0fe6e8d738df018108bd3ca0e208dfa771d4e34641242b45423eca7d7ade80a7","8210e3bdbeeb9f747efdf7dad7c0ed6db9d13cd0acd9a31aa9db59ddbbac5a15","d6791734d0fce30014c94846a05cb43560bce15cfdc42827a4d42c0c5dafa416","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","8c4f5b888d7d2fc1283b7ce16164817499c58180177989d4b2bd0c3ebd0197f7","58c97efc183a6465be046e3c59ff1164b9930c25f080f5462d4b103760757d97","ea7c9f9c4b1cd2573d49dd628d446fa7611052e00ea1a3aa385a83a7b07c7fbb","3108920603f7f0bbf0cebce04bcaf90595131c9170adb84dc797e3948f7b6d06","8aded022b77ae3c07af72765bca9421f2d990814e0f4bfca0aa97395aa4c9010","f817987f543a452afa3035a00aa92800dbd7ff3246fcbe4cecb29bc18552b081","6ab1e8b5d0a0f4123b82158ea498222a5eacbffa1354abe8770030ba722c13b7","3cda89b540ed1ea9a3d1e302a489a4157a98b62b71c7abb34f8f15c13da9717a","a1ebece06e1ac47fb3a1b07997e57aa2e6a8f5ece26ea3c4a4fcb591e05d1e05","8aded022b77ae3c07af72765bca9421f2d990814e0f4bfca0aa97395aa4c9010","fb3b5ff3f5fe7767c07b755f2c22ce73ba46d98e6bc4a4603fde8888eed14e19","41c53632da296cf700f8553a48522e993949ea8499ceac4a483d1813beed3017","03b97deb8a168b27af94dca96eba747e19faf077445102d52c618210829cb85f","6a3589af6b9ec75cd87d9516ccfb9b06ab6be6f938790aeb4b1cd4dbaef92c45","722a667fe3b290be746d3ea6db20965ec669614e1f6f2558da3d922f4559d9c4","0f1c68ddd4573b2e135748377c3705a96d6a6c123910b00d0c7e8dc2edcd7f6b","a63781a8662205b9b6d2c7c5f3bad1747a28e2327804477463ebb15e506508e1","0f1c68ddd4573b2e135748377c3705a96d6a6c123910b00d0c7e8dc2edcd7f6b","80d8f42128925d6f1c82268a3f0119f64fd522eec706c5925b389325fb5256de","b4c189c9be8cf4a7cce177fc49678e29d170e67279195207f36a4f4d184d60f2","d16a18dfc505a7174b98f598d1b02b0bf518c8a9c0f5131d2bd62cfcaaa50051","b4c189c9be8cf4a7cce177fc49678e29d170e67279195207f36a4f4d184d60f2","d3ceb0f254de2c13ffe0059a9a01ab295ccf80941c5429600ffdbaaec57410a7","8e172ba46195a56e4252721b0b2b780bf8dc9e06759d15bc6c9ad4b5bb23401d","41c53632da296cf700f8553a48522e993949ea8499ceac4a483d1813beed3017","0fe5f22bc0361f3e8eacf2af64b00d11cfa4ed0eacbf2f4a67e5805afd2599bc","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","226dc98afab126f5b99f016ec709f74c3bcc5c0275958613033e527a621ad062","ec7197e94ffb2c4506d476df56c2e33ff52d4455373ecb95e472bb4cedb87a65","343865d96df4ab228ff8c1cc83869b54d55fa764155bea7db784c976704e93ec","f3f8a9b59a169e0456a69f5c188fb57982af2d79ec052bf3115c43600f5b09e4","e2898fa86354ef00ff2c0967a79b4f809477ec4471528aa96e192251b9f81d0c","15ddffc9b89470a955c0db3a04aec1f844d3f67e430b244236171877bdb40e50","7ca1ed0b7bd39d6912d810562413fb0dad45300d189521c3ca9641a5912119a5","30af3be0483da0faf989c428587c526597b80c1e368d85281a3fbc95e360987e","74766ac445b27ae31cc47f8338fd0d316a103dd4d9eb766d54b468cb9aacbf0e","65873070c21b3ce2ccdf220fe9790d8a053035a25c189f686454353d00d660f9","d767c3cc8b1e117a3416dda1d088c35b046b82a8a7df524a177814b315bde2e3","bf834cd64464f9217cb642a48c2f5f5f1cd509e13088adac6773715fb8536212","40258ea27675f7891614c8bd2b3e4ee69416731718f35ec28c0b1a68f6d86cd6","bf834cd64464f9217cb642a48c2f5f5f1cd509e13088adac6773715fb8536212","c61aa5b694977909ef7e4a3fdad86b3c8cd413c8d8e05b74a2def595165ba7ce","bfef3048352341739d810997dcd32f78527c3c426fac1bbb2b8c14293e1fa505","1dd31462ed165900a141c2e159157be0e8701ce2a2ed0977636f1d021894887d","872321f2e59009fad1f2efde489b20508a3631e16a86860740044e9c83d4b149","fa381c11f336210a8c10d442c270c35165dcf6e76492618ee468dba325a3fc98","857857dbb4d949686de80a138aeab8e669d23397100dc1e645190ff8be5787de","d6a9fe9c13a14a8d930bb90f3461dc50945fa7152e1a20a1f5d740d32f50b313","4162a1f26148c75d9c007dd106bd81f1da7975256f99c64f5e1d860601307dad","63f1d9ad68e55d988c46dab1cbc2564957fcbd01f6385958a6b6f327a67d5ff4","8df3b96fbafb9324e46b2731bb267e274e516951fbf6c26165a894cae6fd0142","822e61c3598579070f6da4275624f34db9eb4af4c27a2f152a467b4a54f4302f","a8f83bf864a5dea43d30c9035d74069b1820f0c49824960764cf21d6bfbb8e66","f9449f2b807f14c9ff9db943e322385875cca5faa26775f64a137e4d1a21b158","8855c7125e06a2001f726b4f2f9905e916d122377f7d938936fb49606ccb55c5","8855c7125e06a2001f726b4f2f9905e916d122377f7d938936fb49606ccb55c5","d24f0b133a979dc915411e1c76d2dada47e3624b42d5838e9d6b9eef1f067cc7","755611714dbab5b9b351b51e7875195f83bb26169ae6b31486dcb1e6654ed14c","a82213450f0f56aab5e498eaae787cf0071c5296ea4847e523cf7754a6239c99","f2882c5afda246fa0c63489d1c1dff62bf4ddf66c065b4285935d03edaec3e71","d38c1b0fd8bc7e301fd467a2afd6d32b2457813c48c16afabc06d2ca5b6bda41","d38c1b0fd8bc7e301fd467a2afd6d32b2457813c48c16afabc06d2ca5b6bda41","4ed8f12983c82690e8fecd9b24f143d4a7c86d3156be7b2bff73e0761f820c8c","1d920699becb8e60a0cbbc916d8559a3579b204dd21655dd242c98fd8ae986ea","c278288183ec3690f63e50eb8b550ef0aa5a7f526337df62474f47efea57382b","3c0486004f75de2873a34714069f34d6af431b9b335fa7d003be61743ecb1d0a","99300e785760d84c7e16773ee29ac660ed92b73120545120c31b72166099a0e4","8056212dad7fd2da940c54aeb7dfbf51f1eb3f0d4fe1e7e057daa16f73c3e840","e58efb03ad4182311950d2ee203807913e2ee298b50e5e595729c181f4c07ce3","67b16e7fa0ef44b102cc4c10718a97687dabfa1a4c0ba5afe861d6d307400e00","30af3be0483da0faf989c428587c526597b80c1e368d85281a3fbc95e360987e","f29c608ba395980d345144c0052c6513615c0ab0528b67d74cacbfac2639f1d4","e094afe0a81b08444016e3532fbf8fae9f406cdb9da8dbe8199ba936e859ced7","e4bcab0b250b3beb978b4a09539a9dfe866626a78b6df03f21ae6be485bc06e2","a89246c1a4c0966359bbbf1892f4437ff9159b781482630c011bb2f29c69638f","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","0a87a56e75de872e21997cec18ecda36abb5cac0d18690659b588e271099b589","98ca77869347d75cd0bb3d657b6dcd082798ef2419f1ab629ccf8c900f82d371","73acfe8f7f57f1976d448d9569b345f907a6cf1027a08028fe5b8bb905ef8718","ed8a781d8b568d8a425869029379d8abc967c7f74d6fe78c53600d6a5da73413","90ead73acfd0f21314e8cbef2b99658d88cc82124cfc20f565d0bdda35e3310a","8ecfec0e00878d6d26a496cf5afc715b72c3da465494081851da85269b0aef8e","4c78fccd1c5cd8eebde42cc078e7332f3d9b4eb1a542d9a5ec66899dfd71b93e","4c78fccd1c5cd8eebde42cc078e7332f3d9b4eb1a542d9a5ec66899dfd71b93e","e54b165a2a5a5fbcf4bcd09176e4388b514ca70a20635841937f1cc36e37fbef","6eb0dcefcf4cc9088174209028db705572e7fb7e38f3f93275bf6778afa2cd19","fa572fa0d1b1b1a7d356d5942b1d57f342880a68d1bf1ab5d00490221c471c18","17694dd0223346fa0a17e87e9ce00335569166368357b9963571aa623c5e3c27","207d46e6e557df62460be9021502fc3af96c927cef0cc5add32cb6f2d60b2e23","cf0cf6556adc9178a6251d9b12837e5d514b805cebe8de6d7a16e1e4248ec1ef","3d3d28a294ca0d5caea84d58eec474891dd1df7015f8fb2ee4dabf96d938333c","0b5b95f3b76e6cc9b716e08274d0f7486bee9d99e42dd6a99c55e4cb4ff5569e","94fb6c136acee366e3a4893df5ddbecadde49738de3c4d61a2923c6ada93e917","95669998e1e807d41471cebed41ede155911da4b63511345571f5b7e13cbef9c","48cca9861e6f91bde2435e5336b18bdc9ed3e83a6e7ea4cf6561e7f2fee4bad6","b6b8be8a70f487d6a2fd80b17c4b524b632f25c6c19e76e45a19ad1130209d64","76d7fadbb4ff94093be6dd97ea81a0b330a3a41fc840c84a2a127b32311200e6","856a8b0060b0e835bccba7909190776f14d8871b8170b186d507d3e12688086d","e39aaeef0aea93bdda6f00d27ca9ebda885f233ecc52b40e32db459916f24183","14f3c0b1b5e6adac892607ecefc1d053c50bc8a5f14d05f24e89e87073d2f7e3","f877dcc12cc620dede9c200625692cf614b06aadc026f6b59e5967cd2e30cbc4","5a37547f8a18bc0738e670b5043819321ae96aee8b6552266f26d8ce8f921d17","4d3e13a9f94ac21806a8e10983abcf8f5b8c2d62a02e7621c88815a3a77b55ae","938cb78a2ad0894a22e7d7ebd98cdc1719ee180235c4390283b279ea8616e2a9","84ba4c2edb231b1568dae0820f82aca1256a04599d398ec526615c8a066f69ec","cd80a8f16c92fe9f03899f19c93783dce3775ef4c8cdf927ac6313354765a4f2","25df98970954ccd743fe5e68c99b47d0e02720e2bf6584a6de60e805395b6bf7","251983cb99df8c624ca1abd6335ca5d44d0dd7cdcab3ef9c765b4acc79fae8fb","7c4965812974ebd1333cb09f95c4a3669e19008dfbb1e931321e08ae1f7cff09","31d3f4757bece74c888df52c8bdc4373e3f58deb518000051cadb5e85deb54de","a2be4cad298b3b474a0a71c1dd78a8bfc70b322f44704cf4329aecb873687a3a","ca8b04bea4ba551b47ddea18e385e76e555a9f7ff823dcae668d05e255fdc241","de0d160ecc8e643727bb93018015ae89510d59b7bdad4550f4318fba0a0ce2e6","acf3fff2afb5ceb54bd5ddb697b1d337338e3c23b93385f100a2046cfa700184","a2be4cad298b3b474a0a71c1dd78a8bfc70b322f44704cf4329aecb873687a3a","15c7f60f69f663374a7bc57afe164e70e3b6310bd1ee476ba911646b09c7852b","d71becf074ceaa0e91558fe51ed8640fa83a0fbf45a31e8069716edbf38de99a","ef681b070e9f3b9b28f1886bbe67faa12237c8d4691604a1f1cba614a10ef2e1","b15f5e077245fef1ecf45327fd94aa67fc4da288bfd42bf1b8a80f297afd561e","b7091d79a6e7be7bb10ca9477b6c71db4cf7b44f155912266ecfba92c1a126c1","e585a113e0abcaf3022f5cf1318e17f299f0935d7b389a23dcad9074c3922946","ae545310dfa53a7b33f574e621b14f423373dea930218d2ad290b4da0c5e8e50","ae545310dfa53a7b33f574e621b14f423373dea930218d2ad290b4da0c5e8e50","4428e4d440e1914859e8aee558f90b4829c6a45b717078490dfc2d297dcef46c","ad205fc7116808509e19ee71277d8da74157751d7388f0134d91c009b987f69f","4428e4d440e1914859e8aee558f90b4829c6a45b717078490dfc2d297dcef46c","8900bf61f4ce9517567cc6c9e41638a5bd0c4a0e9cc094190bc07644bbeedf24","cf5414a97c345c8f3294e0513a7613f5a263e1b56b3a61b810ba8279716fd38c","7778bc213be81351a01867789728c7780467c84e3ec94cfcef53a4e2dccf1b57","41a934d2efbb6cb08b205a76206fb015ebda692db4d78382ec5bec9689d6f4ac","67881ba5e3ec9746193075b020876fa94a1437fd78b2e0ad6351d11e1062941a",{"version":"42b12d23ae19258081d46664270067061748dc3450a6587ce0f0998cdfba28b8","signature":"24f6ccb5851574cc42914843b881bcb8b8e8d1ecadc4ce4b4d431890554a9284"},{"version":"6c7005a836d02d9c33236211e98d2c4af57c12e3bae66f83d1da40bcd11e6001","signature":"aacb92033c33af740c57f2401e6dfeeb91a58caebfbada7a281f0a35dc889502"},"53477a1815e915b8c20222a2ac8f9e3de880a1e8c8dbf9dae529b3d2e2b4a53b",{"version":"f2737333b293ff2d42ff17998b1dfc155d40463e2f05bf3e5698bfdf134c6f96","signature":"7be3336b7bdc738a07e00ce2d1dc4d132b57fe1ff4b6a97c5c5dbd471c7b8a40"},{"version":"f48c6fd014349ee9521aa17cca93c12e2a51f72f05222bb7d398d0a65655cdf4","signature":"a7f2275200766f1ce46682fc4e39615f05e78e709aec9574f049c68fc490ea83"},{"version":"1af77a365f5ee2f85a0edd6fd8061dd90cefce8017f9642b44bb091992ed0979","signature":"3c31e4096c712f42527a4770fee3df492d5ef296797171bea9424e6f4270ffd9"},{"version":"64155cba2255edb133186dc38f9ae7e31bfde3a0a64bfd36bd80d6992b4d4eb1","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fe018bd53628682db6b2552f554b0503d3272c763846cdc5ab2bdbd17bc94c29","signature":"a0d97d6b3c81e895496aa4cb9f1568d488bc405ce889a9f5b9874a58c2ec1b75"},{"version":"443a7ed9e697fa98a15a27c11b9524fd00fb0a3386d4bd3a7adc8cfbd21bbc90","signature":"720c0f9c4dd7f5dc8fc3e3995aeff0ce19dda8e94dcb4926c461fc8e174a15c1"},{"version":"983d7c76165306ffbe34aca54ccc5a28bb9adc3de3c7ad4c290c152b6be0fb9b","signature":"128f8ec1b28d519cfc7bb4576b37f622343e645a139d7cf82848512da2400b80"},{"version":"c5b09486cd3acd1d6a657accf28d6ab55cd94d6d1825ea18f70ebc3b029a23dd","signature":"cb7eaedd6e9f32b753cc6329a9117df87f367b2fa7eddd1880131af3002b3d1e"},{"version":"9cb62c60b17c9c5ea34e265520ee4f500120edd0f057e5fd405477603b7b41e8","signature":"47838b28e25577aa79b633c16815c3eaf164959d1d40114af63413fc0a269cac"},{"version":"655519b8fad7aae2ccbd61e97ff1595f9ec1cc2fc6a2fbdb3512ba0088bd93d0","signature":"be0524ef9bed243857bf0d66a5e3927998ad5456161dd726dc6f49113a9b8ee1"},{"version":"0c8f63b58b132cc42d0c13c350a5a0808d5bae49d794a2e856497eb08cf696a4","signature":"36aa06e8ae660e428e7ac65557071c9d8aa4b5b065d5480c8036f91c21cc3c10"},{"version":"d4d56f8f55f4a7344991f594f75e5b0040b95760d5f09423162b5b5546c99da7","signature":"e7e80998f237d5f734f8875911cb234eb158a60c3ff46122b2e85961b1ddcebd"},{"version":"7b49940583395de772b7be582d7d484e760e79d1cab8857163a6756634a67b87","signature":"2d3ae1e46e5a761aad512f9f738eccca71af54cf0c7ba45a93f8505bb9ab8a27"},{"version":"f5bb9faa5c24efdef2e657f6b853ba04ef91603375d6a7f35aa8f9ada8e6b47e","signature":"7d4045eeddede0f90060de7270cab973afd35028e5a1a5ba34df373309bf9796"},"ba63131c5e91f797736444933af16ffa42f9f8c150d859ec65f568f037a416ea","44372b8b42e8916b0ab379da38dcf4de11227bad4221aba3e2dbe718999bdfab","43ebfcc5a9e9a9306ea4de9fda3abdd9e018040e246434b48ad56d93b14d4a3d","0e9aa853b5eb2ca09e0e3e3eb94cbd1d5fb3d682ab69817d4d11fe225953fc57","179683df1e78572988152d598f44297da79ac302545770710bba87563ce53e06","793c353144f16601da994fa4e62c09b7525836ce999c44f69c28929072ca206a",{"version":"ff155930718467b27e379e4a195e4607ce277f805cad9d2fa5f4fd5dec224df6","affectsGlobalScope":true},"599ac4a84b7aa6a298731179ec1663a623ff8ac324cdc1dabb9c73c1259dc854","95c2ab3597d7d38e990bf212231a6def6f6af7e3d12b3bb1b67c15fc8bfd4f4a","585bc61f439c027640754dd26e480afa202f33e51db41ee283311a59c12c62e7","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"b2e0aae7d6c7fb8446a5184a5d606b3efc7f1cfb81dba3f35312347e55f3a208","signature":"43301d028420b51cf11dc0e375dee7d03c5a908e49ce85e16793dbd1d5acabea"},{"version":"9679dcc0a8c919e4be7e65694cd948fc1519779d33921eb262adf9ae15c1cc61","signature":"e9629b89f6cd33a040577695d89edf882e66287d30c87121f5fc07f404decd25"},{"version":"8c7db008afc80d1cbf680ca099602470b475efa448a73c04d521e96c5f0c32a7","signature":"4a5d04b576701faf0a7ec26afa6af95ede51df1a79f188b141ec0327d2f44c19"},{"version":"74bc7145378421e76b3438b4d1aad5cab5aa9a3e66dae3da296b8ea22f88819d","signature":"3ddc4853bc20febac6438170846589e0dbdb6b70532d0633ee8638447079d57b"},{"version":"5b71c39e6e71f4e80e127954b6207f74206fba50647917d653e28c53f3d4cd2c","signature":"c2b655372b244ea313900ac593b0f71acb6a8f9131f95d3a5508db66b11b25bc"},{"version":"e638f0c5ce3e094ac8619f53d541359f7129a505b48f700db8200927792a837d","signature":"250b17f566704f50d551be9b79bfb772308720d84a5ee77ccf40496f95653cf9"},{"version":"3a523c944c2cdab65fe7d8920b0959f4867b98e82c2599896e314f74657216dc","signature":"080b8000aa47959cc5a3eaf4da97b2c75d6dd096727b208d509de6e1b44b9aa5"},{"version":"11aaac515797bf48e36770834e59f39e68ac5eb1a8805710a561a9592227ebd7","signature":"2ceb2bd76fe1961a5713fce82c31820aaad04e75dee63272cd62fe858e1ccfb7"},{"version":"1f93f331cbefa9ee6666aa288b268e9c44ba22dcfec41a847e05eb9ee3265842","signature":"caed67a82a8fadd14b201f02d12b59da59586dd55c667e771f69a5de29f5bdfe"},{"version":"7a8221e2f4e0e814db9911c866d536579d0fafef22451f923f21572a302dafb7","signature":"461dc9df03e1d68f327fd14bdbf7a240b9a49c7a88c18934f7b46fb7cee2a359"},{"version":"d3e820308ac6417b27383d63485ea268fd5c7b90b66c6978ad11835948c79fae","signature":"0cdefdfc80a2f3c6d476350defe3adcf8857f2bf9779e9b25f065457e0a0f4c4"},{"version":"16e3ab52ab9f092ce8c8ce2557b34975e86dfefbafbb243e19ef4cc2e436d904","signature":"bc2441a7f26315b990737d2537c8db47357b5e7f662dcd8642c6a19a51341e5d"},"e4ffb6aa67b82aca99315bd54365892ece9ed76ad37667a8dea478b7ac9a755a",{"version":"bdea62e2a0e1c05bcba2a35fe701bf7f7887f2cb0bf23ea7f5ca2f7bab859fc4","signature":"9d4d5551b9156742c7cae67fa35de4911e038fd01962205262d6f6e75b443f2c"},{"version":"e4c63c1c2623a7987a46688b69345c5e46dce383ce3fa24d7ad32547c618efdf","signature":"967307c28172db4d649f6177af43126481a09223e4fce1c34f21ad3f4d7e0e8f"},{"version":"dd1847467b2c751a1fa419d312b8aa0ef0e8f0f1811a8fe077654277943877d3","signature":"d9e67f300d467b257f960334e802575a950f2774cb3c7d40ae07bf9c60111f57"},{"version":"b709ba89711ff1856eec198f3200bde1301296f40ab90281058f2b1257299ef3","signature":"6e13107bcc4f60ca74df9d4ab7ec54ead6f77f750bd07d0ce8dbd7e2490431e5"},{"version":"5ac0661e2f45e187d2de2e42ade372711f7b412754447d7815431a4b0f42fd4d","signature":"a9df2d67d817cca4278e54cf663827a674c30da76ae9cc6154a3149e10e711c1"},{"version":"3e618fa28e561530f0026860ceed689f6afbedd3e0994267144fc7f82fb01919","signature":"762c62245e9a8dae79add8f91400b2bc7e3e82b98442991e7270a906086dc7c1"},{"version":"07446de34f4cb6e231c6c4e40d48d6a6907430ff3f2e46ab4ae377437606f8a9","signature":"e2cbf9e23d92d1c16bf4d04f5203fc6a6e3c81f2fc3e244bcf61da200cedac6e"},{"version":"e4e15dc75756b73554d8155004f09ae9202fbc83811150212ffae91d9cbc0df7","signature":"7efd9b84d1627e92293341f3f056a41be68f41d27142ef689929787a47a3fab4"},{"version":"b7fa42df7d83825823e1292861d57983921b7abc41903a82cb30083c46da44e6","signature":"d07254bf647df631655727d6ae0076fdb6aa9d771ebd458a0b440301646d45e0"},{"version":"ecc929651a1bf28c7e8caaa59a4ed84f57b253b8983550b2710891cc577cb6ae","signature":"5f6016264fe4a3a880ef529309222b86349b2ed70d94c54b7f5db20df29e48d5"},{"version":"0df62488244683c22f9dac2ec239fd7ab53de14cda86fd7ca27dfe3e6635e9b7","signature":"ca729b2464e676fad616818d10497f48accb4f90dc894126e03231c930c47eda"},{"version":"bb410e2d71893ec2fa13deeed06c64f447f156de17a0c0e9176b8c3f01ec6b4f","signature":"1c9c815dc4db6615b6a789b5be0cc37570ccd797389a7e0920bcbae557d6b172"},{"version":"bd87cd084db1dbd43f8ff07125c3d5066d4c174b9378078ccd860d88e1f59336","signature":"a541689bb876e9305ac7e640cf8c5918e3a2dedbfe867cb9e5a33ceb9ca4477c"},{"version":"471a6a1604c1331e318af6f8e77066b9b2d24cd97259a742be0ba63ab882ec2e","signature":"a18a67da1594f6389a13ba8c8d0bbd4f280b7993793ee545fd077c7b1b588b36"},{"version":"79126e8ee445bfad15a4683ce47126206229774efd1402983c09da38ef86aa0c","signature":"31d3584078b834e1edf25d95f336923fcf9452b3700b312c1efa916d3b2cb7e4"},{"version":"92f43c2518f3d497c63ce195029cbbbc99033014dd4eefd6b465cb0f51f2a29f","signature":"3bbf7c13e6e7b0cd2eeb4a6f2ec948a5d8c278dac6098929d85d0d5d943fe1ac"},{"version":"3ae96585c7d91e119eb9203a0235761a470cce36e0dda1dc440d0cef7a76d7ad","signature":"6330fcaaaac2f9aa939eadd88d82d1a85b0b6a6e69a8777c82cb7429102eb97e"},{"version":"9084c67172018fcae03341af846e9fc9b036976697bb02622a28d2149bb2aa12","signature":"979f78cc24ed146ffecec0058da27d34791907ce7f177d6cc6c9f414b103fbcb"},{"version":"3275a404688f5e3cafc43658c0fd3a92218eb52c605cbf09cfb22e8e514e4f9a","signature":"90ada2236f524c0adab35ff74331789cf617dab778c63a8ab7b80d6b8ea6bdc3"},{"version":"48a2b469f551a1a824664a997f26d041495958be2add7d0f19f14acbb47b0e0e","signature":"571bc9220c668138da0ac013524aed5a0abdcde000eecfa07ff53fda536b14f2"},{"version":"70d97a194da001c87164ee0b7138f064dc9008bb80bb3d3cb8286e87b42cf9a0","signature":"53b3b36c0f65690f7588cba027d7a9c25bb2e57415e7f799ae2068f791ee27c8"},{"version":"d86b1465403d087dbc325c66b29701f994c94a9b55540390b6b4a3b2fc7f4906","signature":"bd9f2e5e6ff61891660f381bfe9f68b91e8bc0d249d55bc86020f5d39f35fa54"},{"version":"6ca104be6c15b24ab1a19e77fdd6820511c83f20b1cbade7777fba6891853474","signature":"da3444712df0f75bf5b818b041cc528bc155c79d502b0997408c0918cda9ca8f"},{"version":"4bfd31b5e0391134b393c9678d530f8e56fb0e365214d423ac2a47f524fec4c8","signature":"4d697749545a618af667d3055640a03dd8289d7243cf7ba10825b5724fc9b25b"},{"version":"0ed99897decdb46d00ff9c86cf58e84887a49c5bba9bb995c02740b1e25db275","signature":"2bdfb17ab5cddf8a600c073689672c7ba149935bb174cd02d0c474886a8bc2ef"},{"version":"c7433a37d0cc09fa979e28285c59ac62ca002b61fe7d6e42c9959f9ba65a551b","signature":"f5cffb8acadbafe26684f7de487ce49687d257811948b9e51bfe512060575113"},{"version":"dd163bb628455b6e21327b09f3a5a8c561ba3a322653b994b81fb78677d49a54","signature":"be4f993bbe78fa9d29b45ecdc0cff6627e76b4637dfda546ecc293eb6ffa6730"},{"version":"ede6f82e3fb2456a944ad1bbe95dfc7d9a7225f8e88f627481733e6f6d00f0e7","signature":"d94e0fcded4ad578d70c0eb77080b70b7f8dae238a5ef1671b7bddaf91c68818"},{"version":"155593a15840281e8d5a524cf598e1936b9d779f3a3ed9ad96f13e71b4f8689d","signature":"ffdfa1ce3aa203730a305ef6c72b488f5289e2d302e4a5685e6d02c291a5866a"},{"version":"c53e11b2b34ad03cddfc46e181da4cd2d5ab5201126f6134eac03b1cc0a02a58","signature":"950df39df3b15296df4f3f9e9bcb9afb3b671088237027b0a1b2e7d93c9cccf8"},{"version":"360822186b2a5c6fa0546d794098416574537cbe55304df2152349945a1b5bfc","signature":"431823fd0889d3eb363763b841dc5d3c2947f713aa87c33086a83f083e784f33"},{"version":"885fc34c13ef9323186a28fe6921ce1a0d62bfdee8814c19dfcf4eabb05d8c40","signature":"b9b7909a64afb56326e22b22dc33a141e54d62440af2817e0a5e00e828e9a5f7"},{"version":"811ec9c8c5579faad3e0ef2e3cde016679b0d657786f6440430aabc4c5d0398d","signature":"0c1a01a6299a44cf6d16146d6038d987f59457af356499f21a578448ca110abd"},{"version":"c44dd0bc8be5062834408c6087ef889689a569d0e878f6f9f1bcc39f4e33f8b7","signature":"e0fb7c7d3ff4db0511c1f6de083c3190c349033406b23b2c50972ea4ebadb558"},{"version":"f4da18c9eebfca491a55a3f72dd9284a268a6a23793447f57c9c84eff7759297","signature":"42dc1dcc5b1f926450d6f8cc760ead9fb2fb5516a3b5cc04e8ee3ee2632bb63a"},{"version":"657288bd1b5ccdf4de260beed376fc36d73ca714b620fafcd8ddd8b93aca9830","signature":"2a66f568377421e826fe7369bd31c6c4f19fbfe0e0d74a6ea0c637e0af73fdc9"},{"version":"4b3a600f3e7de0ff039a05b78925eb661193abff1cfb599a24241c0e456eb5b2","signature":"637eb0eb85bf942b402439fa7dab641cac41b39a590a796a497405c03fa79be6"},{"version":"8cd75a3f2f475b5b74b06e47c6103c3500900ee87f610c0eda6142c8f751188b","signature":"6b6057daa62e62f5d85012b7f44489e8d5b42bedfd9a3a21ea66ecc86862947d"},{"version":"2bdefc593ba04c3b6f0e4bcbdecfba3430af803f1cf52eb413af56e0b5a9e6d6","signature":"bea971e30ae3f2e3adff90eb9403d0948bda6a75a74f2d6e91de851bb34e4a60"},{"version":"8cd3ea64962d3af2813d854e6a102998670072f842b9f721394e821ebaf500aa","signature":"14889838614301eb45383db03b8d1639d39b934e44c3e42fe4f1c84ab0f9739d"},{"version":"62369afa3125bf004f5329e8f6bcfeec22a5e5150f05fd949a0df03cf914ea9f","signature":"8372c9363817ef009572541d6eba3275b2e527cd9ac83af0d93ca55763f8c76c"},{"version":"4475b6cfbdf4638dcc9fb2c0efd83b38e420256fc86488c390fd63fb17c3c24d","signature":"a33a8caf18ca17a4c41fe425ff84a002360dc8ed0b6bc39fb5003f46667c4d04"},{"version":"4f14e614d2debc8af57ec0db13312d540b39fee19a0267ad6bc6881550e3d308","signature":"cdd28eb0387c77b7c89e1a5da0b5d6ad503e419b0114b9c50e86a824cb04a583"},{"version":"810f4aa4f06bc4fcd387ffbbd772ae00bceff377e09361c17bdea40b62dfad07","signature":"98dbc402db68fcac5d934a648ac2a465b4822768c11118bff403c42df438e2d9"},{"version":"4237a77de4fc6ab2d85049305b8fe3c0741d6fb6ad0bf8344f2f67953e680c8d","signature":"f18f6859f036784b1398d78fbec4f43b8e8fcb37244d31fdc7110d626363b570"},{"version":"2a0b0c9b8cf14d940e681b2c4027a7e0d1ab3f5997f0f7a140470a6226eae76d","signature":"77741906a04b1db13436e1fd5be6cb1e6fb862fae40994d4f68ac747557eacf5"},"a631a746bca7583f15fe25b8ca5e8ef4c43dae89625d8f80fd3d9a9af0571b19","90a4071fbb2ff24e48cbf76401363f8facdd7363320e0a927ebdbfe8006161ab","4d03adbf48a9a0f36d3f9ce33b968ea8e0af07e32333bb5b1dc106b69ed9381a","351299cadad07cc40dddcd6bfd60681de6e5ecde9d84e4d2ba2303171f5b706b","cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","3ac40516c33b87f751f7507346933081a26cdb8a3e11a6b3aa07d23f803c85db","4ac80270b6787c2b77a2d98a9714a71f4363c24b5890314f3ba582c94bfbe779","14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","096a67958cdf1d95e780cf723d60e26e6ece748154feb0f388776d3976ecdcfa","ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","d243db6b25788f439e7e2f03c05688e92f46764351673bb0e7b2f3631232e186","4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","6c2af5c8d77956b1c82e11ac2386a3c15be42f758dfb597814d49dfdc446e8b2","a6e8cbf36e9d911856980c8efaa2187897919ffe897a7a4030693a2eba992279","3638b0b054444fac6ba525ae621a19f04f4c57913fdfe09597705420ab329e0f","fc9d689208e575600e837246841cdacf3812beaac77237475d7016422ba86bf4","537387829e8d47f812bac08196bc811c521ca53d28f53ead67c5673bebbf49c2","0993f3ebcf3036ee3b274b6be8e1ffdb8c7c1c50db445bac76734f152904d5b7","a348f5ea72c33f6d2d7a98522858ed8f70981118000e926f915fa5c4aafbd7db","cb849466df885c46e229a616c9c8633537fcb44f2cfc39069d8dc0dfdc31d1bc","a4e9e0d92dcad2cb387a5f1bdffe621569052f2d80186e11973aa7080260d296","b2dac7c80e9f6c821024e635ffa39f2ab6def88b2d26072dd2915b29e5802585","d0fe3f291ed904d59025ef05bf98f1226b8814f924e6241512e21488b03d4cb7","8cb5dceed5b9fb8717b93ece4ea5b2adf3fe317d0f01b7278e5d55f19a7f7e1b","01329ca0b974c12cc8a198ee6e0e7c8cc9c305816dfdf0e7d5d08360abc34e13","f8b0e609ff71a048d86bf0c22a5852d80a762c1f3073fd87e4e24a748e645d5d","e24e97519fb282732d44ac765d18f90c1022927a952bc624d58fb7ab2ea11992","1edb00a6d353c9222891ff6cfce4dc70fe7cd5e1820456cc7e5c427507f39ac4","fa5d0a3ded577f413e3e1bd04e59e2b1c0acaa826bdeffe138b86b513a5d9de4","441bef2be624d8ab826cd8bc5dfa29d389b83bfd6a6f026a9d8cf4c7fc6cb20b","d877fe18289a4578fb34ea19013e3ef8fbf0d5c7c91cdef9bcd57e573874612f","6aa9c6f506b53c3a2e17006fd9b9d518f75506394daa687a3dd5e48f14fb8c0d","2e0b7b4d1db2d8031ef7e7f0bb8caebf0c3a5fb068dc1e79d28ff5c981185450","ec3005b118e0ccdd71203d774ac3557ba4692c6d2f4b7be802dfb8832054b743","b27065cfce873cd68383d574d64c347f473c25dc4619c5d57428db1758c17fef","4423f0146fb37cab9d4a722a3df77d195a81412bd9f2bef0f927469ad3d07e72","81656d14d40c277b25b02c7b68826b2978064e9eb7c5288e83d1c1941f118cc0","30b93c0cab303910b02829a4c6ec32bd09a622089d5f0cbc07782948ce8954d0","c77b7782fdfc83af4fbad71446874183d3a89be9a9d81b8114568b2a3c8e3ff6","2526683537bd5270fc8c828283530b971ef20fe613da53f50c7670c8102f8f7b","0dfcbfff816ec838d0610e07bd6cf004158cf5e41a5e046d99cfcb70b2bbc684","0d0c9f06f0efab0c13c2096aa9717df8a8260e6a5c804d301c605eefcfb193f6","11c0df3d2e349a7575427aa1a6e391a5284cad25292e4cc74109a1bfd02765fa","9dacf04c9c542d2969038334981d87468b87320e99e8cfc203a7e13fbea48231","a0c7e388df0028192f174dab2f074c1cd7c8a79b56205f0c0f91294915d52df9","a3bd20d0262d0d4da24b67a38629c92cdf1e0c67d610550fd0c40c23c2c5a331","6311c547c0230efd5ede4ece1f4ac5ecd983c3e01073bff7237324c47ce0c3f3","32e3f90d661c71be5aa6fac5a6e3b531b2bb49694c724e446694fd13980c9e66","986e6dcc124af0bea9d3437b3c59afded8f7a1bed66514e0bb7924464a0fb992","40e047c6d798ffbf2b769e01bdcc7a7b8fe8ae49b3260ed5151c623d77c2155d","b537f57f873438e6656c7f162939cf116a4fa3575d7a46fb4cb6c0e0fd563b5b","7af11204419c230069f9bed9b3388bfe50ac032a91ffa3501f8b96d0593bef8a","0f2fb2612fb867967bcdab5ea59bf874e19b3b7a8d31e95ae5c49b16b90ec825","4eac8a79f63e27930d509fbaf614cf0c779f3777d23c8a06023867997aac09b6","f3ff1cd0b656cf7b78c2c166c9bb7d4d2be0d6509691c64a7ad11cfb9fb65ac4","d6a87d509be5c033adcad19dbcabca9fd4ecd0114b3f44e45d8ec75e9f392334","6d9fabbf693d36d0281a389a13862ab2b20d2c596292fea0f884dffc8acacea1","479a80820456c48c5e7d1b917bffcda72efa4fc93b2157b72d01d53f6e524f8c","0ddd21a422292a1433c0acb0953b95dade7945db6ad10f47f66dbc3e9656ce77","259c2e20c17b8884c5854ca8e211abc423229dbe3ac4f03fa0c7c29bdd3c5f7f","ec47dba399069e35052531e38011dca52fe56de0ed8bd96f255e05b0e02da6d6","cf9c2ac8e0974422223b788cdf400e34c7d9b0b2ccbfcceda7084ff0b55e3048","86f5468cde4828a20f2dec5bdcb5679105bbbd08c3e49c9f9654af190ffaf32e","864a1d1df8b3d7882ec6f7050b26404ebc3e4bc9a4187f39a91aba83a13fee77","8fa762cbd08bb96cc522d04427ed1dc8af9d584cdab0eba21f33898bea6af91c","05d2e21a179498afa4a9e822884830a93e3e43f5289bc1528a5910f461b765d6","ca987d92730519fada583cab88c43f20798223b2bf97b37a687ec56c962c30e4","50724e348120add710271879b067f7afe2391c12b4cfb5ebed3dbdc59f8df800","72325f82090a50015f77c79b1f13b76662e8530beb8e29ff79eebe37c5a2c66b","3293b005828fcd38f66941abb78b9610327caa62709b7eea50e23ff3342022b5","b0de3f7e8e950bed4c4b96b9326691fc84eb880b10f632dbbfc448c7c2833789","5684a8a45b5049150ae8c8f57cb1847be3a7be01fd69aef2d2111268ab4c8a69","47a10378e788231bc7fe1b5e1a0f0f0b742381722bd4d295825f5cae20479a41","69f41ba881ee73fb5f48390fa13f993437899c2c9b25b00f1e820824e2490c87","01c186e3788bc0bfd4d619555e2e15bddcc0eceb4cd256e476a04d091ba2abbb","48b020d8433eb29cc297ec5dab4e6eb62957ccbd6c1ee33d4ddb7f73fe50ec38","702a76f2b79cfb45d8a81237603017aa6c70558193325fe7cd6076023b6bdcc4","d40ddcf479ff74d525dd3b3a90c28762fd99d7688082335e2dca18cd096ab342","b357042bc9add6eaa25183a6ce1d0661f5deb5bb5b209ab614d23f5e3fe52e1f","6907854996e99a80ef64f4e8689e0d0dece79a2cc64699bcac607c5cffe3925d","f5d3367b89fb560e968721abbd5bc0e2256e104d4a15ac866f70e1dbf34e1a7b","3d8d99469fba4dd7c9d0a16c846e2ec09f2387096e0529580303341d7abd06e1","ac8297169b675b961b8f59114ec8cdae74a591288bed3dd2970dcb6b5d848509","744248d2c0feecd6166500b1591dda9f63b76fea2785027ad577c1f860b405a8","215bd227b92ae7bd162b307b8a219ee667579fa67c923a9453974d44bc2355f8","7beafe4c8d8600b6551c3efe0225e9e5b8741c2d4d157d0cad4db7a15e2d9e85","f0a4ec97e2e8780892513271b3085efa3e8db003517de72154777be6124509a9","7e6cd924c1efca33937074b64854f6d3ec5b5f43842b069ae1d57cd06553afe1","b024ab3b0f27a2f7ae139076cb0166a33efbf58beed2d3fb1a3e0b9023e714f5","882088f2e6c901ea3b9ea2d941adf65b1dfad2e67686dc8ce505da93b4b5cf49","143823ff5956604855b6e46763c7dac8acbf7d54df880cbafff282562927efab","be17eb6f5215929ca1dd4c99ba8c60a1f9dbb13c7e63580a3ddc2f016eff37dc","0df99d484a85184c5974ae113b9391ca3f53a62f75b14c15da86bfe859422306","5b7a6ac7a4a61a01cc56a882ce9202ef934b270c36e41034bdc2503cde62fd09","312b38017345b7c769d675b4f7d9acf09a5dca56784e4c704d7d4cca8317ed63","352949223d08be85d2246674299073ad656911fff4505856dc5c9b5b1333597a","9094e7b339b2e09870b2ea8d2b1561d1fb17c1949612b88353b27102cc03bd04","92b7284ed12666a4290dc253f1540066d20131b516d534e846d287cf9e35b181","f3759ba9ea4d78ec2562b8f07fe9ea054ff1edf1cf5410046c47c64806f47644","6d110d085d15792d3bcc0e05f6db2c8bad9c1cbe5b30bb53838d8269cb6035ff","15685ad1f26ffc1afd3fceb74e58a5d11b1a7f9fca35ae81969bd108a1fc7314","3733cc0202a64bfa4e475770e84694ed2eaf4771e1c20f9300ee5ea401fecd05","e4644941a867b6f8ad52590559ec5bb34410e7f0ebb6e0bda63a9f78778aea2d","147dace74af90e3d51bcb7d2719512cf97069b62a95f6a83d187eb05e8485a3f","3c9bc7d808e38c2d71af4288351040b97dbf592b9392451c3f0c804a7e52552f","0918d5f43b23422df61639b25e17b4b086c0c45e77719fe59d11582b48feb916","333fba359eb5bcd2a008312f3289b8f5c1bd9033a81496cc12a0f9e694a02404","073b28eb2fe1e92b714c449c3edfad54583eec4af09846d50f67c419d3f2487b","b29703e5b91d9502917acccd6179fd1ad9cc4fd96b8c9fde1b03ee54fc985e2d","3db30b38990ed865d5af9df7f2247cd6624fe5f9369dc071adb37606b37bfac7","bdabec662c0472d2edeb82f9dd12410174c1715d24b8a354de035cbd5f4c9e6d","873827f0324a23c20eb294026c10c90c65c4119bff0e1c797a3f39a841feb4a9","410df7da932c7bebd2751b7d057b45950a92ec0ff387324faef064ca34a1faf5","eeaba88a4b277cb299b6bc6fa40debfb1e3797d4e27f8a6e8612ca79464f4ea7","c82695af2fc1283cffe65edec4f696bbcaa07fd3f8a1b09bf7e330868b3c73c5","da899b9ee46d3311eb48bf81f8aa674601e987d77a536c4fb960437bfd7fb912","071ea0734e2c89132b62c95b8061d4c4601d00d483e2192f1285694e42b25ef4","f86952de60e0d3cb154a261b9fee5b48a9254e078ed1edfbeec1d2a5f13370af","00ed819531f370e6caa1900b6c941613d9e0e1dce0cc29db43bd6e6c44f1e2b9","4d628aeb41e8c38e97df38e9c05e6d677219fcbcd3070bc48ba4503b9c13cf05","5999a2a69d49a32805c696d7bc3d580da026c44ae0d73114fedceef73bedcd80","6b066fcec86a45f64bbc76cf462d44ed1c1fb3197385617837ce95849d1b8e11","ec394b045d221949b939c37aa631aa64509795b2ad46e9529f2972cc46e4249f","3c8b1bc22a1d2c1234c75f45f5097a6e11082591b203063a4fdbcc795ac27de8","8f67f50978be5d0b7a53bffdd836f0019b5d8df04384051a7ff8f4db25910e8b","d9308f4e10eb7d8c59e080e1a5f9a75662beaf264ecdb2f8c809aa8a01328cc8","4deacc4e614c384babc527a224198f5cd94353b609fcdf71f7c69d5aa38f5454","d8708ac688b158dd885203048c310b20217c04eb88546bd45e11e01c40a9ba92","d792d7e5a7283e9e7333273c2684925b9b1fefdcb3619874a102df5b59ff18ec","9016d17c0d55be26ded6e707a32204bb2ac13897aba283adbc0fb44108b24b59","51fe31baa3a111305e9c5119d33d24dfd594d6472ce43deb28f1bba617af2506","d63405e36cba33a559d02597ab805e10aec80856d7085ce23d89b7b575a78eeb","9ff763fb8837773703523ab729aca082c20ba9f82bfd7b7c155793a2e29ee3a5","510590c312af461071b92b32cae4bd5816002c8fcec2b998ec70aae491824b85","fbd52d199ef30bc63a39291ddb040ef1250f63d5c4b8f90ed37119b0f255609d","628039d30340e106d08cbce0d717f0bfbda4f3116acc254cb25f43d5f27c3ce5","d1f1cdc52961e0e05b1110de681b997097ffda00a8d3cb670d274b27c5fd9dc5","afcf42170a987cb01534f46207a2cbcaad7ab3f89f9af14dfa4a839a90ab39ef","c5165b5bdcaf4e1e958f52bd82815325e0956f56abdf3be17c4ae31979c74c79","ac51e0049f2013a480b5f55f860ae7cb39903f7b95aef73d6b7c0ef315adbd53","6981259fb81554e2fb9dafe201b8ad0742dc2d1c45e90cac80cdad929c408771","6e307683ac8f59b411fc38ef7cd435d500e48977b89b96f8911c071c08bba9b8","26017822fae1119a81969aa52cb76965e7aa64e8a33a7fab81952073aa0c9a25","93b67ebc9284d26f85e5731f1a212a21cecf33ac45bf6afa67616505a995e141","f60843293d66d07ae96b02e17a9c65f3cee9c6b1d3858427bef2bee215aded6d","5412eebc0b631aa7a510a3f2f162a37314c00be26263e381baa6ebdd5a961588","5b3dedf4d085ed31e26d9ade7eab41aa3f331eae0e3d6b9465c07c21cc9b12f4","7e4fedd12b30cf9f168be96cb60de7450fd055e69f9e1828722157d6e2547e53","487b04703d560ab8345f28d8e42323d2f153c966930772b6d5ebe36aa72c9a1a","0ae4c8dc857b82e3ab26461fc6ec0267fff307ba7eb41ffcb9f7f7ff0efc5805","93ccf42a9e93ad2f111b6edd6efddf081ea040e0e0473084d47d6c57a9a32594","ab3f61301847b31ccbeca5a2b1c1d50513a45cd407ca152deaf0eb6704eb261a","bacf2563a5f250bc4d87022ec1bc3085b4d916c1a331c49f4259e8eb026f1a0b","5554c30dd8d6a812c83f7b3cd514ffe139c1fa7234e8fc2004f93df934d5fa8f","ab2f09c444714fdf7ead0218a7e8967c97a9c15198ca05f14f19a8a08007617d","ce245817c1423e5f19006aaf5324874a89babd9d4485cfb0bb6800859da90d06","9b8ba93c916f17a3013b13b6de214785d02fa10fd0dca619d1883d675008591d","cbb948817811f7abbf91502469aae1831b087d86f78be7f39f0d561072a03fac","2bbaba5b81417afbe71415f37fa97076a642c4ef751d5d2a008e0c0f13dd378c","e2b75888865be0353574d7b8173a50036397d3b2182c5b2639533fa2af01e9c0","2fb584e4ff8b104f6137de0150eb63729755f9c5b8aa7f238d2204b290c44288","2831bb9ae22d3ddc254a8ab11abc3fea7f5d955c9fdbba316e583d8369b1b727","6e8969df6e4b6656f7d929121b84412c9a626aafc42cf339027a0bb5bc45b3c4","67ef414c1948c3865c24cbad69155a3a90cc620093139e019e8c5ff329fa0a94","0e684c11c8ee895ffa496c33ac81f325b2485cd54d728bed6aaa5189b6f31a7f","56cf69ba69d6659d9b25055cf30c7603a35914e162ed404e80d3c213f2d02bd1","74f9d3482b5290aad27dc9697e0cf41b36507bcea439126a9245c431597e054f","677fa1619e1a6d54b8cb69fc487823822c1310307e2fe2c243a8c43d7438bd6e","08d90295c4773de1fd6384d20f24f01207d1fc5ce712a8f5332461de842b9e20","792383b1e382c2f5477f24e549fd02a982e96cdd50fb7c4d764cd61ce51fde77","21836d03ab864195654b3da91674bd150b0e871d3a76b0d4744ad091e727d205","fd5e2a6c16d1d94264f5446bf598ab71495ff2aee0b790aafeb2f076aa031713","4d989a3b3d73c855a44b2eaf2ce516a239f2f0c6a4aa23ff1f55a24d82dfb18e","6586305b22ef3e4637506653771c647607a7c04177cd4a33a901bb9136597f9c",{"version":"e8c7366264db300b06e02e3d7818b670e2de76a8235b5087103652bc44533c61","signature":"dcca2395b704cdf2da5d1a83ca832ef345d921905f77ce2e916caffe6dafb739"},{"version":"cb03d27f39ca69ddf05ab9154ee1cd76317c80c616b7724eec7f563231234f08","signature":"7214164cfa10573d2bf79da5174719e21aa58d3745730ba5464fd4491e9d5c6c"},{"version":"64cfc4f940971a56a5709006c8c859b7ab63097123bf74b4b56f3434d9e5929d","signature":"20854999105f0005cddcc0f953ba5cfb569ac061688fa0b6d639b82e87954464"},{"version":"2b6159943c5afa71fd32f0692da039de8843e904f4de1dc7b06a5735c158ddb9","signature":"4a1a4058b983f315d2233dbd7d96f0a1074b03daeef7cd7acc3e5868d31f75bf"},{"version":"12e665bd51da5b11242f795346141d9435edb2b7121795909e984c7c917c8a6a","signature":"e230b4bc73aad5fdf400faa82ef55b8d5d4ecce9d475c287f825205df0099521"},{"version":"e0ba82cb270e8b7be614dd6a274fce4f71f07c7d9c369d8bdf61d2bee89502bb","signature":"f63821864bd5d234a9b2907981f4ff5f5f1ea29f94e57172fd5aeb0772196b30"},{"version":"54aac5101b06ee73e5570de84363a43eca769418fa753c509bb2d483fda29493","signature":"4d1063d70eb41a98403e982ae7635105d918ba24f7167d879db5f01c31aef6d1"},{"version":"0db3443b2ea4dae520effa5b3efe0229ae172b1bfbb0f9cb53b22f4db6f92a14","signature":"42d959b96d11882462257ca83b8625afd9400265bceab089a090ea03f1f0711b"},{"version":"99eaf78990a4adf2c24adf8f687c3ee4c09202da876fbbf4d1bf403f26b7fcd3","signature":"1e28d683e7e2db6d1c6d603d9f5aff5e4e310143279024f27e5f85c25dfcaa8d"},{"version":"4cc9a5bd3257316bd17a258d55165dee361f65297d46df8bce388d1de0a570b6","signature":"8fa998a5e786e4328819653c98b9097b31708acd79d58b726e4e40799c20b900"},{"version":"ed34e9738791e6e168b1d6d834e34e153606a8f9a0d0e256b09991869b729c0b","signature":"3dcd68fc4c53ef4a001af9b8ac6eec5aa835d2ecdbe308d8e44cf3d83a5621e9"},{"version":"33473087570ec627d5ae664c303deafb1c5226a5931e04098c4981578ce676eb","signature":"5642b12c946748e2e53f3183b2b5a981127b2f20ee211e667ae88fb7f9e50538"},{"version":"01fa1cf9bff499e74c19b74faccbea57a45a341825c49df904ff9fc7f86f80e2","signature":"e7e89fc27a9f0fc455c46d358a245fafce6babfbf509b48e95d12cb5249411a2"},{"version":"6e4393b209ba2dbc9b4d0fffafa4c264ecdf6460a03da5a5b9ecf4bb75145e0e","signature":"928d5c4be7aded223f282b5f7b6f232aad3444869fbc86e98ffbd1cea787056f"},{"version":"a9b9895b846ee9a392a56b6a3fddc79ae073916a7233f938c7d28421ca9b0da7","signature":"fd149b7280ead494b912469a143ab5da50ab448fd697d2fafde21efda936a62b"},{"version":"e735d2a849ca12b7523228218baf89c9860955fefab7bf20f2342377e52b2a03","signature":"347f871052b9155c8c92fb3fb1b7e1b13a83222ad782b9c06a6b05220048e7e2"},"b6e995b5ef6661f5636ff738e67e4ec90150768ef119ad74b473c404304408a1","5d470930bf6142d7cbda81c157869024527dc7911ba55d90b8387ef6e1585aa1","074483fdbf20b30bd450e54e6892e96ea093430c313e61be5fdfe51588baa2d6","b7e6a6a3495301360edb9e1474702db73d18be7803b3f5c6c05571212acccd16","aa7527285c94043f21baf6e337bc60a92c20b6efaa90859473f6476954ac5f79","dd3be6d9dcd79e46d192175a756546630f2dc89dab28073823c936557b977f26","8d0566152618a1da6536c75a5659c139522d67c63a9ae27e8228d76ab0420584","ba06bf784edafe0db0e2bd1f6ecf3465b81f6b1819871bf190a0e0137b5b7f18","a0500233cb989bcb78f5f1a81f51eabc06b5c39e3042c560a7489f022f1f55a3","220508b3fb6b773f49d8fb0765b04f90ef15caacf0f3d260e3412ed38f71ef09","1ad113089ad5c188fec4c9a339cb53d1bcbb65682407d6937557bb23a6e1d4e5","e56427c055602078cbf0e58e815960541136388f4fc62554813575508def98b6","1f58b0676a80db38df1ce19d15360c20ce9e983b35298a5d0b4aa4eb4fb67e0f","3d67e7eb73c6955ee27f1d845cae88923f75c8b0830d4b5440eea2339958e8ec","11fec302d58b56033ab07290a3abc29e9908e29d504db9468544b15c4cd7670d","c66d6817c931633650edf19a8644eea61aeeb84190c7219911cefa8ddea8bd9a","ab1359707e4fc610c5f37f1488063af65cda3badca6b692d44b95e8380e0f6c2","37deda160549729287645b3769cf126b0a17e7e2218737352676705a01d5957e","d80ffdd55e7f4bc69cde66933582b8592d3736d3b0d1d8cc63995a7b2bcca579","c9b71952b2178e8737b63079dba30e1b29872240b122905cbaba756cb60b32f5","b596585338b0d870f0e19e6b6bcbf024f76328f2c4f4e59745714e38ee9b0582","e6717fc103dfa1635947bf2b41161b5e4f2fabbcaf555754cc1b4340ec4ca587","c36186d7bdf1f525b7685ee5bf639e4b157b1e803a70c25f234d4762496f771f","026726932a4964341ab8544f12b912c8dfaa388d2936b71cc3eca0cffb49cc1d","83188d037c81bd27076218934ba9e1742ddb69cd8cc64cdb8a554078de38eb12","7d82f2d6a89f07c46c7e3e9071ab890124f95931d9c999ba8f865fa6ef6cbf72","4fc523037d14d9bb6ddb586621a93dd05b6c6d8d59919a40c436ca3ac29d9716",{"version":"758af25aa03efc1bde00bc6a70051706b52278a175b720903c7cc514da00bae2","signature":"74bcd45f35bee9ef202903c7a1b8763ba5b69a447b293d14fa127d0b94dad27d"},{"version":"b8d8b6d3eccb0ff6b19abe3c3ddfd654440c64268ecbb84084b702180bbe1a6f","signature":"98b7d02e932f074ea2f259cfdb3979dbbc2122134f128be2f93b930e846baa2a"},{"version":"76216f8c724be8592795bfb162f7472a7e34bb482dee730d4b68b4f5e6d9acfe","signature":"1e2a68009d58c548d10ab7c153bdac800e2b672528913c6cbe52433e842fada1"},{"version":"c10063ebee54fae30b3b6ddcfaf3e271f2a789c81fe1064c3a3f07cac5c80639","signature":"a3c6be9fc5544c7034e570c09c4be65b6e89474fdfaddc6b11148a8997d309ce"},{"version":"2153b9e7f5b25f8e6df21f15a3821add7250c47a11bfe56fd80400f82d80e749","signature":"90ce900cd1b3be557a59e8c4262eef0bf431e08724e63c78d46b82fd73215510"},{"version":"6503475a288aec965a1e024aad91655a369b2fe9df68ac2eb591581f0d80234a","signature":"8d360593944ddfff79caa1ee5fecbaa313fd73f377627eae680e42f92e416c45"},{"version":"d5c1d1783a9084401773e253c3a0f01d88bc00a6d5eeb2c3e555d467f0878130","signature":"8f08d688dd346cceffb1c9f35975e0e8532e8d9a7a8525b329a191f329e377b8"},{"version":"97ecd68a29d2595310edc6524e7f586e29ba223c362847be139c33ac28f64118","signature":"6c4a5118906054ee82fdff166ef13a78965ab5d2a75264a05df32d5eb0ed9df3"},{"version":"f35e4e7c5af8af03ceb1aa8e919be66453ebc1eb13247dcaec5d3931674d6396","signature":"f73cc97f6f64b3e02abb8533f8ab0cb9cc04bacca9d3af96308eed1c0f256722"},{"version":"9264536e779b2256b3180b79fb0b4fa8714b4d367d575c6c8546c7d515caf84a","signature":"be2b2e3db777b1783a40ca539018957e67fd3be3943f58474c30bb200ee35be2"},{"version":"380394e335fb2c2148f1b77e3184bf23bf10ee8d3182d08dcb4e6148a5450105","signature":"0d811b1ef6116d3e965a2fcb5dc9ca1cdd887ad4c9585c3d883c0e466bd56d9f"},{"version":"a8c2d879c30370eb8b34efb45410f8893889b258c3405d78e566926851a07035","signature":"6c4f8c32d43889ff7637aae1c86c9bf9a536771fae04f64c7457f7513ebb6b38"},{"version":"3d4d17884df27d94e6053df5fce8d80ea1f624c354fa3856026f0cf955289ca2","signature":"ee918a33560c0a3bf504b111bed795210d99b4cc1fce80e20935c74b2b5986b9"},{"version":"d913f373e79e6e95c84c8cdd143c4b792b8e5d76ec34b663bcf433406dd7e01b","signature":"df66b1b249dea1d6c6e26f91bf1a18ddd0ae8dbc3c09b4c0bf6ee28ce669907d"},{"version":"388d5f3563fb454c3d1738b3689a0c4e0395d9a03191be81a4472c0bcfb2efc2","signature":"c0b38f37240e4cd618ebd958ed1cb05493b5fc5b2f39711e788de5d005a575cc"},"fa866d4dba8ff3030ed22ee15335d5bf5e7c20bd870142574ff96bc42da453ee","2732846b3f2c2d4155e7fc57c144805f75d43a16f2ebc610195d7a65737c9c03","1dfb40e6629cf803267a65920a3327c3fa6a5e42b4c6fb8865cc503a5b7742a1","f35c1a8bca091f454997d35340379aca49d25346e51ab1e15126760ee2e171e4","92230275025180a19caae70b82c704d73b2de644c2b4951b72b24101a19093cf","a2b176f66f0b708241265fb3b417597c9c9d21912bbb7f5cc00d99af551c2078",{"version":"50072c1e4a6b693993c69f24fe86a8b7ecc62149511ef6c7c253c195b8689822","signature":"d8e91faf7c09fa9d280828aa9530ff5c7619c1699f25c7d3319cf0fafe3a250c"},"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","b764fa8a87290c8ce361860e2f1e7daa1fe0ae2f0878768b811f103b22a4c179",{"version":"6400f3eb037b0626d9521c0e2ad8472c63e2cea6a4c6367dca4521fbe267e670","signature":"ff0fde5b05a4ea984546de6973bf80f184d152a069667b3d91f6328c189249dc"},{"version":"b1bfc58df515cd6adb9f668381f0cf756b1dea5ff7a441217e3f1b02adcb4934","signature":"f2ab09d38bad6925e4f21039ce98c6d5d8f919fd98d63685189ee795b707d4ac"},{"version":"87b5c15396f3d856dc28c87697340b562421e19b32ba3561f577bea0266e04ee","signature":"b60a01d239c3d9185ff26717746bd0c80f18d26b2fe62685c3459fc3c14ddbda"},{"version":"beb858dcadd9d0d8b6b29b079fcbc10ae4d16e4107a20b44a3e368b40a2b8958","signature":"d322dfe2cee81d50d50953cd67571fa2f0f3e027f74943db55fbe5c276cd8f53"},{"version":"f1ff1256aa3dfb128fea71d59eb70333c293901d41af02a57f9a49d50d5566c9","signature":"a5450f6bee08e27f93759f900dbef6c555e2cf07df1f92b91de49d257c6e6155"},{"version":"1cd6db390decb9108f876233e988e048fa2312e9989b1dad9c1dd8f75d7ee747","signature":"cdd53006ec1732cc3116831e3323c5409c09172c5f8726c9f09824b60de9137a"},{"version":"11e28b9d4be52d9be02ab1ad06188ba4eef973165fb2be275a63bb78715f21e6","signature":"384403d3fdfe0e9b3cc5ea115e838bfd03fceedd4ab0e8bfb63a5578a01e6163"},{"version":"a05eef32267435afd51237181a9b274f093413780e27ece641be39b1007ca8ea","signature":"89984d79bd762f5c9bb67eedeb12323a0fe1ac7930005d0f92c2a8a251922118"},{"version":"8eed79b20fc435cb01445e2fe2886e3d0b2fb569be2079d3e0c10d4b970f8c0f","signature":"0790c520df28c72f7c02d5bb004a617734d6cb2bfc2f344f01853c60e1e99719"},{"version":"ec04dab3c169d0a84c2be3b6c958d4377b0f13765579bb12e1f272c620462fed","signature":"86f487c340351ba9b92f3f353598d8064e6cf1958c1a6fcfc883d602032d33c4"},{"version":"291ecb0d4e9f8c9da4dec8da57dc20e5d9aadea91e3922677aa2a92b314c68e2","signature":"bb05f7106a1437a9ee602bcc2726cb044bd8fbf88f61932ae5dca7ce461e2a9e"},{"version":"4bd31df4b06423ca648d2ebcb28cab4291e5f32f6fa1c32f191ea85dc20ba286","signature":"cb57ccb678999e784fc65f7d8757c7c7d3c50aec169e11ac3d32ed8ae03287dd"},{"version":"11bbb1fa863ae398559633455196eb277d4b4fe549a72053e3d357d2f8fefb70","signature":"1fca11cf78a58dcb3409fa1126634aa09aaab3498d1873777410cb674f58bc80"},"6c1b497aeb9135ac66891d783a34dec6d4df347126ebe9c3841110f0a614e0c6","cef73ddf0336cb343be88b61a0448483029d438dd66ca21722aeabc66223bded","8cb6c8db9e27d0c6dba28bf0fcd7ef7603d0b5b2b3dce6fffc86f3827a8a00e9","d07ef5953b1499ae335c75147c658d9c037fc649544a4c85883f10eb9e5878e8","34714fae00aa0544916ade4018d18a04432db2b4b49c6cd066825ac31734eb40","5cb3b7b2b0997e451f91ab009ff2d66e7cd5f77838dc729a2e335554fa098a12","bdbe3e5d1f1f3dd035c551b6f94883212ccdbe9b3610f65f49138980e0efc0d7","eadae8542e5f360490f84d8da987529e415e265da584dd12e3e7c07a74db2fc9","9a82178f67affe7ca9c8b20035956d1ad5b25d25b42b6265820232ba16ba0768","2151db9166dfd90feaa67f0c3a07efcab39e1640f1b26abc81632d8e1bf95fcb","2f6fda81a8ee3f78205dcf8a69e6f5afd8ee577b8f423fed0a72c346509937a0","37389b1222c65e82f8e2670d586d788911f317548c3ead5c5535d2495fd08572","1ce0883eaaeea383c10e3274b4e5189915beaf4ec3f74fe609afd44d16bba02e","55a525e18db580413a78fa364a54faf071c028888d5432fcf015d229c5fafc28","9190c744aa6c9c2d69b5e283f5559a5543a201c518b2fe14ea4e3eb7e42f33e0","057ac92d0a839b0a3bd91d86b9288991ff6ac9ea72b64877464f2b12b1d117a1","528f3448c98e09174ca4186540000bf77f81fddcb587e0db9626ea825dead0ab","305af5e4e2f1f3b99d43e285d8dde8a39073dd9e40a2c5682839e7f19d66688c","5cc755647e5205f5acd69ad6fbb5bb41c150ea5ce229ab8ee34fc769ffecb7ac","aac2532c6e0b1183dd1f7d746013af0dcde78ad82879ac599f17c5563bb2f1ec","9ca2b093001037c017169b747ec9616b26b42ac9d8fd60aa2b0d9eb6b8c1cf95","5e8f7bf17b0f8382eff0d93f1ffaafc4f7fd15293b4a90edd517dca2a3ff6020","e7705224440c17c183317a861a0f1392a9c0746c3a06549c09e2d511a8c0c32a","eaccaaec4001b7c7e672f371d466e96fcbe3782cdbb7eb8ecbd132060515573f","f3eca6b9a668c7872bb132fafe6750c582771c40a66606745c2c01dbec8d4c5d","8f4e60cefea06a80cdd3a6a19fd2070910aa819fa934b58e9dc4ac726f1ff74f","325574dd9f2eb185c39a1ee5bb5bf656cd448954ca5485e0987d29574abdc699","529e1aa76e7ed000983d12eec4eca0f6d38045e9d0bc8440083d86aa4897549a","452234c0b8169349b658a4b5e2b271608879b3914fcc325735ed21b9cb88d58d","bb793c133cc27a55ba9d4b1200b3687ce0611c19599cde5d3de8f7fbc0fef8bf","98384d00d93891fe98678e784b367046cf9563d169801d9bb07f5a4e5e111400","1481128ac360e7a5fc5944efc36b7634b8e5eea8870d3e5cef6647af83f98c8c","b5b9340f337ae17e2b59afc4c70a45b698a0227a81daf16f4bdea22757d7ba74","3aec561fe42dc4beb19e50b9711580620d5b0988ca0295ad0f4060a5669ee3ba","801e735da27b1fcb22b4d79bbe1240f211889d633026cbbd1469f941245ab419","5265fd19af035a75b0ea228cdd98820babea56b2b79c75517c0158ad022ae16c","d9fdea96fc90cc8d970044bb7bbd75766899f06a6214383bbc3b95c061bdf733","b3952aed8c195a401b42a8995800b5c1ea4d9d390c1a5e3521a1a3c3653f9b71","69c63d594f437c04b4971e171b8b3eff3d926141b87c4a898cc139b39ac86666",{"version":"9d1111657ab26039a6aa9e4ecf8781761d7d2d9c06a858cc5aeaba1cb1843890","signature":"d4fd8c26a8cf7338498cb17479a6d22c8629c2aa1a5e75a472dc2a0a37ea0e94"},{"version":"dee56fc4336a6b0d2a62202944b58a9f6d6d44da4316899ce0d696db1e70b062","signature":"53219b27e7ea9783210d97e6f71674d904bc5e0a25fc080495834d6f1c4fd83a"},{"version":"b7d79703a6b079433e574c48b15c09ff6b8393f5c5543d602af6015255b311a8","signature":"791da0d3b2669e3d98b91e8d1c4c26c30ba6d57d2df076942635815529b32104"},{"version":"a1606f5fbacd567a0a959d20770235b0314dc5290b35a72423018554084555f9","signature":"ab98abe08662a21ea6db1aeada4bf9a9936db7438e9f2a57b2022fa5e24360c6"},{"version":"a1938b18ba00cf6748e28d118ddbacf7a64ac4dea4c716b59800893ca436c891","signature":"f74d4541d1c4198ddde91a0fb625d79b97a2fdf500233100c9dbcf734766ef58"},{"version":"dd583da911f7a80691b2bb8ac51812cc3ec212701b18e9eeec4c146a15c9bc09","signature":"23f91fc9a04d29ab723d3bf60765f7fafface6f955a40a109244b615621242ff"},{"version":"4bf1c83a0295f179ca8448739d51a9ec666c04620e405aea6090e4a8a5448e4f","signature":"9928eaff977ffe86cc59371955326f61600c2eb91b94ef096e5da3293b7fd800"},{"version":"094afeea046af64e4f9d208f4c29679c6c67ada2936d5971b8d0c0c2209c7ce7","signature":"d833128c972c0c3a618395bb6e2318dd4b76ec50ab71a6cac30a0a2ba5c29ca7"},{"version":"62c18f3dcd6b34927f0955db584356e0a50406c54c2907d50f230635b3ee7015","signature":"9ef9c99a3bd00da04e7f444f862b17412351577543b3e2eca9daa188bea64e03"},{"version":"e1859a0e22638f4b1dd11f1bc1f7863276aed1f26f95f51137006267da4ffc72","signature":"ca8b538ac7d03aa30e79fed62959bad2f7ca199255dff4cd24429d71790de00b"},{"version":"0ef9deaaa2e3966b75fa47589adbc1e09508038a01f7e269edb75ca651f99007","signature":"d9e78f45af9c544f2fce2a4f0fdee8e0b7282bb7c2f9bf591262c99e913eabe3"},{"version":"b45e83ce8c638ffc41ca1320a0df7df2348e1b542ccf97a11009b632fe3f55f7","signature":"75e3cacdd72c4f5a8d66ae43157693745efb3cbf8fb93e6429730a7dca8938a9"},{"version":"1e25723a824bf34765354db205b0d80711a26398787c68d5ef396b6f2590c0de","signature":"7d041c97c4f8c43bb0dd49b028e97f16c85e5ca22025bfdde860d21e5a2de691"},{"version":"456925082a6ed3743051b5f43a9d1d0ef3cfab6011c7127b1a1b07ec05103a6f","signature":"2a6ecd283a49102c720cded87a490eb4591d77d218fcf71e0cf4f8089e19c561"},{"version":"b540b013865f607936aa93f33f77b24fc2a0e226d9822d6f792123709d1327bc","signature":"43dc4e7330bf525c144fe7effa5e4b6d46278f19f15a14abdec689688027f6d7"},{"version":"a4d23c6939d0d7d6a4c7ea1e50450acfc9cd84b222a680f9b68045600ac82d68","signature":"55722cd275e496f0c100342bb2a7a8b3f66cc6f59c9af61cec7774d389439a0e"},{"version":"08c16959ec8837f09a87ce55794eb7738cd9e45aeb57150ff4e194a0b921507c","signature":"bb4c60e8412068c5a8bec36fefdbe1544971a9d084f1b5b2e338b86da742f53e"},{"version":"3e487f6bec4dc003a15857317a60984f7e2d219f4dd161dd2648da688a32b61b","signature":"d8d7ba53a1a35005b7e1c4c64bbb36e9a389dcf9763649f0abc0e87792263605"},{"version":"3f8cac8a68a1705d91cde45ee7c6e7bccdc1cf6c21584de2c704911422fb1e12","signature":"3f2b7712a1826e69fb7922488f76fc690c3a62cb646f375ccd98e7c48f0cfce4"},{"version":"67edc242276dadbbbc28207e2664389e3841e93ac6f1ad7a0176ebe3210c9796","signature":"485c4faaea828b8dcc01ef0d3fa90fbb0cf17b61a27ba22e33324e0eccd0cbd1"},{"version":"e79425934516e5f649b676e3c79a008575ed9a2b5e3dc52158efc17850cac713","signature":"aa3fbd244ff3cc308c50831396e10c1ad14c86bf38e7c83835141012f5501fad"},{"version":"29ac796ed582df2596b941dba22e926bc45ba3ad193dabc9bed61a16ac0f880e","signature":"7909d395a0a16a3e84a5948c4bbeff5f1e7230dc92090e5ee4f10a736166db1b"},{"version":"67212984c3cae97f9106024fa0a6c68def468f25c8fe8ce8ca8345c6757d0bff","signature":"5b886ecf14654b9ab0ab65bea080ef1824b7720ef24a58acbb77fde5a0b410fc"},{"version":"bf302a4dd151f9b6d5b23717badf6a8c9db55aeb46caaab1b218584c620d2731","signature":"af0515334f6df00838b777f39d970536edbc5be22b4dbef58055d9189376b459"},{"version":"267955641d808610f54ba868c23969c1f9b0ab5625dbb009ab118a48cd2e0ac1","signature":"7e91ad1f0c0cd12383d8636ef4418106444cf4864b1da5d240ba62ff8ecd3750"},{"version":"1bbdcd1d35b298423310d57b3505ba435e6210a73ea7956f1c691b542c9ba0f8","signature":"fbe4b092ecbd682515996f8cd40e51a45c9eb45fe2d51fe493b737b36614ec0c"},{"version":"0b9166a5a7de6e46cf3a998919fb5c4d9481e00e224f774c3ab4304391f25432","signature":"3c191163aa9294b41f0d80094d9eb264bba93a6d6c6d30cc2b56e10754089b1d"},{"version":"6a0734acf6d43bcda7138e9d4ba1699b8aac0f429ee2376cd6a73fdb2e0bf5be","signature":"d2eecc5260c72f6c835f42c3867c680422a16c7b5b47be9ebc30c6bf14fd9b79"},{"version":"d6ef5a0d31e83a8dbf0536a902a39f52c3b1effd5785f27c78446798d2647735","signature":"9188792d389f8dedda22bc95d5734b99e70c1156827b96fc3c9eb3c923783e3a"},{"version":"33046905a0d24a8c7f090a507398345cd481d88421417d7195b8350ddc9f2a9c","signature":"cd0d192c585d1b9c389193c08741d2cd02e34adde06287f5999350476c55c64d"},{"version":"2df33dc903a5ba6c6c87aaa4b298f7f8ca9c97f8da584ad17f8e77fea8ecfc73","signature":"561aacf7d745e72f9d4a0456429c504e2b3181faf7b0610d3c135a175ee66f8e"},{"version":"06831ab18de121f25e834350bb2054482e3426a2d4ef52557a0dd9cbcb220785","signature":"c7237160ce8525890f4ab6175ec7da304d3411f872a8fb26665c8774e06ad11b"},{"version":"50f356b1512b533e8016c61b0a2dee79a2d80dfb8acde7cf4a1c2a38b1c1a092","signature":"0a67c446853716d70fbcb13b8bf9039bf6c184859b589bf28b407ea6ac196fae"},{"version":"d902a0ee0d97330e3b2f30ac8b60a2a488086bf3cd53b2ef66f8f524d8d439c8","signature":"76ebadc714f70706499b4eaf0382d6f7a37b3efae6b198ebd63c0b1e504a09eb"},{"version":"3383b72797fe7137d9b36f758ea8e577243eaa58c6d02b694506b2098fbdcd14","signature":"110eb275e86511446aa15e2f85669578180cdfedb0bbe998c8d1815a201c123a"},{"version":"b813574ffd805424cfa47afe92c610260a52c92c1eb83139b55b5b6bf8e3c1c6","signature":"96e5be6af3096b7526ceeb751f425f3243bc92c834012472b86e1dbf024ce4e9"},{"version":"35596efcef6f1987b72f8ee498da18994f181027ce33895fb8fca923fd732e18","signature":"330fc45f05f5098d77eb088e3c129822acd15483a2a073b5b5c4fc5242d77110"},{"version":"8ae5f77a947f3af79012421d027e8ccfdfc4b004eb753e77c26845d4a1907de4","affectsGlobalScope":true},{"version":"d75f91913d91912ae4614c67bdd571d83ec96cbd48f0c09080276cc9735847cb","signature":"7ed8e8574f2686f9270ca5d0f55d1b601f6e6a0a3976e0f4ceb8e04d1cfbb9a4"},{"version":"bead864cf78c8114985dfe22b5c845626ae18780b496e1b1606037460fed4f4c","signature":"8ff0184521ad1f589a07a29bdfd691fb7b09a9a5064e924eae52751db1387eb1"},{"version":"465f2f07e504612e41ff8512d092b81eee67d9e9129e8cd80a1e2372bdb3a8cb","signature":"435537a4021b2f286e1c8188dc744e9fdfe31a66fd72827ac079fcb5b71aa388"},{"version":"c62e1ffe48fd382d3168c57201f5aa103f6f712badb8f1721ae8f4714ca5e79d","signature":"52bf28e57536900c738a3cad748a6bee5373904b1eeaa69d156bdfadc9a7d1e4"},{"version":"627ef20fe381a2df1a4d46f73825af7383a02c34de6e6f4b09e884281af12fe2","signature":"8897660b614d6368472ff4c8fe67a584c2ffd94ba69212346e4c51bc06ee8f31"},{"version":"0409a0fcd94704a3209c7e9e777ee686c38e2af735548d629b6ecad7e76fa1a5","signature":"5e5bcb83f067468b74af3ca897523bbd3f621d56e70cdccf7bc4c555c3fa0f2f"},{"version":"fd6ac613fc0fa02304f6de03d33c97c2c4333811b4e9735951137dc8e7902a90","signature":"3564365ea82ffe7b6e172a9eaadf4873c787d978e57a7044b6704b387880acf4"},{"version":"7da34b64d04b1b17c96fd642090ba4f11b68b7d4850e5c0420dedc890d40b70c","signature":"12d4d03ed00223c2256539a82a25f4fb3dadfcea43076951f2238b13cec7a1d8"},{"version":"b4512b5346597e3ce452cef2eb23e4df7db8d387893ce3bd87cf7825b96bca91","signature":"540623ec2911accf2d887b74163cdbcf2626eba17701aca03246d579f9df77db"},{"version":"f6695bdab228ea4eba58c191e5e25a6cd6912bb2fc1b56f19352a598454be429","signature":"bab356a602627c6e08ae5f663badfe1d6e9e5587236c68ae86d06f05a0cfd9a5"},{"version":"d1b756347f48dcb6af5d119817c298d25bccbca1d99c317bad8a1c0924c98389","signature":"4868aae010c650a0a31e0c0da3df5c8ef50130dea774bb992418b14bae93e58d"},{"version":"dfcf6400dbd3005f4395a5a77f2736e401ffc61af05528dc139b267fcb07fc4c","signature":"6d9bc9a88b2a392f5319733ab79e67eb130900f3dea45455db899b23386bdb55"},"9b50ee091a0f3aa69aa51ab09233b0e834772a5e537dd1c85fc9963256d82d17","46acc28f4b194c3cc7d1a7d79310ea91925c449cb272aa820628a8609dd0a447","78647004e18e4c16b8a2e8345fca9267573d1c5a29e11ddfee71858fd077ef6e","0804044cd0488cb7212ddbc1d0f8e1a5bd32970335dbfc613052304a1b0318f9","b725acb041d2a18fde8f46c48a1408418489c4aa222f559b1ef47bf267cb4be0","85084ae98c1d319e38ef99b1216d3372a9afd7a368022c01c3351b339d52cb58","898ec2410fae172e0a9416448b0838bed286322a5c0c8959e8e39400cd4c5697","692345a43bac37c507fa7065c554258435ab821bbe4fb44b513a70063e932b45","62dffb621f2ad8a13b6333fbdb4bfc920554b17788a5a3b7a992005c4af95ade","c1c8ccb14c76efb31ff84038ec7833a5715ba23e681b158b3c83cc012b8c3cfa","18e6ed3c86de189231cf81b9ff2652d2af7309ae7df74a88a788629c4d3e2b03","522edc786ed48304671b935cf7d3ed63acc6636ab9888c6e130b97a6aea92b46","a9607a8f1ce7582dbeebc0816897925bf9b307cc05235e582b272a48364f8aa0","5b9c46dc4452a581c3c258232933b8139cef89e44568eff6192440f462fa31ca","93d913df60b5b895aa5fab26ce7b65dda14cdae7f10f049a8c65334088a2e00f","6758f7b72fa4d38f4f4b865516d3d031795c947a45cc24f2cfba43c91446d678","1fefab6dc739d33b7cb3fd08cd9d35dd279fcd7746965e200500b1a44d32db9e","997b94a03707d35abe497e427bc26b403a538838c3a82f2be71d85109b88e32b","bdf7abbd7df4f29b3e0728684c790e80590b69d92ed8d3bf8e66d4bd713941fe","8decb32fc5d44b403b46c3bb4741188df4fbc3c66d6c65669000c5c9cd506523","4beaf337ee755b8c6115ff8a17e22ceab986b588722a52c776b8834af64e0f38","c26dd198f2793bbdcc55103823a2767d6223a7fdb92486c18b86deaf63208354","93551b302a808f226f0846ad8012354f2d53d6dedc33b540d6ca69836781a574","040cb635dff5fc934413fa211d3a982122bf0e46acae9f7a369c61811f277047","778b684ebc6b006fcffeab77d25b34bf6e400100e0ec0c76056e165c6399ab05","285d50a08440314f7aea3246a5e15acbc38e2867ff07d21ef457ae8cb4e8a31f","6b590fc57c7619b9b80bbf5a86add80a4772b9ea1216213c7d7cf46264d34dd0","be8f369f8d7e887eab87a3e4e41f1afcf61bf06056801383152aa83bda1f6a72","352bfb5f3a9d8a9c2464ad2dc0b2dc56a8212650a541fb550739c286dd341de1","ebef680e3597d7b3c8a9fc9e5581eb078461fa1406ded8d9859353dd6286eff2","9a3a69ddf81eb8e4867373e5c86196e5df49ae408abaff7872118e4ad52b3637","764150c107451d2fd5b6de305cff0a9dcecf799e08e6f14b5a6748724db46d8a","b04cf223c338c09285010f5308b980ee6d8bfa203824ed2537516f15e92e8c43","4b387f208d1e468193a45a51005b1ed5b666010fc22a15dc1baf4234078b636e","70441eda704feffd132be0c1541f2c7f6bbaafce25cb9b54b181e26af3068e79","d1addb12403afea87a1603121396261a45190886c486c88e1a5d456be17c2049","1e50bda67542964dbb2cfb21809f9976be97b2f79a4b6f8124463d42c95a704c","ea4b5d319625203a5a96897b057fddf6017d0f9a902c16060466fe69cc007243","a186fde3b1dde9642dda936e23a21cb73428340eb817e62f4442bb0fca6fa351","985ac70f005fb77a2bc0ed4f2c80d55919ded6a9b03d00d94aab75205b0778ec","ab01d8fcb89fae8eda22075153053fefac69f7d9571a389632099e7a53f1922d","bac0ec1f4c61abc7c54ccebb0f739acb0cdbc22b1b19c91854dc142019492961","566b0806f9016fa067b7fecf3951fcc295c30127e5141223393bde16ad04aa4a","8e801abfeda45b1b93e599750a0a8d25074d30d4cc01e3563e56c0ff70edeb68","902997f91b09620835afd88e292eb217fbd55d01706b82b9a014ff408f357559","a3727a926e697919fb59407938bd8573964b3bf543413b685996a47df5645863","83f36c0792d352f641a213ee547d21ea02084a148355aa26b6ef82c4f61c1280","dce7d69c17a438554c11bbf930dec2bee5b62184c0494d74da336daee088ab69","1e8f2cda9735002728017933c54ccea7ebee94b9c68a59a4aac1c9a58aa7da7d","e327a2b222cf9e5c93d7c1ed6468ece2e7b9d738e5da04897f1a99f49d42cca1","65165246b59654ec4e1501dd87927a0ef95d57359709e00e95d1154ad8443bc7","f1bacba19e2fa2eb26c499e36b5ab93d6764f2dba44be3816f12d2bc9ac9a35b","bce38da5fd851520d0cb4d1e6c3c04968cec2faa674ed321c118e97e59872edc","3398f46037f21fb6c33560ceca257259bd6d2ea03737179b61ea9e17cbe07455","6e14fc6c27cb2cb203fe1727bb3a923588f0be8c2604673ad9f879182548daca","12b9bcf8395d33837f301a8e6d545a24dfff80db9e32f8e8e6cf4b11671bb442","04295cc38689e32a4ea194c954ea6604e6afb6f1c102104f74737cb8cf744422","7418f434c136734b23f634e711cf44613ca4c74e63a5ae7429acaee46c7024c8","27d40290b7caba1c04468f2b53cf7112f247f8acdd7c20589cd7decf9f762ad0","2608b8b83639baf3f07316df29202eead703102f1a7e32f74a1b18cf1eee54b5","c93657567a39bd589effe89e863aaadbc339675fca6805ae4d97eafbcce0a05d","909d5db5b3b19f03dfb4a8f1d00cf41d2f679857c28775faf1f10794cbbe9db9","e4504bffce13574bab83ab900b843590d85a0fd38faab7eff83d84ec55de4aff","8ab707f3c833fc1e8a51106b8746c8bc0ce125083ea6200ad881625ae35ce11e","730ddc2386276ac66312edbcc60853fedbb1608a99cb0b1ff82ebf26911dba1f","c1b3fa201aa037110c43c05ea97800eb66fea3f2ecc5f07c6fd47f2b6b5b21d2","636b44188dc6eb326fd566085e6c1c6035b71f839d62c343c299a35888c6f0a9","3b2105bf9823b53c269cabb38011c5a71360c8daabc618fec03102c9514d230c","f96e63eb56e736304c3aef6c745b9fe93db235ddd1fec10b45319c479de1a432","acb4f3cee79f38ceba975e7ee3114eb5cd96ccc02742b0a4c7478b4619f87cd6","cfc85d17c1493b6217bad9052a8edc332d1fde81a919228edab33c14aa762939","eebda441c4486c26de7a8a7343ebbc361d2b0109abff34c2471e45e34a93020a","727b4b8eb62dd98fa4e3a0937172c1a0041eb715b9071c3de96dad597deddcab","708e2a347a1b9868ccdb48f3e43647c6eccec47b8591b220afcafc9e7eeb3784","6bb598e2d45a170f302f113a5b68e518c8d7661ae3b59baf076be9120afa4813","c28e058db8fed2c81d324546f53d2a7aaefff380cbe70f924276dbad89acd7d1","89d029475445d677c18cf9a8c75751325616d353925681385da49aeef9260ab7","826a98cb79deab45ccc4e5a8b90fa64510b2169781a7cbb83c4a0a8867f4cc58","618189f94a473b7fdc5cb5ba8b94d146a0d58834cd77cd24d56995f41643ccd5","1645dc6f3dd9a3af97eb5a6a4c794f5b1404cab015832eba67e3882a8198ec27","3642861c448ff35e1d7cf53e690bc6de07d8179bc870d4f46ed7c92a25700eeb","91b0965538a5eaafa8c09cf9f62b46d6125aa1b3c0e0629dce871f5f41413f90","2978e33a00b4b5fb98337c5e473ab7337030b2f69d1480eccef0290814af0d51","ba71e9777cb5460e3278f0934fd6354041cb25853feca542312807ce1f18e611","608dbaf8c8bb64f4024013e73d7107c16dba4664999a8c6e58f3e71545e48f66","61937cefd7f4d6fa76013d33d5a3c5f9b0fc382e90da34790764a0d17d6277fb","af7db74826f455bfef6a55a188eb6659fd85fdc16f720a89a515c48724ee4c42","d6ce98a960f1b99a72de771fb0ba773cb202c656b8483f22d47d01d68f59ea86","2a47dc4a362214f31689870f809c7d62024afb4297a37b22cb86f679c4d04088","42d907ac511459d7c4828ee4f3f81cc331a08dc98d7b3cb98e3ff5797c095d2e","63d010bff70619e0cdf7900e954a7e188d3175461182f887b869c312a77ecfbd","1452816d619e636de512ca98546aafb9a48382d570af1473f0432a9178c4b1ff","9e3e3932fe16b9288ec8c948048aef4edf1295b09a5412630d63f4a42265370e","8bdba132259883bac06056f7bacd29a4dcf07e3f14ce89edb022fe9b78dcf9b3","5a5406107d9949d83e1225273bcee1f559bb5588942907d923165d83251a0e37","ca0ca4ca5ad4772161ee2a99741d616fea780d777549ba9f05f4a24493ab44e1","e7ee7be996db0d7cce41a85e4cae3a5fc86cf26501ad94e0a20f8b6c1c55b2d4","72263ae386d6a49392a03bde2f88660625da1eca5df8d95120d8ccf507483d20","b498375d015f01585269588b6221008aae6f0c0dc53ead8796ace64bdfcf62ea","c37aa3657fa4d1e7d22565ae609b1370c6b92bafb8c92b914403d45f0e610ddc","34534c0ead52cc753bdfdd486430ef67f615ace54a4c0e5a3652b4116af84d6d","a848339c272ab23e686b5d0b81297e3a7116ba7d27589c66ca1f4ebcd65e7f19","566315d39e476ca9e7fd0b1908074cb2a5ff9246cc3ed7da64cde5ad30f7e0b1","d53426ee3b9f2f4f8a2705ee72112fe3f356906f84ad4e94726169ae98fc67c6","9c8125fc43f5fc74a40240438d849d56ec7e5eb68961ce8af70a930ffb0580b3","d8d07d4c2cb69335afe919f64e519bd3972d8265ba1a073e4e7a2f1a0ddbe2af","fd3d0e2bc2829d94b6ea717f0217cc1fbe7f7e5c3e6dc20554d8682d3850ad72","e71863e8db54c3584405caa0331efbf08ab6db455b192e95ceb44a2905eb9124","a229c67e3306551dbd0310b21712247ffed4e881c7a834a19d62a149c8cbd3d1","83b5f5f5bdbf7f37b8ffc003abf6afee35a318871c990ad4d69d822f38d77840","634e56b085407249a5c67e6520fd7de77060f28c61c901e2e4d23784c204596f","2b913fdc511103566845e87443ba097601c6c338485faac13fd153fce83b4931","b86ef9f4a38b5f28352d7b2a9f9a64eb0097cb01dadb9f6e57843b143c2e04fe","23ad184b6ec52e8c1eeee56ffb3ee922481330716025ab133fe1f0425bddcd78","6eeb6d606b6732d26e0e97803684e9e989dd7ea4bc486dac0284f47743a2989b","6c468c7c33e01a672c907bb52fa16a29a930897b4883c895eaceb1774aa3e574","f753928cdc4391702905204cb54c5335545c786311c5f52ed9dade3f55040faf","5b9b98f7e8368c0d1890d2a8602b2c4b1b17e1d796aada894c6510fc12df3130","dafdf0b0ccb55128f83fe0acaddadfb5d223887a7e8d59a0623860a68b1f59a7","c2f53ed16441846ceae0301cedcb20b1996123cf242682a31df63ab35b87d983","fd77d9bad26c739ff2d8e9535f2bf2773bc340eb2e70c76a8d59e1b10d6543be","37dfcf681f7dfa16001120800a5559d418c84bba05f74806169a953930ca1108","79d11430b9f2221d493c795b35cf48f59243eb409f9f700bb7a21e62e1b042f0","bd02feceabd8455fae60013855ddfb8976adb97303d8d143b9fbecf8ba0844d4","800f43c93f6a536e168df302a7c6b22939a0162539fc0e88489f2521f2f92c1f","8d071caad80707dc1853c718e6372349df8fdd4790ac57550cb243545ac91806","7b8f4bcf71399d7bbad22014a4eeb382841c61ad3aa079943ed287598e70485e","fc5115956fdfddcf86a30a1ba0cc02927cf7035a2bdc3adbc8766b79242e0eb4","6bc0e969085d2ad0696627de23af748de2afae059856a22fa0465036bcf2b6c9","8df723a2830a0ddeab63edecd8430684b2a156fbd0458199e0e6a67124beed8b","c7f6351ac45abfc84332fd2255e4fc9f40ab81be67418f95653c5b635f06489c","ff1f7ea08241096cff8b3116afcc8babfaa1b9e319df043cb4a0c44af8e08034","b203573913f773b35d92a3a499a7873038149a35e0b23c7e189d7590b27f6da0","1c465dcd7e295ca87621cfc722410abc34d2fb38133cc4d39a88182e7c1776f4","1ff6207c7c85da59a11b2a1ef4cfa88347b52f117faa4bdbd6e6bdb60d634719","74f9f15dd600e9737bffdc26343d74b2d17adb91536fe4e29a9d110295136334","c3789c53874f2aba5a7c21e1ac1e467f95522ba5a0c8f9c8b8c519efa7aec51b","ac2b859d346b9c79548810c0b5821b05a6a766db90bed7416f7ec0cc6bbbd3bc","68408a0a4000e2d3da6984c995252646d3ce12a0d593e97c12b7f4fd0ee22c86","8da99e8ca9c8fced530f92f1f2faba413b961735ef92da80c577f981b767e9a6","6e435451aa68a09910fa0614230388c54d8fb90bf8a212432c63fe97b5fbdd22","5679adff758cff74c29356edb81be06914d582569bd183a6fa97262ede66ebed","eab879e68089c36bb373977a6e9338fa19a607f5581d30f2e5252d9333590922","54f556570c3432145b4b37c21b0213d77dae9ad1ea9cb193d991c061a5279b82","2fac6a45f688a1be6081e321a9ca7886923ecfc3a9083959485567ffc38b1dea","2f5ff35a589b58b99c7d787c696155959a4057dd3c29db745ab2c0f88cc2e03a","d7863230f391379b9286d46393b4b7d2a4d941f961187102f90be7f2b044daac","b8bbadecf2b1ca66f8ab691aed9910b37b3d3532ac3de360ea0141630d7701a2","5fc9e50135f4163989ce74b83b68a5ee44d151f04ec44078adbe913c8dad694e","321c7e382d36a823c6bf9ecb6cc8a4e5bf60265b4b37c86fdfcc85973ede2c1d","34a80ad568a06a539e43bde102bed1fcb8bec196811caa9abc3a0cf44a95fdde","faf4a3ee383cc6bb81207d4f8730e6d90ac38a010ded7583e4ba1bab1cf57b5e","2fc5b4b281cccfd2ed90d0384b2fc521dff07929703adc5d373c7ecfbe1d85e6","85561bddf43096a73eb5f16e829bb4beee1906b56027dc4a9dfdc5356f36e864","4f52c5d04464feecaf4e55db0a0cc42d38b84a502afb54082ed6c2c8352c90d5","3a2a7e7343d20346af5b944a8d39d1756809c86f05bd95c4f62d53fb27a14a73","30f861484a42eaa6830f91343556e401e0c9399b851f3a017cef5ffa233e8b98","af6cb3ec64660a2456997a8c5069e6e344aedd526418d727266807663f21df9f","b2e5733fe24d67d3a10bf0622cf5c18f099688d0e83eeffbff63ee7f323aa13c","e243dd83e46a4fd3614589b4589042576f86d4748866b9423c77dee1318847c0","01c647e587a25ca60be74675a250f685c646c0b36c4bfc1b5db9e55cd2a19593","bceb3703983ccb7177c4f8f21ed775c0ae7672559c90059a7814b04065ae04bc","645de8c678f8f5ea6f52b1636c900c3084debfbeec39595b269bb888481b6451","a0cf73046c0cbced0a194418eb5425fe8411221be669eda86673ea614f957fc5","862c4e5b58ec0f1bdc47454a69dd6d190d25b4625ed16622a395fa3f8ff22751","56bac357cefcfd19e72e66bd6984bb39adeef3d513f6c5f396d97040b5a5dd4b","2879892d07d8b20f92c025c73f2aede790f931b26cbf6a3e4c189b6deabf5322","702caf4b27b5454a3305f20cea27aaae0c5673b91df4936a8559f3112e4d68b2","0456f6abe968e44aa231527842e90fc493ccf0086c044685cb66fc9d307d5767","f72df3c4dc2fe8a3b939427b555b31f20678886d856e224cb070afc785a3ea2d","07189c6298f1b1a9f590baa5cf542937e44abc98ef7111a719262893ade1510f","e1a3930856d8f6a01240c81768c0219e4b1021f92e505f67b95c45fd7f11795c","5f019a25680faf51002b5ccf104dd61a93f95cc6821ed45fe905f7ffd6d44335","5881743bcc06d8169dfbbb238422a9d75d3930b09b59e099d0aa4ebdfee7dc0c","d962ff332884aa5af93c4601189c35747b6724765a3cd697242b5ef1e02cef70","e5af1a573638d8532157d7c69bffe9aa3551ae84db39d02d255efbce2207b342","e3d196421e621fa84174dd79502e01d2e00d67e23362a8c530f7e05cd68e8ea1","f5e8dd756948f1c077b3ecccbdc1f95aa5a5edf4f58dd079667d4611814666e0","214cbcbd70d482acbe40ed45aaa8383e98c86a86706afa85cdddc9719ac548ab","73f84a43613929bfe3efdbc61d2dc1ae39e5a32c35795f7806cf0a60c83e60a0","6957a2d31554536d37e96402c117b2429f2e9baee89f26b87caace936ca2ac37","bad9e7bf88505357ad4e64ec0a87b7abfdc783fbba6d3c257d2eee2493703304","c90c20f613309279aa05bcb314e75d762538bdb1e5bb1ace75d1c1ef2a979637","923b19f9e0d134113ed5b15f48a046db1afbab4e34abad9993ba873b9e18dc7e","3c4ab379d2e80517f92e24479d0161f58fab9ec7b2b508d2f243ca765aca0050","e18dd77323af9b0e4f7b8a4de60688b08c157814a59383dda5b9dacce2230f46","ae76106be2fe3281cd7e96b9dc9e12b4583e61e31bae624656ec0feeaf75371f","afd70a57b376a4e926abd4c1c8e9310fe96c969d5a0197ffcb565d001676a9f6","d7538da5cadf8bd654a7725666b4382a9ae6f9aed039098a36ee878ca6a3bec8","8d48652a8cb3ab8370fb264ba855d9f5f232553a3d9f5bd25a88b290e3e23c10","6cd4ec90f2ed6e15bd4e940d5ca7aa38cd570d1cb1d0b9952624e5c8ddb4dba4","a7f1293a7400026dc420559629b54c8493343200ff36d92a8d78502a9282a35b","d2f3f85583a57ad1987ee9f6b8b174499e9c5d7115e37dc9a62a2dcb9b054d1e","7ff52e014e5f1f653a7c3d0f5f323e8e7daf5db30abfee1380b78dada4ec2da9","be6b8d983bd7d37162db454ea038196367a799156c3caa33927494bc99d885d0","b343cbbbeae17e5c0ac05bab9dd4e08c57a1559cd31659d7e152bd122ae646d7","42c67685ee5027789a51538b046b3a7a11a2b19705ebc63ce3f0404b8e9fb0f9","693104e41fb5dc31f325c518cce5eef5513d91a650148fcdecc064d137f8581d","c54d981103b6a51e2e7f52821795ea2f8a2e08093cbeeec3016613697df11d87","9f1a99a5145d55e9543b58d51eef81ed14318575355f554c76c97ec043d31131","2829c78953b67be242428630b35cbae50af7dd9c9b24ef5c467986a1f14d94cb","da3eab33856ccf1f35e8e9ded34994f2b4a23422f1e0e99f38805f66d4231a3b","43276dfec18eb7175615c6327a4ee01a116de68e37cebb56da1dd742225d3ac9","bc6e29688d6a2cae05887ddbb04aca69aff1e5102ed1074671445bcca1c881d3","51718633ad06a6d05d68a9ac009d49e97b84d980ed06b1cd04f0b40398310d43","ff90a6bc7812f609903f41b98c60f3edc2d593483fdeb9bed20cb93e6527a777","7da854941074e76cd1ed6f23c7ae615e931589f9cd3ef919ce832f47d666ab6d","2c6dafeffbb2afc2c681099fea24af5b76c43553d40867e25efe097ed4c78965","64135cfd2a693174828c8e842198f5e6854e6862df1ea685d62bc1a20fde9006","8c525341425df5d0863a79895b37ec46d306f98d856f6094b52c87c55a77fd31","dc8a332007798357766fb7131b180bbcd917b5cd98916d827d9a05edb9260e0b","831444604ca9fbb1f144fb399b92e3de5ce9d6c4c651f061fa5e34f72e29197f","f5831fcfbcf7f09591af1e5dec357cacf57b7e1259267a4ae5769b7f83f8a441","aae56a55145c92171dbe7280fd6c0ae4c286b2933b4b0ea56d398f6abd82f454","2b8d26d51897913d32cca6dfcbf2c509e35f77415e50a93466d560cf42ef703e","4fb248f0a9fed6d8658e6bdd6c1422b1a7fd9b27cf30bd3b1a5a26fe4d7d8963","d51176c3c6362a0f9a59184c71f3b8d8471b6a6a4060258c4264722fc5a11463","a2e88c1cb313192e2e5142e8898dd35b39a4f30d272cb07577787510df606bda","32b457a43b19f02c0fa6b92ed3171e2052cdd0eb2819fddb60b7324d4bc3b406","e172920ce3b5f5d4ba43ae4a4a2c6a61ea5960f267e5d25cc84dc12527005f6b","0e8785bc79cbfc14a2c4a001e272ff0ec909ec94564705e85664db9492265e1b","20c8eca485f3f73c9d5855a1c99029f2907846b88d0ec81dcc11d6abc20f5653","25c8897df13b2f74c1c3e68c3e8d1f22bd7adadbb0ffa6e48e14e09045694ff5","253db8a1162220c88e504d2e31af9a9afe802a498a8b4920ae5b8751bbbc7bbb","df35bc4ff5f2fa4cddd5d499477c595ea76644bd03150922e0c20184ce1f76ec","d8c33684d5af091b42e5e4fac2654ae0e4fb707ecd56d2b5ea954f1754dbff36","07d5c61850d955ff344ccacc4c35a1cc1b534ef92201da4d555e3cae26ca994c","19ba4067fc331691fc5af2aff7dfcf39a0b6d50b5bda255e3c6682b32983e5d5","a22fb21723983b4e2edf3d34893256c8b6075f77254f394048541f5a4eb25d15","969948f990cbb4f0b594d8b3e66bc37d04f4896314afb888e507ae0fb9aaac51","8b9782193fd21acd035ca67a18e607ca68e8345d5931962ff5862d89fae1965e","107c2243004cd47d8a63b15b42644343db310383b8008237f7563710116589e2","9a3a28ed970a073f6f87f9827839c2d06ecdd05f45e07ce30899f72ca968b46a","08107d403a7a4235fd239bd1185800d10f646ea07a71b119c2252713d466920e","175707c3c7618f8e3ea64636dc591ed6892328fa430149d3ad414018751da8f6","4b086cd2bf1f7fdac4fbbe9acb863b29040fd8ac4188c5d7a5b3c95bafa1b380","2a7ef8d34c40308dc2a2b05a78b8ee602f205e82e4eac3f44f1959e95bece679","022d05125afe3135d923892f13d1b176003560edd270900f52957a07e1efeab2","e0fa1fa96fdf10e88c8a23aa4eb2566232ac5f8d93961815158a7c6b22d7efaa","0a6a304a71bc56611b60ad013e583564b6056b8265961123d77fd65fd8b74061","63bba6da188f796caf21284a73dab06f85bd17042bd5ad49c0ec81451fdb0f5a","5f2a79b58c58371b68d6f3a3a225e0804c6ce517c423c8a1efec234765de7586","358a84f9e1f6680ffddb329a580be5f932c7ff10ced8d60f43904f66dddebaa3","b60efbac98231283107121b5b3327f56a6632c2d14d7616920bc309a4f6d4bc3","0e58e6f3fa554921c7950ff344d6c299caf9260e4c78bf7c699a6b5a6d02e6bc","3eb80f1addaca2a298abd6186a2cfe98567d88635f334a0f2415438ec5f2d3b7","1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","8d5af927098c40f41f315552e7ff9ee9376b26fc03e83421a0cf2d93907ea346","c993b44ec48e09bf9e9b512941379656f9090ddf81f7ab61b4d8a6cdbe7ec409","54f323b0c25677fcd7dbb6541667f131e17bf49d48b6efdfed72ae71722fe8f5","7668c31fc1a0d6c5ee0ae1048d41f7232a56fbe18367929f78bd0c77303af11e","8b41773894ca3ba064857d72a6cbd669b299e47915c3b97cbc2a613735cbf35b","badddb55fb1a8186abb7d4b972820f9e5763916e59e9567a847d0237ba0f72d7","74689440172e6a26a40b93a21ca3f263e2d06bada97b270a884737f921e7818f","9c3ded425a22114083d56daa858d27b46bc1b059aeb023f504574312ab1439ac","08f50b290537a8bea3a96920b5d5664d4cd23472161af28c8bcdc5091250c3ce","c4d0d823f114af573cdd62f5724648cb9df7a7ca1f8473ebe65b7d7df1789422","e16aa5f3e598ad86a044934071f16729c0f95fd77794f0ada7a88faa2f66c185","098148c34c5cef91a12c622fadf8d19a7f513206d3dc61fc31af13fb361d99e9","4130eea8635f6d6bc82a8a9560b8064c163b1029d3efa39815fb53c4aa51c145","f1c957e436f37c6bd81fd6bc6a13eb1bf7a9ad5f297a167db0e96415f621ed66","98144631dc436418a7b927607618136353a32f4ccc420b76358a730310bbcc8a","026447d4bf29241ac992589ec620a86b13c76bdfcb1ff8dcc7e26f0eb2d0d210","12f79c131043198b4d0f789df3cc4b90d5cc00dc0c64afbe9e6965f4a55b3d61","fa890a742e523ead1ac2d8738c29c843d2a1acaa98da02a7667fe00d177aa196","b99faf232d2c47ddfdfa086a4bb0665bcb25e3a3989498d467caaa79200afb06","21e4a665ab9901d7a9f42aa585fc3bfba8ef4d090640a1e412669a0bb392edb2","e7d94b0ae7d41c1bd5f1aa4c2bd62676af83e1fe743316bf82bb32ec1be11421","aaf88ec377baa9cf35177eab96b5db57bcfdc5bbe34bf38b1805d883f6b2cfa4","d4b211bb230daef2a02fb8952c1b21730d4d14d70baba4f04c5efce000205ea7","8eeb941ef7939f9f0180fafe779c7fa9e1049b5716a654fc25463fbf472d3dc9","80e2b75b44778105663dee124d241ba133250df92d3b5760784ef9683c622c1f","e23514abb70d5803377e5367af5a9554b15529d97b658930335b195f9d5753b2","b5af0716932f268f2a4a41420d7ba9fdbc037e1bb406aa57caa7616b173422c6","af67cf7922d64c7e1cc0a0c327191d97ef6e1d54f7f1661a06e7225fa8b35e48","67ae5eaf9ef6ed32a30aced05943e9f83df215d62f80076f7cce3a55d08c8722","8bf4808d0cbdfee342649aaa6744ccdb7f3b98c127985024474f961e3a96d038","27e56c281e88ef3107c9ce67f02bdcfba297804d3d14006a3e3d59f45a3f1d9a","42d00c41e9cffbb3cfbad77417055030f952fe8d7dbd8f646fd0005153b6e821","ecebc4355edf1384d191afa1c0c4ccacadb199ab55c90c9c450720425e975fc5","77ff7b7d3bef88309b2c6b48e2fcdb7db8000b57f7f627b9481b014ef2db7581","b8d5fc4baf94f4aaf437c2505b751083c58983a126fa712d34ac5e4e7d064ee1","8f3a98972a1f230e69a9c11e2b78ead1761bcba0e6cd7ba029e1e57cb5f89eb8","f681b47b5e0275d8a2fe219e40d2c80fdac5c6f865af6fc61df0f15c59c6c9ee","17bec14562208b93665ecee566ecb99baf6ca82eeb92ab1eb9e3442aafb26a99","fb00be4532eaf1800d8a2a625a8843f5d8f122990d2bedd72ebeb90a555f8cd8","374ddae0cfbf334836cfbaf71ec0ab9c16e677306d31f6e843e428119a90dce7","688e6406967d02af975bd78a3015d9ea0d1d3bad93d62df0329bab69cd278f97","d8fd376b0555bd256ee497d88cfad88d6edce66b0136c57ac4e06c2c1226b48f",{"version":"ff7dffb4be5f70292b1f549465c45ce1d458a01d2759f3dd868e3332238fc196","signature":"6e0ad30b2d82eaf5888f9e89904c5013a296353257c31b5d761b9774544ab13a"},{"version":"86c34259aea465046e20934622b636b353becb8039a4dca2f8bfa4d464c7c775","signature":"359a9834c6863f2a08f40ddcbb6f0958bccbf82de5c6bf53811dd6407ebd5419"},{"version":"78132a6534235c8722a8379a56908419aeaf1600571a8242f6e6da9a0155209d","signature":"e092af7fb6e4b96cd1137ddea63e6d9a6d608afd32a3187215a621746a9a633a"},{"version":"af9718b28820fe36a656942eae4b2c168d941365a617c7de32bd8266932d2e36","signature":"8c440684c3845d829916f1c75b983f69263707d7bf1db14aaee75fd890dddb26"},{"version":"e8938c8d0fe5db23a94c59c3692123f412b448055b384cd75c5bd4154f751804","signature":"9e570ff52fd9e656c7b237b7b838e889579c9c4bb388b2bfcb9c09450273007e"},{"version":"fcc86c5d15efa5071b246959d96b0014ca03166c4bc39bfc2c6438efb0146fef","signature":"908ae9ddde43b8cd8bebf4489fa223738936ea291a2c22acfd9d1f8e7f80c4c8"},"eb76861bb142f7c50a48d0dbac8de02f7dfbe2a0c70120eb9e4bfc323416587a","39d2b1cb54393286008cc6e0abfef5355a90db0c82699e0539940c3f8520a571","b3fa01d3b343a9030cb5db64e92ae8f7c080d112ab10df2fd74749f807860941","dcf1aeb81aa85d7a1d8e18258951f8932ca5054b8328a14d57468bb1dc1f5761","2705ae1316f3fc38cc78fe19804febc29cd0bdfcf9f2f8793f2e0b5027a03ab7",{"version":"5c119adc328a715876fddf2bd524f3bc70f6fb5fd4a0eb5556fc866518efb50b","signature":"261e2cea40b6dd9a4b9624c6fc3a232859da20ba8646d4325e674472dc578f25"},{"version":"f8e2b838c2608e4eaea27dd7b38287b07aab797e0f9f284517ffb1999a40f877","signature":"96f7d4d6bbc6173be7766d6648c8cd33d18e2fff000b79dbd4ea384f8c1ecd2f"},{"version":"af749248609a54482afadefe764cfad1bf0b8b914f85811779263efd477231eb","signature":"1b14675f474a9928e316e35c16e4ab635310da112a018d915a0c640587eb5d64"},{"version":"10c691b2238b6c7986320254892c8ec4ff8ad59094faf014eb1e98b6dd22a710","signature":"82cdf1704c8c4853db1949997a9600eaf330ab635c9077c7fcd87939b296b2a3"},{"version":"86c5cf3adca2cab2ce87c4019af6b9518652429e2a5410c90437e34388dfb73a","signature":"906777bd13a7fe23ff161d009ab40e46a42be150584cc222f2f9fd362b03718f"},{"version":"84d0cd75d493d265d23c6e35f555e6b61493a52568d77f0cd6b6366e3aadf2e8","signature":"288decce5ab474bb0886d1bc1680c0dda4debffd88d946c5f7752cbc7c4ae7b3"},{"version":"4b4e0536ba7ce60e1fd7d20a69606b0f9ca379d404b96d5448ecde76dcfd85f6","signature":"07bf5700a763e91760556a4b524c4d6f1cb1e4d7e4c5b5d23dec8ff7ce40f383"},{"version":"7557c95d603b0edac412ba0795763be8b4d8eedd091eea3833c089418cd2bc7e","signature":"48554b1d59f82c34805b13fd7ae3f9390e413697732bf7610b46573bee033794"},{"version":"9b05c1fe6957b7ffa5dfa7a0efdbeb5474287f2fc0901538d8c12cadb2dc37ac","signature":"c30821a1dba9d85445d1dc4fd048eb4e7525e3ef1088f35e814f7cd460680072"},{"version":"5ceea05f226c767328c25d8f27be23be239b25f1e4006147edbc7c1f6d22a203","signature":"163ab01f3d4cac3af4cce8226785dc051c2c012face3252a8f0fadb700c878c6"},{"version":"5cb1edcd242b32897f6991a9ed63e278d7e8b82096f3b2aeafef286d228f5c04","signature":"b77eaae24c21438619389fee4cf142805f9b728f59bde6141d3b03fbdc0aabf2"},{"version":"c4bfd8d3f107ccdfda906af71a082e4b3395a1bacdf0bf258716b072d4c3d55f","signature":"f7d0a2355c43765d18780e2e6e0a959df5275f5bfceafecb5041e297cc508f66"},{"version":"14094294073478ac05eb8324b4dbc56b31906442a5c0260b3439491a3acbb358","signature":"c752cff5cfcdfd0b647713524250a7b08c8eadb65a0e46aad43ada7b0878675a"},{"version":"0859aeb3f2d267724c4d790d8abbf407848594eabea961af6286a8de73cbb456","signature":"68f7454d61ef7c6b4d69e368c0573509b844d76852565a6eb80ace64d6bf10ab"},{"version":"358fef0918e52549e05f9e0b5691f7f40a2427541ea272823b41971b3339aa56","signature":"2bc4488ec029a8785e1af861de03e0d854b9b4fa5270fae7d6438c0b106969be"},{"version":"92a8868749a414f611d80c981a3e2f8cb36c0162423bb7c0ed6ff11ccec9d4d1","signature":"12f0dbaf7b8471904e8913a66e0cd6656fac1367ef472e5fdd56e67654003864"},{"version":"530b23aead4c1e998264286a7cf03ea5fd5d964035561e512966d9dc54ea11a5","signature":"893aeb7ccea7a5d70cbf9cdda8413b607b7fbee7ee494dd61bdd7706f3bf5862"},{"version":"503b9f1d1d217b76ede3d4fec4bb4f8a3a113c1022f47f693de4ff7bb058e550","signature":"178c518b2087e9b1bd7dc8a699823ea30fa32a619ee1fd0eaa1ad4c820abc51f"},{"version":"a11fbe6195482d2427d56961e07cdadfb09926dc967629dc71631ef4875efeed","signature":"09e56cc75a4e49208acb9317369c0d2da195bfd81592487cb853cd44614ec0c9"},{"version":"7a5829a31122d44a5d7bab52ccb0f78bbff05fc257ba7a9dc3e93e4c98fd7e9c","signature":"266aa5e69f4350a0b1ee18b210a7fdfcf5dd210cd61c2ede3804946753d7cd7e"},{"version":"c85837dda158e72a5ac20be9b03e348e25452069f37a912cb92364c1a3238169","signature":"07d358df3a7c5b90b0c251ea420fd89ec3142bd3bba86633f08bb10d9b518eef"},{"version":"0efb52f50a1da290edf3cb7638088a44d8da50df35c966e155972223fa251052","signature":"49e8d029857677e4d0c8f881ffc9f00c4920c3e0aa47f69286d751780c404b1f"},{"version":"e0d2a7019958b958ecccb8bdb3914a300aeadb1817063b8ca4b60bb6f2827eac","signature":"274c09cb2ab24fde1b0d0e617487d14caa8c2af7ac19453e6d71d55897c0aa62"},{"version":"099e1e7fb08fd74bf6214f41fcc1fa22709096a43a927acdc6202b98a442a7a1","signature":"74c1b5b29a721115a0030c0ea268a5c2bdb9289f45a409d8042f6f9989f2f299"},{"version":"33202822492d7a6e36b845b4448035c625276476cb9d558493d66833e1cbd919","signature":"44e131fbb57719ad3093f5d9c2221ed53a4fce20087b555704e58587bb2f1f98"},{"version":"58d107490a995203c8179112ac6d8a323eb76333d82780b5b78c39c76f4d07d7","signature":"8b064b6a7b163f774fc6dab7424eacfb81c4a9899a973d10b3ef8b4c1f5a0c8c"},{"version":"659fefd9546a002f9f7509a31613b7854da4b7be542eba9f62bcf611b127fd4a","signature":"4006bc47dee2b2b6338c1f8076f3ac54cc4d46776e113c4f6fcb9a02624bcf8f"},{"version":"6ab5d352b9a94e01fd5a2135e40db058c2cee58de76e0c49a74eeaa0dd880f5d","signature":"b792c4ba40f4dfefe064ed769a2e4dd650c55faac3166e18fd668c3aeb73a848"},{"version":"dac1696eedd7d90d50bc34f5a3808b99f59607f6f439b2e7df7d135d439a9329","signature":"3b7454717e451c9811e013c063567b6c8e0de1c3b896254578f861fd6166aed6"},{"version":"9d9c330bb61dded31005ce687d6412b04dfbfed733f27b8d57a29703ab59c584","signature":"d67b87a18cee63bd07dfac3cd958c7e1013c03821ebbc18c96c6455522bf1b22"},{"version":"e1a1621ffe361fe0d285e06846d17050a643c20c550fda006a34b916873bdbe6","signature":"f3bf0ca6122c54a0cc9137d348535e07be27a7dfaaf5c6b763485d06d3394b3e"},{"version":"ab198c87b96ead12614b334b92499119b27bacfb20624918ad8be64b3000d2d8","signature":"77af8c159123f4c16e8af431dfce6054b88b116e09bbf982d61234e17ba7421b"},{"version":"559140f20a495af9fa4e288937f81523b010a79eeec84dad2bbee87dd4aa2087","signature":"e2adae44815e897b1b92a792b2ba505497ef2629454b80551c19a39d65916a0b"},{"version":"6505d49ec3d1cf019d7f914f62947344818053e742a0f151549ba5704f3bf3cc","signature":"19e2dd22083b4f038f95c6d4bbbb272eb5f4da9d08146a098af74833bb30482b"},{"version":"e2621cd981e4e361f88b0fe2a2463da9e9ecbb9170d2b1988d7833bdc7f56078","signature":"2540f9bf5951b6678732fe428717e6914f759efa6e3d85bcdd837054a172b975"},{"version":"0965eb804af0866c00632447063788b7d2fdde1eded4868baa13128a84936e5e","signature":"d6d556c18cf8e07ba308dd614a386526f6f11ce5afb3c9bb0497f2ff400469b2"},{"version":"fc407ef348a98257c67ffd8c377b3ea5f6ce88a0e6fa657e9cc24e866be3da22","signature":"3bb47b7e11ae6fac2863a6e986d81c922af9fb7a3f8326f1279abd54cdcfb249"},{"version":"d2cea10a69f6716f202d9c6963cee0c54ade8319fbc6343dde815918f8382c12","signature":"da4103ad4b4ef557d6deca0d6f6fb0344503b27d8939c2438126a5590c323bb9"},"9a6fa82c8ba263a1ccbfbd0b76be4853e4ce80088c19a05986053d1236d43daa","771736b1b19b7ba3ff81131b4e4e3f2602affe9014bc348d055ab1f29fe8e111","a0cb8606eb67d99e44ad83f758850f9ec0f93ee41ff1438705d730ab55e2152b","10d4be4e93c6aad31c4c0596e8faa91c136fce7f844b9857c43ca2e772f29af6","b631b94a548848e50a2d73cb75d665fe501f56ed71492ba35c71588e3ecc3d24","82bdf9c5e4707f7e99d4f2aa9d0322cc7763beaa4f4aadb8975a17958a543a53","a2e59f767d7d5ba0ad1a3e163959d89329b14cb38cec4fe1a1c3f00855794933","debb3ab7b5ac10a524327fcd29a9954f0d4d3bbdb7a139e50a52cd7a2d9714bb","905938b5b97268d568b5079729896ab9d85dcc7580a7f15f312669fd324aff34","d56beda91955d2405674b64e09fa5d3b201ed523fdaa4f22106f265abe0b52a6","8814fa8398cd0c43ba36ab4b3e0cbeb684929c2ee75b6dfc17fca5779a54b312","09cfbdc7ecad1afdc03f862f6b055dce06adf42d4751469dde62bbd0bc66e4d2","6d1c39508b7cc34f216cbe7fb50f4cab696a701cc5f16f8557fa1dd92dbe22bc","0232138c115e763ca41fb2c99345f5d00b38dca6aa318f92496969ed3976ba26","7dc421746b898f625a41eef01991552dc2a736743b6896b78b2474dbafadd9e1","729f68032b902fce0e4518d639b90b3ae566f653322f6ee134fe074dde5194eb","f451bb486dbe9dca748377e54f3c6b265bab7ff92d4ada0807931d9d1eda05b3","dabab4ab3b7b0d64307a30a214aa8d84b3218a6c13b17c55adda70f3e55718b3","9c5c3add0cd1a4a2c3b148bef1000628975c30f7fecaed66b952635b17921f80","fd670008e1c0b86fca825b0870ad25726df1a3fd5e27b57d7c1cb0c30713369e","e5eb34a6d6dcbd488012f8f35d7fd747433bbedeadcc5061a7114b54265ef6c3","0cfaa3d88b15053e766547c7254bf7ad1925ee306a1e95b2d92784d4e9857e0a","bb4ccf042a5fc0a77e455b15a1d6dea6e646811797ba1bb271f45a1814d127d3","8805654981638cfceb30d0cb69d9d55e7624fd153a07934660bf39f6fe11fa7a","ffe45a0886ac155ac748f57afff2d307a24195d1365a9068805035a42fc36535","209b6ad1436a8bf2196ca677e430a8d05534e9fbbc7c049b0408ada826a658ee","c5c2d9df867da5ece1608d7e8f339f7af9c6e07b07bdb2389f979d5954ab402b","b8bdb2db25b4100161e1c2e14c949d11459b518519127fd60fdcfa0adfb148b5","751d1a0f997306f1717749c227c7d15132331fa0c944b0b9f8b6d7b94e9ed0aa","8d274b8270e6f65dbb08924820976639ffc3e2ce3762863f4726b920bfe51a86","a8afb2426aae23fc745745a06c6171cffe9eaeb6be14d8eb2e24556b68f2b87e","01f21dec5d7e2fdcf8f298e4eedac690b92ca61e741d8b642e1b96ecd24458f7","c80846bdd075b043f17ad6c0e5c9f042b96c92904bab296d5546b66a0715c5a2","512db3d42fc11be2a41f0b504025d28f4952f3dad5d6bf8c22b234cf86b1328f","18a9089b46e0de4ebc1e7d2cb9996954b92db8b00df49eee73fe0ee230f78912","13f7d75a5b0bf0e80b0a2f659d4845a80929b7483138aa7d3b7f18390cb81573","95c29bcfbacdc30a6cb53ed70ec819849d2b1a919064618667000b739748fa3c","0d8e5dab8f673629c413af62dc258bc8434502b624e4dd0ec74a6f5d78901e84","b4f40889a37d3418a4817a44eb2afe9244e8739cfbc5839988aee305cf0d0568","cadf30e71517e0bcced437a7b108e8ca6d07523a5f6a5c04ee94b73d9c74e1d3","2a1ca525d4ccfe46df2ab79badd4c1d297fe137d92ddb61f283b6ab67bf33b5d","272c8775891922a95c49a17975029ff4ff2ce8c1ce6fdf19c010b6fd4510b767","b12a9ef1c5688ed8753797bbf3eb3d178dde3d8a7e74632caf38c04d9d2df374","5ea9983857848c97e1076f184a1f66ae19d7c786fcc6ef2a7b6e432c3d5f6a55","e7818f9b49f5aad015055446fad21bcb18221d90866be6869eed9c094d895a82","9818c9ea597b096e8a25ab57e559f9aa77a0ae77e95ac7683a30114233e109e2","51853d4d3bfdd8e95f1ce82a0d7c1ec9918381f23e5c7a22e74eb4e5cab8520f","07b368fe05496c6190d450787b41f409a78650e692f909d33bebfaaaa39215ca","91eb21bd82cc331d43613634c7723068ba7daaa7447d055779568fa831e65972","f25684e86972a0268a5275aa9016965ba4f3559a0b7d17123fa42be8505a1de9","d9bb2597305abd711c1870db94603cadc5d5c104f1d7f48a66d987e44072dfe0","94608743beb1c14e145861941191ba8dd8b092fe9f952cc361386929edde5297","fde1dcc51826b1de121ca3f31a34515777369ede0d9cdee92d9f69fcebe8c080","4e1d0821975eccac0d8dd05114cc8a4af85384974b5cc36f4f794701148ca571","9382cd80f51e70c7fdd16fa8aac523300bb2c0f84bc4e68f97d3be01861f327a","b591e541ae1f473ab7156a78db4628669542899544a5d59a42a4bd496458f92e","648b01f7b1a4b0ed9ae3975354d423aa471b4e7553f6ef1603dd75dfb850bf78","3cc973ce6de3b1438b1d08c5a0b415e65334cb4093ab45288ddb06f29a0a80b1","bb487ad87083eb51dc9989d6271c49bf600945ff6878c30b0cb04eca2c69a017","7f24d392a436c24f098e5de4879f8319da3d582d3765eb8ae5445c97790094bb","323c61bc70555f8cb23aa26d69ae084bd6e00934053bc79dfdf7778671c0410b","14b2bb335421928573d218b6e0ef4d32e819743efb9ad53d537c8590eb71a9a2","e13fb28e621f669a9a710a71f352fe060a70be237fa78e659e28acd2dd3f6cb9","c53ad6e31d7d703f61512a6760525bd2a362ed9d71ab87f7149b1fe991fb179c","43b95f7d3137ed93183aeea38092eaad1a29184717b8ada87d46941d0e72a973","8cb4a0da83c7e8e6dd38fc0a35150947bdd3df3c367e913f64a4ff6bf90ab695","8ad2a2cf8cac4806b41a83d7602d74a544df79b49fc3ceb09c385505163ab57b","546979cac4ef9c08209d6c8d27845e9f951bc6b1a8ad5f0332fef8e0dd5c1842","695ebf21677adca99575db290ebaaab052cd9b67db3e58b96ea9beffa2b8520b","efa83a855d11ce8b33380473d417f2f37b551a06aaf7e3fa4f1f2ad58386ea12","e8b58fbefa86c7c46084ed86bdc3fa22350df97d30328facc63fbd9c3f42f5ea","95d3cc26a98244ac9df2be6ea562e5df482c72e4218ef0d4dd89af87022cf229","97e350f1868b36b39c7fdd0d64bd91dd48e355b452dc84de6fc4bd05196548f9","0e64fb82055afeaa4d099a6549bae27defee10cb79e47ca69c25f66fbeac42a4","49a59b64320f39788cc504f35e12f01961161f7ad92e2fb688e0173d51d2901d","f7750c9359fd236aecf8bc74e47992c17ae8596a8df28dd134e6c56b418def07","cd54e59c82e4cac94f28705937a3340add15d9f82bd6b9014745f6e47d4d7076","d4c41976704a37da423464fd9bd8cbadba63372a996107a11c919b449c1cff6f","fba20a0ee9a7515c3739f9006e2225d0371e8c87bc29f334de0cc509399c79e9","b542cc10988bd6f8d96b234974156f3a094609f66d8ea64000ff8cb4d8402779","19b8859e2fffe28d35df9074227bcd7aea54542366578863736c0ad847ba8f75","f243156e2be74a6d3cfc55c9e15df882344402d9a1089c32eaa131a43f38c718","7fc3c1b288bf173eb7c6de841002cb9e337d027c0cec0bfecfd527f2cff484aa","ab7e5d40b1a24221da3a66b6b695b345345b80a79f0a287a9e8694a6c4fbe812","7aa57dd1af7fab949ab2957a779e6d619ce7b73aa938aa7331b63035587d645e","b6ea8d8b96cffc63051a7c9e995f4e2236b37413958d6b421e8a1109d350556e","e7d30568e771aecc7b55d92186593d0b54238fa438a8d32d5e65cc5e086f2d06","03200c67d843971eff3cecac9aad1223c956a9c5517aaab15e56f84974f9cc22","8ec07cf076bcd9d7ce5965917bf7f00681f2faeda773a41929b538d425b0287c","d6503783c2ee47092c86a7244e24ebee738d98cf640bacc2a047a01d72624844","148b30bce91ec08b57b53310519a473c2146535948d2e9f66ed507b236c6d7e1","6db4629ddfd86e4a6cab3d8c37cfa9ea64558c7150cf51a85491c5595f415784","18ac0fb6ba31c2b39b750fb8508cd8bb0fe1ffa534c45af9169e96c50d02ea90","0ba6c5e2b5d570668fa700fa4989a2cf0478f9eaa6f4e068b808641d747ddd74","56fa44665cca7c25b7f88a5771c027200e5ccc32a1a4182ab15ead1b6d53c693","ae93912c15f3df75766e7c50a2d7b0d89f41560f0906dc1a70ab45d3b3f30bee","56886eab67b8aebec58790f12d701573eba1a69c4f370914a97a8b9c29049502","fea7827f32ef9ab636f46b24db0d928ea653aa8e337968b3e6a1d6371ea57de5","dd66aabbd86c4044cd215b2d2d4b2ff58dfa06997abe9940a8e92cea05289cc9","261318119ec3cb7c7994e9f6f3711d16886fe603fa88367b7c12a6fcb928b17c",{"version":"32ed86a16c9ec31f803d60ce6f71cfcbe4f273887c85aef23aa2273a7b7b8450","signature":"3896d43263187359bd05f07f0a7b6bcce523c21a0ca699bd286a84db330678ca"},{"version":"e011accf14484d69822014b24f0d6079e83653a5ba371288a1f9cf059eb18d9a","signature":"6470a5ec8cd7d28e214b440387ccb31efa6ff2b50a34666ad6c458d53e10ac49"},{"version":"ef48460a8c6fffef0d8aff5d6b5c02f1502b2c8d7783f4fba45b048b41b21706","signature":"3334b621b44a4401d7180ccb59ea9fd928566c616c3827289836a5b0d7fa011e"},{"version":"89cafe13391ac478ed904d77682174cc242858d736a5e4a9d079f32a7298c075","signature":"9a9efd7230d914a2a78911ff39eb0c5d5f026bb7ceae9644ed5f158b41475057"},{"version":"bf9879eb8a89aa02a8608ee2322295adedcfe63b329aad3447ffef609fcd22fa","signature":"15dee0ef3a6264ec70494f3b4e1218ba5183c66357ce8c73fdd78db76fdfdb7f"},{"version":"ba0f122a56cb005bf8e9d98fe54293c9da7e9c18af91603a061b5af6fab76645","signature":"04f60b66ed8dbf3999b55498087b678709bf2791461271bf7fe79a2a41186929"},"6825eb4d1c8beb77e9ed6681c830326a15ebf52b171f83ffbca1b1574c90a3b0","1741975791f9be7f803a826457273094096e8bba7a50f8fa960d5ed2328cdbcc","6ec0d1c15d14d63d08ccb10d09d839bf8a724f6b4b9ed134a3ab5042c54a7721","ac393d11e2c585763ce7a8b9118ba4a809cc19f9bf6d647657d38268ed5d3b56","b61028c5e29a0691e91a03fa2c4501ea7ed27f8fa536286dc2887a39a38b6c44","a4bf154e0f9d56112713c3a7d2d60c85d667cae17e69f7869a32578881b652a8","d5f65e3a5277cbd0b2c89da26703c5879cc428da7ca816d1d1fcdfd7c0a2500e","c784a9f75a6f27cf8c43cc9a12c66d68d3beb2e7376e1babfae5ae4998ffbc4a","feb4c51948d875fdbbaa402dad77ee40cf1752b179574094b613d8ad98921ce1","51d4fca2239d818a6254ba46be06e4def3be685ec034e9255cba403d3b27a07c","b457d606cabde6ea3b0bc32c23dc0de1c84bb5cb06d9e101f7076440fc244727","859cf43771b68e589bb12c6e5cde3edcde4b530c7d324f455af2b9e61d4f4768","9faa2661daa32d2369ec31e583df91fd556f74bcbd036dab54184303dee4f311","ba2e5b6da441b8cf9baddc30520c59dc3ab47ad3674f6cb51f64e7e1f662df12","b7e91960129ba8a3c22f2402dc8d901b07a44fd11085309ba4780ea044f08323",{"version":"63755cb31b18682d2891af837239ea195dcc306f6c95a4bdf39cd37962cf19b4","signature":"87142f610e135127913a5c98dbe16b8b9c1adc170e2b845b95cf91e5b3b772f2"},{"version":"701af13c15ee086b3da938371f82f8c654442a8bb27d02e128b6de8e3b50faea","signature":"99e0eec34d543affd7b59a98c04b654df31d2de83aa74f394c58530e467402fc"},{"version":"fc03647279912a7affdfc30afd791ba3694f9d96a002d2dd5c7b171ccecc624f","signature":"8f062731058402a5cbff153513af39bd3b5b9f9b9b962c5ea87125b5662ef6e0"},"b40885a4e39fb67eb251fb009bf990f3571ccf7279dccad26c2261b4e5c8ebcd","2d0e63718a9ab15554cca1ef458a269ff938aea2ad379990a018a49e27aadf40","530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","0c46e15efeb2ff6db7c6830c801204e1048ccf0c8cc9ab1556b0b95832c9d1c9","c475aa6e8f0a20c76b5684658e0adaf7e1ba275a088ee6a5641e1f7fe9130b8a","a42db31dacd0fa00d7b13608396ca4c9a5494ae794ad142e9fb4aa6597e5ca54","4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","db6eec0bf471520d5de8037e42a77349c920061fb0eb82d7dc8917262cbf0f17","13c83c04f3cbd2da8276c6290b75f295edf309b4f907f667f1b775d5f048f47e","ca70001e8ea975754a3994379faca469a99f81d00e1ff5b95cabac5e993359aa","d6fa1d345cf72ead5f57dd2561136b7d09b774891d81822087499b41b3f04913","3bdc578841f58bfd1087e14f81394ece5efd56b953362ef100bdd5bd179cd625","2bc15addade46dc6480df2817c6761d84794c67819b81e9880ab5ce82afb1289","247d6e003639b4106281694e58aa359613b4a102b02906c277e650269eaecede","fe37c7dc4acc6be457da7c271485fcd531f619d1e0bfb7df6a47d00fca76f19c","159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","2a3e6dfb299953d5c8ba2aca69d61021bd6da24acea3d301c5fa1d6492fcb0ec","017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","cf94e5027dd533d4ee448b6076be91bc4186d70f9dc27fac3f3db58f1285d0be","74293f7ca4a5ddf3dab767560f1ac03f500d43352b62953964bf73ee8e235d3d","06921a4f3da17bed5d4bc6316658ce0ea7532658a5fc575a24aa07034c1b0d3d","90ee466f5028251945ee737787ee5e920ee447122792ad3c68243f15efa08414","34c17533b08bd962570d7bdb838fcaf5bcf7b913c903bc9241b0696a635b8115","1d567a058fe33c75604d2f973f5f10010131ab2b46cf5dddd2f7f5ee64928f07","5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","5e126f7796301203e1d1048c1e5709ff9251f872a19f5ac0ee1f375d8128ef9b","147734cfd0973548fb6ef75d1e7d2c0b56bb59aad72b280784e811d914dc47d6","d2594d95d465026ebbee361f4819dc7b3146f4a8b42091ffb5dd90f9ceb345ab","e399d54c1b272a400ed446ca35d5e43d6b820723c2e5727b188ebea261e7cc2e","123568587c36c9f2a75091d8cdf8f287193855ba5aa10797b4fc320c80920b7f","6deffa531bdb8817b363505e88d957653d0c454f42c69e31588d00102cd1a076","973551068756351486afe706b240eb4dc83678ab2d829a1c6b1a19871394fd5f","e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","9b7b0209a8841f5ffa60ccdfae26f7dc70ea4e7e446a603ef4732e84f1bb1b4f","5edc4b81a61ea5e0319b32d8f581d9643cb747cf44477b16af048f62d358c433","d47c9f84b00def208cbfdd820f8d10425ead9dbf36350d77fb55d5ef6857dabc","3bc5f767d5e0cd548c92e4623e0a7f4486889a72d2ca9cbc81df760669270dcc","20cf19c8028a7b958e9c2000281d0f4c4cd12502fef7d63b088d44647cdd607b","799780c3726407eaa2e09e709c376ec459582f6f9c41d9643f863580cecf7ff8","37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3",{"version":"52e29afa525973fc7cff28c4b6b359d91ad030d4aa198f060f813d4abcadb099","affectsGlobalScope":true},"a890cccdc380629c6cd9e9d92fff4ca69b9adddde84cc503296ada99429b5a3b","168b6da36cf7b832173d7832e017bc6c6c7b4023bf6b2de293efb991b96bca44","05b39d7219bb2f55f865bca39a3772e1c0a396ea562967929d6b666560c85617","bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","2c49c6d7da43f6d21e2ca035721c31b642ebf12a1e5e64cbf25f9e2d54723c36","5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","e1744dbace6ba2051a32da3c6b40e0fc690810a87b9ad4a1925b59f8f7157a34","ba8a615335e3dfdf0773558357f15edfff0461db9aa0aef99c6b60ebd7c40344","6921769648e4b83bb10e8fcf7011ea2d8f7de5d056daacf661648935a407376e","dd21167f276d648aa8a6d0aacd796e205d822406a51420b7d7f5aa18a6d9d6d9","3dea56c1745af2c31af0c84ecc6082044dc14cfa4d7366251e5bf91693eecd8b","eb6360635bc14b96a243bd5134e471f3ad26b0ecaf52d9d28621e443edb56e5c","3ad73b5b1d43cb8ba3975b2999396e10bf3ed015b3337876079caf07f22501d9","62a64260ea1dada7d643377c1a0ef3495363f4cca36adf7345e8566e7d7f419b","8b15e8af2fc862870418d0a082a9da2c2511b962844874cf3c2bad6b2763ca10","3d399835c3b3626e8e00fefc37868efe23dbb660cce8742486347ad29d334edd","b262699ba3cc0cae81dae0d9ff1262accf9832b2b7ee6548c626d74076bff8fe","057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","d94034601782f828aa556791279c86c37f09f7034a2ab873eefe136f77a6046b","fd25b101370ee175be080544387c4f29c137d4e23cad4de6c40c044bed6ecf99","8175f51ec284200f7bd403cb353d578e49a719e80416c18e9a12ebf2c4021b2b","e3acb4eb63b7fc659d7c2ac476140f7c85842a516b98d0e8698ba81650a1abd4","04d4c47854061cc5cefc3089f38e006375ae283c559ab2ce00763bca2e49516b","6a2146116c2fa9ca4fefa5c1d3de821462fc22e5330cda1196be15d439728c51","b30cc18b84468d3fa20ac04ca5ba9bed5a03431fc8a22bcf2c266c132baa1d3f","a54f60678f44415d01a810ca27244e04b4dde3d9b6d9492874262f1a95e56c7d","84058607d19ac1fdef225a04832d7480478808c094cbaedbceda150fa87c7e25","27abd2f2ed5aaac951b12b8332aac7970c9cf0cfd88c458f0f016228180b4293","901c640dced9243875645e850705362cb0a9a7f2eea1a82bb95ed53d162f38dd","ebb0d92294fe20f62a07925ce590a93012d6323a6c77ddce92b7743fa1e9dd20","b499f398b4405b9f073b99ad853e47a6394ae6e1b7397c5d2f19c23a4081f213","ef2cbb05dee40c0167de4e459b9da523844707ab4b3b32e40090c649ad5616e9","068a22b89ecc0bed7182e79724a3d4d3d05daacfe3b6e6d3fd2fa3d063d94f44","e70d18d1352550a028f48d74e126a919c830267b38c76ddae4dc1571476a462a","5624b09ca38ea604954f0422a9354e79ada3100305362a0da79555b3dd86f578","24830e279f5773a4108e0cbde02bdcb6c20b1d347ff1509f63eed031bf8b3190","8899fd9f8ab5ce2b3af7ba0e1a47eede6a2a30a269283cc4a934ab755d0aadaa","f10759ece76e17645f840c7136b99cf9a2159b3eabf58e3eac9904cadc22eee5","363dd28f6a218239fbd45bbcc37202ad6a9a40b533b3e208e030137fa8037b03","c6986e90cf95cf639f7f55d8ca49c7aaf0d561d47e6d70ab6879e40f73518c8d","224d293a02b7d22edb77b4ab89c0d4f63b95ecd7c0698776719f33863a77ffdc","1518707348d7bd6154e30d49487ba92d47b6bd9a32d320cd8e602b59700b5317","ede55f9bac348427d5b32a45ad7a24cc6297354289076d50c68f1692add61bce","d53a7e00791305f0bd04ea6e4d7ea9850ccc3538877f070f55308b3222f0a793","4ea5b45c6693288bb66b2007041a950a9d2fe765e376738377ba445950e927f6","7f25e826bfabe77a159a5fec52af069c13378d0a09d2712c6373ff904ba55d4b","7ffef1ed1c2bc7d9cf2fc134a7e8c68b10416cdbe8e70da8a4bd7ad5c8698d9c","63c0926fcd1c3d6d9456f73ab17a6affcdfc41f7a0fa5971428a57e9ea5cf9e0","eb524eabfa1809d54dd289374c0ce0ed4f145abb878687e4fd5e67f91d7d08a6","4ef0a17c5bcae3d68227136b562a4d54a4db18cfa058354e52a9ac167d275bbb","b748dd4ccc072a2b7194b898dc8996a2cb56bfa15ccdb60ac0d2f9eaa8e28e9d","64269ed536e2647e12239481e8287509f9ee029cbb11169793796519cc37ecd4","c06fd8688dd064796b41170733bba3dcacfaf7e711045859364f4f778263fc7b","b0a8bf71fea54a788588c181c0bffbdd2c49904075a7c9cb8c98a3106ad6aa6d","434c5a40f2d5defeede46ae03fb07ed8b8c1d65e10412abd700291b24953c578","c5a6184688526f9cf53e3c9f216beb2123165bfa1ffcbfc7b1c3a925d031abf7",{"version":"cd548f9fcd3cebe99b5ba91ae0ec61c3eae50bed9bc3cfd29d42dcfc201b68b5","affectsGlobalScope":true},"14a8ec10f9faf6e0baff58391578250a51e19d2e14abcc6fc239edb0fb4df7c5","81b0cf8cd66ae6736fd5496c5bbb9e19759713e29c9ed414b00350bd13d89d70","4992afbc8b2cb81e0053d989514a87d1e6c68cc7dedfe71f4b6e1ba35e29b77a","1810b0b14614e53075d4d1b3e6be512bde19b1ed3a287925c0d24bae8585fa1b","1c390420d6e444195fd814cb9dc2d9ca65e86eb2df9c1e14ff328098e1dc48ae","ec8b45e83323be47c740f3b573760a6f444964d19bbe20d34e3bca4b0304b3ad","ab8b86168ceb965a16e6fc39989b601c0857e1fd3fd63ff8289230163b114171","62d2f0134c9b53d00823c0731128d446defe4f2434fb84557f4697de70a62789","58991bee61cc543cdbee6836a7cfdcd30da7bcf3279befcf7c7cd53b3631e523","ad56682261a42ef9d7361cee603cac6408cfaee5d5e34e7b9e311b28535dfa20","94200029a0b15ca22eac7555fb3417a82b7213e09fe9dbb44c997fc63c3a695e","642187022280f3f607c62b1ca148c25fbf6ebb89973f00b5b141d50e4f100bf5","898f06140d379f3f727eb5f16309229ac1d66a5184d05bd504ccbf2fcf6eefab","a6bfdfb9f84da27becbb64ae356d8e9b6c81e95444a75c693aa262f9910ff3cf","a9452e81c28c642c2f095844c3473d979eba5ae89726ad52b15ea86b3e112ee2","dc4a2cf12254395c8ae3fb4c61e6fd9f7c16110be66483599f9641941416988f","82b4045609dc0918319f835de4f6cb6a931fd729602292921c443a732a6bb811","3b10140aae26eca9f0619c299921e202351c891b34e7245762e0641469864ffd","c0c0b22cefd1896b92d805556fcabda18720d24981b8cb74e08ffea1f73f96c2","ceec94a0cd2b3a121166b6bfe968a069f33974b48d9c3b45f6158e342396e6b2","49e35a90f8bd2aa4533286d7013d9c9ff4f1d9f2547188752c4a88c040e42885","3261b6d56270a3d8535f34c2fdad217cfba860d0f74f154f0a6a2031d0c8daf9","7eca5b6e1cd1c28637103d2b6c44e8b89035a53e515ff31ae3babc82e6c8e1f9","49c9c8316d59f6175e6e0439b1d5ef1218f02ce622d1a599449de30645559eed","e4c48be0ffac936fb60b19394739847145674582cbc7e24000d9fd35ab037365","215de2c70639abaf351b8ff69041e44a767ecffc5e8d2ac13ca3f201853fa1fb","d228c7773484140fac7286c9ca4f0e04db4a62acb792a606a2dda24bef70dc21","8e464886b1ff36711539ffa15ec2482472220271100768c1d98acfdf355a23ba","fb0135c4906ff44d3064feebd84bae323ebb7b59b8ce7053d34e7283d27c9076","178c8707a575baddc8f529a6dbd5d574a090e3498b2d525753db7938c74227c3","ae81e464a7db70637d07b93582b051487c7d119ac7e1bab1b1582a96e631b3f7","148634fcee440c7bd8c1339b97455aaadc196b0229ffc8dc8b85965a7d65b380","d3c60c4cf88594f84f7f5ca5f87d59090787bfcf032e86d4f03d58394b826910","f3c3f17825c6a78681186da04c2f3a0f1c60cfa95f3d4b82bbbd6ebd57214a6a","8a2c67c55dfab4ea1f6e378cfa4b5cb60d8e8931316500f5b59c201674f6105c","b7b45ff1345f8e6bd6109a5b6ef0394c2e3bcbe48830516d9e78e20592ce468a","e5eb4863b7fc8515078dc09cd2f98fd179ff1a55216ecdc57d2dec7ce13e36c1","81785a3ea03d6db981ddfcf8fb1bd1377f985564def845c55e49e16f171deec4","537a2b61594512c5e75fad7e29d25c23922e27e5a1506eb4fce74fe858472a6e","8f9a2a6ddbd11ecbbc430ae8ce25528e696206f799ef1f22528569caf6ce580c","e05e03e1687d7f80f1569fdae117bb7b97feef1e839a61e1b3c61ffca8cc67c9","b311d973a0028d6bc19dfbaae891ad3f7c5057684eb105cfbeec992ab71fbc13","8a49e533b98d5c18a8d515cd3ae3bab9d02b6d4a9ac916e1dba9092ca0ebff15","fcb26ad5a6c39ce71dfac5dc16b3ed0e1a06a6dc8b9ac69112c935ad95fcad69","6acdef608420511aa0c9e3290b37d671bab4f719ffc2a2992c2e63a24605a657","291df5da0d84d1452cd68abfbcca08a3f96af610bf0e748528ba8d25784ce2b1","176cda558a7f76813f463a46af4607a81f10de5330c0f7a43d55982163aa0493","6621af294bd4af8f3f9dd9bd99bd83ed8d2facd16faa6690a5b02d305abd98ab","5eada4495ab95470990b51f467c78d47aecfccc42365df4b1e7e88a2952af1a3","07a9aa7f3facdfac577ed4aa0c166295d54637508942a2154566d87804a33ae2","4a34de405e3017bf9e153850386aacdf6d26bbcd623073d13ab3c42c2ae7314c","993bcd7e2dd9479781f33daab41ec297b8d6e6ccc4c8f9b629a60cc41e07e5c8","714a7869be4ff21fa7be0dc183569db5e6818ca22882a79d2bb3a7801f5bfab4","dfa99386b9a1c1803eb20df3f6d3adc9e44effc84fa7c2ab6537ed1cb5cc8cfb","4cb85ba4cf75f1b950bd228949ae508f229296de60cf999593e4dd776f7e84e8","e39730c031200579280cae4ea331ec4e0aa42f8f7ad19c3ec4b0b90414e40113","e90bd7922cb6d591efd7330d0ba8247ec3edf4c511b81346fd49fff5184e6935","1b581d7fcfacd6bbdabb2ceae32af31e59bf7ef61a2c78de1a69ca879b104168","20f7f9e30ac8cbf38189b3adafbd945a755a049b082f27d89d1d5d52f46818fe","c749b03596746c41abf1e8ed6b5a6a1bcd316c00dc39a337cc152780efc593bb","846953ab15b2bf3a06da6ec485be611455c5c83a02102138dd01102f3e6307de","218ed8ccd7078df39a26ccc59a094919d7ed1c0cd0b0182233deffda851ac3c6","8422f4ff58293a827a8bf401bb36f7eefbf981ae9aac48643d19c1e5439ee1bc","f70ab2e7bd23db437c2d5ed8690c401a921afbd5d3998a6dd2aab90d9efbaf35","fdda29d1f7eb83a912e34ae73f4e6e612350a7d1a496d5facc2f75487e2a1601","8ec6b7dc9062dd5c3c2fcc54bbf24e1e8a32b29ed902abe9192ddd0fd5f5f2a7","52e7386606a26e912bd39cad7752cc33009aefbb062d4a45e557c29095987095","3a6ce66cd39bc030697a52508cfda7c248167467848964cc40bd992bd9ce71e0","b4ec75c8a71c180e886ffccb4b5391a5217d7e7077038de966e2b79553850412","58c7522c1b1c94667777664bb9b26be14159220a28abf43e42807815e3102e14","d1666062675fe2f5408bfc458dec90de7279820eea20890b19484250c324b8ea","aed88228359e87a1b1a4d3d45f5b6555724c01ac81ecd34aa56d4a0a01ba6910","25307c3fd3840b5bd50bf95240a134854e80f736a4666711ea8ea40ba706eaa9","4fce1ce36a7f6fa69d3954cd685d27995123b683d31819218d204ca6bdcbfc53","a26bd8cdefaaf5a4cfe2c2f9e5b9114072f6d274ed4422eb7dcd1f72705a7eb2","5bbcd14f0138f4e65971ed5cb5606e8591ffefe3ac78ac310b164a975ea38f4f","0220b23c1c15820dcbb94eb74b8671020b53cd192a708e4d1828f290149e7e89","654bcc87bc095d6a2248a5889ec057b38cae6052744b48f4d2922a7efac4554f","cad0f26943006174f5e7508c0542873c87ef77fa71d265968e5aa1239ad4459c","0be66c79867b62eabb489870ba9661c60c32a5b7295cce269e07e88e7bee5bf3","eed82e8db4b66b1ea1746a64cd8699a7779138b8e45d495306016ce918b28440","3a19286bcc9303c9352c03d68bb4b63cecbf5c9b7848465847bb6c9ceafa1484","6cdf8f9ca64918a2f3c2679bc146d55f07490f7f5e91310b642bc1a587f2e17e","3b55c93b5d7a44834d9d0060ca8bad7166cf83e13ef0ed0e736da4c3dbe490a2","d1f8a829c5e90734bb47a1d1941b8819aeee6e81a2a772c3c0f70b30e3693fa9","3517c54fba6f0623919137ab4bdb3b3c16e64b8578f025b0372b99be48227ad7","19b3d0c212d241c237f79009b4cd0051e54971747fd89dc70a74f874d1192534","4adc1491e1338de6745d009222786747f50d67ac34d901420fbaefbf1b51b58c","4cfbd2a7a4afee212bfb0c9c3cb6e4c7d48366e0565bf5b43a4cd96c91cf14bf","37c175e28375e157933b40ca98eeb608e05f2583821a0fae564dc04614d2d95e","3f20a041a051abfb2b47a66611cf4bcbf263605f5469ed7e8b51b3977892d83f","7de33f94f482eee2f6d1d8f24427b737e2c4006792ec4c2b87da0a426e741c4d","79134a050ccec1692c31f1dacccd05ce4fcdacdf98f0fa56546b98eb8bdefead","24f1b6865be734484de2baf99146122137654c5f5f28086c5cee97b998bfcd5c","398feb1537ae0409646b0489bac99a9f0d757a2048f0009255f8e35e9c0f9828","3da4432a9c24123f98f6f1ddc5cda9c9eedf0a8853d06321803dbc5a116e5270","afc60e07200c5eae65b702f95d83096de54d99fa6eb2e0154e83b5e11c520bda","f4651affee2900f19746d1bf0fb1c45e77f57576197561ddc90b7272835c3f37","19527fc5a08c68414a234b02ae9b9619cdb4b811435d12c0af528e5640236f6b","20a629bc3f82d238f596230637365b8aec8284c963d13dafdd4c8e2746be5e64","01c48e5bf524d3fc2a3fa5c08a2e18d113ad1985bc3caea0503a4ea3a9eee64a","68969a0efd9030866f60c027aedbd600f66ea09e1c9290853cc24c2dcc92000f","4dbfad496657abd078dc75749cd7853cdc0d58f5be6dfb39f3e28be4fe7e7af5","348d2fe7d7b187f09ea6488ead5eae9bfbdb86742a2bad53b03dff593a7d40d1","becdfb07610e16293af2937e5f315a760f90a40fec4ffd76eb46ebcb0b3d6e16","710926665f4ada6c854b47da86b727005cc0e0831097d43f8c30727a7499788c","3888f0e43cd987a0dfa4fc16dd2096459deea150be49a2d30d6cf29d47801c92","f4300c38f9809cf811d5a9196893e91639a9e2bb6edf9a4f7e640c3c4ce765ec","676c3327721e3410b7387b13af857f4be96f2be91b3813a724eedc06b9ce52d7","10716e50bcd2a25cecf2dd993f0aadf76f12a390d2f7e91dc2cac794831e865e","81a8f1f6218d0acc8cd2cf8b5089d21b45cf812bb5820affe3bab058b46cba7b","fa69921924cf112fa523a18215a3bfb352ac3f498b46e66b879e50ca46cc9203","9b82a268ba0a85015cb04cd558582c7949a1b91b6761292b9360d093c18e1dd1","ccfb77fcac04c34442ffca82ae90c8dd2a0ec1689ace547fab9a0ae337dd4752","7b464488950d74ca5037da375308fc0c94a539378fd0e9554556df45483aad02","beebde754323e430b4ecf5b9f837a05b1667b3df86bd924b52c4f80f20b3d660","40eda068f71d159edc51c273a01948282d6e3d38dd2430944595d526dc4b40b9","c790db6044ce1bbafc46f13bde46b9f0065de155b26a199f442fe064f6b05d63","05a618d1e5019598f7d2256ce7a51d4bf70b682cbb8604d847c186e1df619a65","f405e934163ed30905b4682eb542bb2d446e59c477871be9d29f92ab474d522a","8294ddd1c6ea4ed9ec190a2d41500539c1623e274d5a67786d6b09849cb98d45","aab16135be8081c563dcbb33c25bb4bbf2065c7026d7228e6f1cd8153d8587e7","666d6d6d9f2298f8d8d17ac7a34ac9ca9a59e09fc97b1ae505df6ab4934e2dbe","f3941ac359b8377c0ccce596a2bd3cde8986279f42d75290b0272f3ab1aa604d","de3d39262355af808ff74b3df62aaad0ad3cbde76c13fb4fa6fb6e4cc817e78e","8c38034476af70d7ad430f69cb960c5bd6efc9962f266b39ed54dd8e9cad566c","757f7967151a9b1f043aba090f09c1bdb0abe54f229efd3b7a656eb6da616bf4","786691c952fe3feac79aca8f0e7e580d95c19afc8a4c6f8765e99fb756d8d9d7","734614c9c05d178ceb1acf2808e1ca7c092cf39d435efc47417d8f744f3e4c0b","d65a7ea85e27f032d99e183e664a92f5be67c7bc7b31940957af6beaaf696844","5c26ad04f6048b6433f87556619fd2e50ba6601dcdf3276c826c65681197f79d","9c752e91fe237ce4857fbbef141bee357821e1e50c2f33a72c6df845703c87d5","f926160895757a498af7715653e2aedb952c2579a7cb5cc79d7b13538f9090bd","255be579a134ab321af2fefb52ace369a11ffb4df09d1fbfc1ed1a43c1e5eec5","7abc0a41bf6ba89ea19345f74e1b02795e8fda80ddcfe058d0a043b8870e1e23","ab0926fedbd1f97ec02ed906cf4b1cf74093ab7458a835c3617dba60f1950ba3","f1a661906cd0e7fa5b049b15bdef4b20a99abca08faac457eeb2b6407f30d12f","7f5a6eac3d3d334e2f2eba41f659e9618c06361958762869055e22219f341554","626291e7b45a4b6871649c908fbbc5ac98009a5182e2594fbfe80b860f513c77","4093c47f69ea7acf0931095d5e01bfe1a0fa78586dbf13f4ae1142f190d82cc4","4fc9939c86a7d80ab6a361264e5666336d37e080a00d831d9358ad83575267da","f4ba385eedea4d7be1feeeac05aaa05d6741d931251a85ab48e0610271d001ce","348d5347f700d1e6000cbdd1198730979e65bfb7d6c12cc1adedf19f0c7f7fca","6fa6ceb04be38c932343d6435eb6a4054c3170829993934b013b110273fe40af","396e7b817fc4f5461b92f9a03325c2ebb09711aebcee5c41c5fd3e738eb78526","4116c4d61baab4676b52f2558f26fe9c9b5ca02c2792f9c36a577e7813029551","a294d0b1a9b16f85768553fdbf1d47f360dbff03649a84015c83fd3a582ba527","8f2644578a3273f43fd700803b89b842d2cd09c1fba2421db45737357e50f5b1","639f94fe145a72ce520d3d7b9b3b6c9049624d90cbf85cff46fb47fb28d1d8fe","8327a51d574987a2b0f61ea40df4adddf959f67bc48c303d4b33d47ba3be114a","00e1da5fce4ae9975f7b3ca994dcb188cf4c21aee48643e1d6d4b44e72df21ee","b991d92a0c3a48764edd073a5d28b6b4591ec9b7d4b2381067a57f36293637d0","51b4ab145645785c8ced29238192f870dbb98f1968a7c7ef2580cd40663b2940","100802c3378b835a3ce31f5d108de149bd152b45b555f22f50c2cafb3a962ead","fd4fef81d1930b60c464872e311f4f2da3586a2a398a1bdf346ffc7b8863150f","354f47aa8d895d523ebc47aea561b5fedb44590ac2f0eae94b56839a0f08056a","b152c7b474d7e084e78fa5eb610261a0bfe0810e4fd7290e848fdc88812f4504","67f2cd6e208e68fdfa366967d1949575df6ccf90c104fc9747b3f1bdb69ad55a","603395070ec53375882d53b585430e8f2dc6f77f4b381b22680d26c0a9595edc","cef16d87ff9aed3c5b96b47e0ac4277916c1c530f10eedfce4acaeacefddd3bb","fab33f402019d670257c8c833ffd78a7c9a99b4f7c23271e656cdbea1e89571f","976d20bb5533077a2135f456a2b48b7adb7149e78832b182066930bad94f053a","589713fefe7282fd008a2672c5fbacc4a94f31138bae6a03db2c7b5453dc8788","26f7f55345682291a8280c99bb672e386722961063c890c77120aaca462ac2f9","bdc2312da906d4129217238545d7e01e1d00b191beea1a9529b660de8b78834f","62b753ed351fba7e0f6b57103529ce90f2e11b949b8fc69c39464fe958535c25","514321f6616d04f0c879ac9f06374ed9cb8eac63e57147ac954e8c0e7440ce00","3c583256798adf31ef79fd5e51cd28a6fc764db87c105b0270214642cf1988aa","abdb70e24d3b39bf89aa07e769b33667c2d6f4ddcb4724735d72a941de6d4631","ff4aeeeaf4f7f3dc3e099c2e2b2bb4ec80edda30b88466c4ddf1dd169c73bf26","151aa7caace0a8e58772bff6e3505d06191508692d8638cd93e7ca5ecfa8cd1b","82f75b2de1456b0be46945c6c68547f032f11238d07db45bbc9c93fca6abfe41","812e55580eb591f3c04245345be8c9dce378b26238fb59d704e54a61e6e37c83","1de7ee494c7ac185e6abf94428afe270e98a59f1bb4768e4bea7804645a0d57d","2c12f912bab4b1eb797b2fded3f295fee98736f8053a08d0032becbecb4b34b1","5776c61de0f11da1c3cf8aafc3df524e8445201c96a7c5065a36dc74c2dc0ef6","94ffa91cb9f8eba1f468c5439994d4544ad24658e1192060f76267b767114445","7f0f90d0ffdd54875c464b940afaa0f711396f65392f20e9ffafc0af12ccbf14","483255952a9b6240575a67f7beb4768bd850999a32d44d2c6d0ae6dfcdafe35c","a1957cc53ce2402d4dc5c51b7ccc76b30581ab67bea12a030a76300be67c51d8","8149e534c91fc2bcb3bf59f7c1fab7584382abfc5348055e7f84d2552c3de987","c280ec77789efcf60ea1f6fd7159774422f588104dae9dfa438c9c921f5ab168","2826b3526af4f0e2c8f303e7a9a9a6bb8632e4a96fece2c787f2df286a696cea","77ced89806322a43991a88a9bd267d6dc9e03fd207a65e879804fa760292a03b","c8ff3a75cd1c990cbe56080b1d254695c989136c9521cb1252c739788fe55c83","485f7d76af9e2b5af78aac874b0ac5563c2ae8c0a7833f62b24d837df8561fb9","8bdf41d41ff195838a5f9e92e5cb3dfcdc4665bcca9882b8d2f82a370a52384e","2b234fce994b272403881b675d6ae2e2afb2a8be8bdec71002ff8ff2d5b59bd0","97ba9ccb439e5269a46562c6201063fbf6310922012fd58172304670958c21f6","50edac457bdc21b0c2f56e539b62b768f81b36c6199a87fbb63a89865b2348f0","d090654a3a57a76b5988f15b7bb7edc2cdc9c056a00985c7edd1c47a13881680","af777ff8499a24a68cb126af515862005397680e49482aa651828f119348f666","f0c1b4e9f73ba87ae28567faeae9227669c2b079261011a2227161bc54c288e6","2ca3317f639612b70990766074be04582c912e3ff467be28e13e5aa6e16e22b2","9bfb6c3d3353f7433d46099b9d64830fa27302f7c2a78858f79fa6a4e79eea29","cd2d686672591f0c3515dc41ceb87040504d37fc680d6149b072064d535320ca","08db8c4c22bcfe09cf073c307e095839e0681ef24a05b6d570fa42d42931fa6b","b8a478a0e8ef11eeaaa669a19857fc52d6a47be63841796c01af5aea94c0b8e9","96d497d78ecf5692fc0c726f4c9ecc73a6aee359969c0ca688bd302c3da4f1f2","d890e678ca6c26148d844bc1b0b917c6a3fc86b2ca41f72a76937b0d090dc90a","bfa4007aa06b4a3fd12ca9524e847e817727adaf59b8a2589db44bd96307bf25","94142c60f6763ebe3eb8e026d3f0bbee464e032d23fb4392ad46dbbc814941fc","76c940de465a6ea834192d366fbd749c70c4019b0131ab8cdcb18a2f094b8b3d","cd07801eead800b4d413a7401be57fe697b89edd87a4441ce9ebfb970e257c78","9d3ccf4720dc1bf6e10e9fa6a1e0c2888758cbd6b6f749337ec974ab2b1b687b","ab65710910c2a238623b1b7bf65d16011415115483c127e38108469e52f5550a","4de152c4e6b37ec1fb066a53d8e82576597e39f6527067d65ab8a9fc28cfc902","119900f332a140cae511d9a9000e70c46800ee52ab57f6985db0ce315b58b99b","f4b6e64737deafa929a7f23f75fc5d2498ddd6aad2a0ba56e500065c2d7d24e6","7ca1377e4e33c766c296b517213dd447050b1c41664ef80b4185b2349ce2ea9b","020484d9a245eb9e966ec5cfd975e78bb56a7a26379ebe60df82c3a00d4958fd","dcea23cd5584921b6d88f81aa8e7c7d89e2d0ebad4a2694ef86c21abff8466b1","688f726a5b4e52f1a5e47f39c61a2e14b6e993b10633d2b446dc0950f1dc32df","5708e3fce57d71befafbbbf4311d96d491d43944cab32cb462e4258ab4297230","b550b07a36a70e783f3d66548f3af2e5e7cd359956d8f7015b086bfb60b05877","a0baac19c64f2b264606af44a3c454bca52f4ef473ad0cfc9d1ec2130fa0afc6","6294bd7af76f4227284c0d959cec8f9b6094e4e56c358b5222922229a6cbdefb","a8848fae1eb136b693b27da65784f50c1b9a7557a7508607009aed51c2d4eddf","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","2c56f8ff3d5728d333914f53fd55c7b0489de260146bad58bfd35be635b88de6","b442c8f57e427b233d751600ee8d65fb79644827484e0558b650a2613e49d058","8442a409b52755b9b689e885b23d3323503ae3d702b1f403182f12a569108dd6","567d21f76b698a7b919f431571efd8d6b9c77771f7578dfe7ff7955a616a5f69","fb60f2f372e45b4fc93dc188e8cbd05c188d2800ec99c5aa5493c1a610c9888b","3d00e023e3688c6f096f626f3730372c3be894b447d6c016d9b188f7a80c4b13","c0c8b93cdf5af4bc0c2e200f11ae84eea4e9bec75d053292e740b8f0406f4490","7d5997ece7fa1ebf08b85ddc3facfe58eac03540e5075ef135e403783e2904d5","0bac905fa20beb4186047bc05d200387faae4f8621b9943950ab030b44d5a9ec","8e572129bf621373246c09214b1883eb17054ed8f98246330517d84ea871819b","4a1fa907c6e2ac86bbfa5060df51c835f0388a8a09beb2302a6745f4ce4423bb","8e8cee69abe8e47e56e66bde839f0bcb89bc3b4f70982bfe5711086c9667e484","90dace31b44188f5e69e0db307a5d5ee75cdd49448e5f1051cb0685412e237e7","18af7ddfbe8f3ce968b6fa6103ac6821d6743b13fddfff82b905f3634d175d42","11358fb4674be69e5d66c1ffcbc30d3f3439bee0ad14c22ea0d54e99005afeb2","49c0c71a7a689cfdb899e0be112b60f3ad81c48351b525a2df4ceb84c9993689","532fa377d6541a9136337c33300f65509e7848dcfdc1ed45a1e83a7b1ab636f6","a6e0494efc8e67fb537602c8a2ccc12842d31baca1f44105b1633b2234d081fb","f8ab097583fdbd9fd19e41f6dab0b80230c763573d797d489d317cf2e4947d05","17732ae88c786321274aaeb8be7bff6e593f58165cc308048b04fd774f71c387","fa6dc413af2a0a49c5da32f515436c5198a67cf2a9609457c4bf558f3091717d","112ef039a661c69dc6b4009f99ed00c3db657e758113ffb646850316fd0e7e2e","406e96394c75ed1f16f888b31ca5669f88c147febaaccedcf29cb6ac769d113e","d944782be675688fd42ab68e7fc6829d6b23da05c6100050dc969dbc8352b5b4","0ffbc5360a4479b3a3e8919106395280092d73dfb8752c786092fea30ad9c532","3b9c9ef706a2523f5d830035532b01024e9b4b4c8c6525a4605e95b62ce0ab75","eed10a03074397f44a507e7efef479417533b44faccd45a032552b63ef9676e0","5f1f14268f34a7d432a70ec6e242e90664cf41c1ec1d0b8eaa0e3d51ede10b3b","71bee888a5593cb1772bee9802608ac73236314be0be152b2506e397a6aa15db","81b9125fd2e9a38f45835e923e6921e6f1ce16ae20bd76a5735ca4fba1e02823","4a1568c93ffa2eb14b6c37a9b1e290fef8fc247174d3cd3a12ab6a7b6f8bda96","f36d4defbdabbe1c8431e792e4c8564e89b31efccca3dbd44d5c08c8599afc39","9668e7595463a581861063d068556dfbc5b1c2387aaa0e9e4c34be80c490b354","af6dbee44f05aa6e6ffd96ddda435530104893dbf3d3dae1733849ae40242c90","2a208a0a0bdbd0f969207ee87cbeb8255b2180ff944983743f0896c3cc43bfe5","dc72831c19173841c7cad0d3be1f083561126a41f6b6c9469a801c212fff1a48","3ce4f3d6fa505f086824fc70cac8004ea00c860309efc88adcfa19444e3a78d2","7823b2db0a9434ed635fc74e3b1f7ecdd272845f32312d4ca7b07733a310feef","f5223d0e4384bfcaf06bd4625fe46a431fa903adc2e0266377041c62a51f364a","c9ce2fca0c61765fb84d3e5d989c049588a351f5fa1a6641c61eec48afcd651f","0c4036ede1cac9c1eee393affc4bd39e00752cfc175021a4f6fc858ac74f9512","c1f42cfbdc3f1ec7898ddca3bce2cfe28b6e00f5563f2e04157e71586f22d7c3","2b21454057e973fc5b61aa1410d91fa612f75c296f1f157cf4bc064823254d73","39c804163bb11d5dfcef643400a714874bd77504e0bc8c536b8abb3a86343934","8783fba6e4de6cfdcaad946416cf228b9719ca91fe25e6330603ad4eae11e891","f213834463c410972b6716af790e31093fe52506d808483cde4aa16387c033e3","7f11f8392f2479e2dda86a0a0ca7c9fdd38420d51b89a60f5ecf8d01058b15de","ef286d08d1a63c316dbb1b59774eeb16b99d1a9a67f2a5836ce693357b877736","a7b79891405b752102c0704912e3e87d81fc8b31bb188369acfcb04ae8c70d5c","7867a16ec03ac5a240411be695acfa5f15a8646ef8d27723ef1598b2e47f83f0","bbeb24a99db942616e79e671a73cb4067fd193301b6257ecb0893afd6b6ebb13","92784b5d9bbbf5be7758798420ce25fad16e48a155541cd0a5bc8dd4e27963cb","b961dda657653c7caa45d421e2ff27b1614149c2357591c9fbb4ba4447d52505","499cc27f96de7b782f4c8e9e7890f4928341625e1b944c6f1030a6fb0a000dac","f9a6d14295abd0722680c5fca582c7ffb65c2f52dd06d5468107c2a3272d3dca","4fb134ab8fc42241acf3d83be19625a45331fab41852a61f412fd70706a5a95e","60dbc377ac419b95f49e3c66d674571a7b630b2562deaacf19b55c935161440e","caa0f5f1a1e23ba89a21d3ea53dbdafa890f8b0a4f93f6a311f3e26cbb99c595","f84e062b80f3b13e8b073a124199bef416981ddc648e5b840e33d0e435247e64","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","b5cabc07f60a6837f37da58c359db96ccbf648fc2f360dbfaa65d84bcf4e8fb3","4644933212aa152273164eda21e4923403b433ad923c9e455e4a4eaf464a1c86","46af7fe8ee6ecda28fcd45a4151139befaeaaace12c9997ca82fbc05b13d5224","7e0800fe33293dfe0abca62cfe9298d8ba11b286c9b5656f974068add2d0f6ab","9b0d541ec8c10c2eaded0c4d377ed5f3db13a325540d6fdcfd9047af4dc1c82a","3489fcbf65af2313061c1f991092bf04e4e5be374fe81153924b18790b5eb37e","d74790493f984cc9c878e884ef239f7e07f00d9d98b58d12373c52c41910969d","5a43c450885953e983a7bdb15af8b338aa98308d9c4d49621bff6604ac5a3612","3d976e2ff5440b23278099ddad82f404bd91516903bab1ae56f6761ac45a1c0d","1029fc84f877c680a7a4048166c497e6d8222d6bb584f1a0364c3c064f75d76d","c18f5132d5601523711f9dbcb7e953fc819687e2e81dbd6823fcb7257feb667d","9a131ab1982ce3d23b4c0c46344f5a24814574613e0858db3f7c862ac3628698","c81d17a26b3a762a65847e9a88739bdcbeeaee884a785fb0c804b605201bcaf2","deec6107c05388f74ba6125f1fbf87cabd3203a27da9a43327add5643bf8989b","765b53a34f41122c30d5e27ca003cccab2b5c624c0f7f7b6e82c03476be17d2f","7da9f80b1f52eda22786290afb90d5c0781cd8dd7f051dab9e0f17dea8ace30c","72a5f36a1d9c1c841705be785a70022fc52aae6625b4712211528611748466f0","9511a2caae1cb7bee70386460fc5f11d50b9ea5a3637d47e87235548b9fa2f25","e33fdb559c5378b67b8d83922617d369328df9c00a1ae92788e65b11bbcf62ed","ac79eb84308548438299ac94a308380af4862f76116e27b8b0e0b163040c6cc8",{"version":"8fc6ec17571ec38df9ef5ab173b074098d228c86ad0bed75fc3584e04b1e5873","signature":"10fa2f1aefa6530e260bab8352623f96088a57d0c4921f6c00f2b40adccb799d"},{"version":"131a67321c1a7a83a5016fcc82038fca9ecf4e4e18fd73fa3f7cb8f5de8dfca8","signature":"cffbcd78d5e9091e284e4b779b67a4c7d4db202771da047b7c2c7cb9c7ec7548"},{"version":"3dd3eefa9dc74d904f68fc3f8d57aafc12889195b91db5926be278bab12d7fc4","signature":"9cc88d82f37d2e4c33a7c436ee1a588cad2de9a99e1b6f5052d0c81f97db1451"},{"version":"c59371cdc14bec542744157d8749f98b8ccc2c84ca3f216c4a96587c9f32eb9f","signature":"7af9b43dadf2b07612c34617d0338e4e9dcb110c5f86556bc50d5dc2b831214e"},{"version":"ab085b3af5c842e4b4ae4680a7b4d35f2169298e998ae490dac27a1befbc3aa2","signature":"73ce20f1c08a47f1a86c278b279e8ad7e4afb66aafbcfd6a69b6213dd2ed26c8"},{"version":"42aa39b83c17b7d8043633d6353a26112d9402ae536cd27cd41181c109705688","signature":"7389837f5f1d54e3fcbd57705f3554233c60d9d7ebf5d178ec304624b509c23b"},"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","bd821b87e2c0fb5f509cedf47da465c447451835ce0fe2a752c4fc53a9f95a5b","f1d7352c0f7041abb43e1054abb14fb8c53a13dd54bcc1d67b97d2c02bb5028c","fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","08f88f75fc2f516413477606a4122b6d3f6eb6680e8eb79f3fda5a5d2ed306df","6ab9821afd2a06879620eb4e041b9492a90f294e9b733ae5eb022edaa3964a45","003533cc3fa10cc457668d4256d21a65706a67a04251962cfe85d240502f8d67","6c00cb8a4b187505dfe21aff242b07f69f84f5c832e8ab4357af69daaee1b0df","de14ddf9d780367c6a117bd8a1718d491aff66094186523b3eea680ea7035a7c","ee06b94d0521cfaf91e4b003518eeefc45bbd594b0c22955fe35be282958252b","9e5f8fdaeb03f1699392b4724a58ca7b47c5cbb6762920d2bfc722c265495ede","d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","a1597b0039f39e9f3eeaf120f02d0c94a826fad30b027a2abfdb8d580c89be70","04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","1de82ba3718b2b3bc5333c5bc35da5cfc46d1b654edc012de46bbce48126fcce",{"version":"db3f5c9bddae907704adbaa6c995fc676421fc505df2face87116b815033edc8","signature":"00e1e4b84ca2cd48371bd345a05fdac34043a1c2722c0fd75c030f6b3096a53d"},{"version":"834a5a18981597447a238bd451218d64723ca51248bdd573ae93eb4e88d1bcbb","signature":"8d10842d7a8dd8f783f53c75462f650e54dcdb6ced35ea6827cc63b6504e9cca"},{"version":"aaf8ad95184997a377e021a4f94903d8caf7cdc238e7a614db26904f05d9c95d","signature":"ba9e1c8c7a4e20f6e7748f471bd0935dac065b057813d1d2beaac8056a1553d3"},{"version":"c817ccaf32fa5b6a49cf1d9534b126efd37e0eb6b4101d1956b907172d31dc55","signature":"c8cf6ce02229367404130af268261cb47ea844912d3f98ef92eb89da02a50e0c"},{"version":"d5ed6cb70237fc11404db1e21e2a01f9f48b6a099b70675c37602081bfbb7ddd","signature":"e02a6d539ad2252e1c900247636b071513a3ab60bf5d8fce41f96da1d9df08ce"},{"version":"39d2df87461d48225f33e56c837024baa41c41fcd191a71f7957dc4ad7b6aac9","signature":"ab50754f207b0d77f9ef3fa24243742ff1f1778994752df26761ab299de31b08"},{"version":"a4482c3afa3df96e58a1e8f3d648403fdf171bcd0fc5f68e4941220caf9b335f","signature":"25b41637cc2d8ba8de309718d270062d050f3a80ef10249f4eb09e30f26be84e"},{"version":"ab8919767d93c2f3fe75ef82d53f759c9050392e08952d377eddc0e4d20ec606","signature":"f16cc65a59f29f3950f38755015697d21c35412d98c1cc8caf47ad5d68e2aef9"},{"version":"dd5ae30c9502660f3a0136bad4d2e909ec1616fab9598f840f4f9ca5a33549c3","signature":"7e677fa6068b79e73e7f83a6766d9e2c8d65f72772003563c91673b2e34204a1"},{"version":"36be1fb8405d8e41ef0877a0da9794687e7eb6903bd5380365afbf0229367618","signature":"15cd5c7b7b7893ceb0e96c23479df682f0330e15f607e147528353f5a5887fb6"},{"version":"b46074599d7e0c688befe94a993461e45eb105762cb52ee4a9c79b4a48998e49","signature":"a18983e1a3315a4cdd44556c01796f3850b0bc02a7a92123d3c8ebadf23246a0"},{"version":"ede09dd61bdb8dc6f5c73f70044e7694796f2f7c496987776aba6cb9de03a64c","signature":"2794bce0a31af80fed0f77a8db58a4b408fed6347e61a1982365473a469314a4"},{"version":"e120c26b5b34ec0c6bf9818b40b011d561897a90d640d5332b9940534591aa49","signature":"56dfdd7f0081d7786246101c55db4628c9cf7393b818ecc3fce224a663cb7ac1"},{"version":"798a9d087b7571e705001d142ed4cf1338155291936323a370dd928476356ae4","signature":"90864c089624ee890d937b1d5f80e52cbf79acba4242f9830d1f7523604fefb1"},{"version":"aa3aa185c5525c41c6aefcc7bd0c4b4065d7624202674350364216ebd3e01cbb","signature":"7045cc282ee6fa9aec57b18592bd582a7b4166b1eb3bb4b46aff733d3cf5be99"},{"version":"a84b78b4b26f9e20e88b1e387c9c33bd6e6e6954dfad426c183df69c779cd6de","signature":"695b4e1a5fafa7f275c5651d567506aa60453465405eb5af36a1943f5b51320d"},"2bad09c4dc0810666ef5b6150aa910dd711051ce5f2184050c9859c708092a36","eece99a6cf69ff45c5d4f9e0bfb6450f5c57878d048ff01a6a6343cf87e98230","f7ab1fe738bbe7fdd1e9bc9887f55ac0d7eda0d234a7eb35c77304430f7d6715","1f763e81e71ac8ce0dd1b82e67cd9d1d2e56e77c844b46349e1623c82df9b130","1a9c0db9d65449e9dbcbf23baa3b8bfa48806cddb2adc5e172eb8eff5afbb702","4dffcfc24d378d52ade01a1ae0c5baf6dc7a50c35f8302be34f06b9eaa5798ce","6586eacd77a813c50d7d2be05e91295989365204d095463ca8c9dfb8caac222d","3f2b3c5d3f5fd9e254046b9bf83da37babd1935776c97a5ffc1acfce0da0081e","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"7ca332b2062975d290fae189a280511410818c2aef1abe0446d17c5afa27ac8b","signature":"732b1aaa3d04b606bae1bdf8a629853c78d81a2c8efb0bee27896c8b25320c86"},{"version":"760ec35283b516ae48e5a1a791dcc9a34e8413da185e73352c76ed7265b7ca18","signature":"13249ec2db599224a785cfb237e075417b81cb90539f550f4456e4688c8e24ed"},{"version":"004af9dbe815a130618949a667ae0740cdfe5508cb130101edb47e3ff9405525","signature":"2444579f2b1210c80303cee998efb374b509f43ad0b920484077087e52db5cdf"},{"version":"0e755d7e043943155eac7c49b775a097561f635a68ed5b4e3d30b18432b8ec11","signature":"3878279a78a4df7a018d781dfbfeb4a9e6dd51bb3267d52abe05fc65aec5ad19"},{"version":"f5f2db80672964282af20a5a9183b52c2efa84313e94c2a0cb60a279f9c8bf61","signature":"d8e74d15aca02d40482b5600ae8664aa35d71fe92af7dd18c17eb454e5e60592"},{"version":"5451d739e02baa57d5cbe7ec203c4113b3f580532a27eee35ed0271354b3905d","signature":"d427aca7c2719cfc78aed76fe1eb93a3b3a1c1ec202605d333de863312911f5d"},{"version":"1a11a3b124d03e7d22b9ec02155190b7a0ec28a0adc60f02a26ba1fcf9f6eebe","signature":"548d284c7935ef7d3eb7e8fa3d06b470569b62c70c2e30e7796d9dac2c8730ee"},{"version":"f123144284323e95c6472910aaf7759e0b5c283a91c9f5898c871c8356473562","signature":"35a511d401a0b95e53970dea10dee15e227902e97b26705f539bb0e26fbacc9f"},{"version":"674e5ceb7c87726ce0c273714bc5e967f8bb5a4da79a0a832f5519d4bc9671ff","signature":"f2419ba14ae1f23caf530c854e7030a297bf5a56645c5f09af4121ed6732143d"},{"version":"a6f2cbac79f537420b448852640a4b874ee6f96d3634edb2281d4ce30c2c363a","signature":"45cf00eb714d66a8edf471c97c73d56e867885fbfa3f32c0170a9445a52e303d"},{"version":"90452b720567c8d45702fc1768d787b46f1e51dd75aa2099cc9c69694d71e10b","signature":"8aa925b6cbac66939f26944fd9e143d9cc21512bad891c1537ce503394666956"},{"version":"070054ad95cc9df822616a350eb7430d9f950f38c659aa3c7b556833ade05ac8","signature":"f672778829e0ba769cf73a0f6bcb84a1f6d0e80f0c51f376099bd13313ebc194"},{"version":"9e5eb3592db8a89cf1ff90431b72c501c65bf71e7d3d9b8a7ed729a66eb90bb8","signature":"bbb74701f3b0b790049e875dc0a7ea6e3327428f53fd4b9ad82da7d287332b8b"},{"version":"2e4761495c584b63ae7a595c38382ec0010e2fde757217240fab91d2824e0757","signature":"7731de33e1f98201d2fa3503f265dfec024249f46878c43a080b73e1e94b417b"},{"version":"67456e44c1b5b4f939e34f5dd93c976c2008741090fee937cc07e3998bbf49b4","signature":"87b3fa3a15cb27821c054780b178e8deeafc7ce5f07841c46d5c4107a382d4b1"},{"version":"917780359e075b1884b6aacbda868fc528db42e780c29c50c5e41045ec01e732","signature":"2775b98bd53645a7bad156cb9229a978e2b481457fcd43b2b181a0d9c2073b21"},{"version":"2e28bcd8da13f0ae02e22b86363dd9ff5434d2a86adf0570c3ebbdd0002e704a","signature":"f17839c2e99bd6af0b593d557d31e1aae8f25b0422fa6d4d24c6a93253c0110e"},{"version":"d8b4b4a7e0944cc330afb521b65013fc1a7a167cc224229236587dd958c599fe","signature":"abddf183e3e424d8a1a2206534b7aa74f3668e3bd085a60c3847065bbb598cfb"},{"version":"e74fb24e65cc26fd18bfc26f31d74d4034266c88e1ec5316e86cb667efb83af4","signature":"826de80669881a355fb51cbad80290ad3b5788a78c0ad1455c3e855267cced6d"},{"version":"c78a8159daa7433fb625c93e07c8fa783779be29d5c6418c0e466cf4ac1fd01b","signature":"3715e6ce6b321b9f0288cd1b151fe49ff4475992dae9ff55186b47cd6091b1da"},{"version":"d08ade9e94bea745ece50402460a3fb8af42864aaf80ac0e722403391fb9c1e0","signature":"300b9c4681dd15ab03bcf177974420d7997f2184f607081d1d978d4f315903f9"},{"version":"2320d7c16e2c5625eccf2d1e43fb9ce4c56a5469061d0d584e35b6848ab1a9d2","signature":"18bfe7340f1bd6e4e1ba249e9e741f036d931fe9acb0cc82ad63b85ddd229715"},{"version":"5cd1d38f0ed0104ffc75437525ef04d7dfd7feac739aeb76018cb750846057b3","signature":"68d3b3d53bd8e24bbae76efcdbcaf230a58cdc6eb1cd002aeeac5ce6fa113f3f"},{"version":"687c98a8a4f58c197f156caade6ce357616d67f7bc7a1f1582a649658182dca7","signature":"7b38bcf6f2648f6437bd87f4aba559aff3970c9c6a583cefe686691fbddc20ea"},{"version":"122f7dfc5159ad838cbadf9b452d8365de37c60601f9c616fe5836e9e2ac7b08","signature":"92d091a6e6923b099c2f72748886f8acd79033e7afcf7b86477268534d79ea46"},"7bd6577fff72f67e86c50af399bc51eac7634d90f9db5be96c6042b96f615db1","85eaf9aa51bfa3defa3b8d2d528fade55abbac3c35bd080d9b0f71039789e6fe","c8747ad1b95da079d47e7e03414fd597824abbd3926cd5a4e8d7dccbcc895c9a","92253ae7695c5c12b9882f8f8042c847f95168e7d981550f43a61b667617c2ae","296759d7370a9435b779d37ac780ff96316bd3b35c3c6e7cf88d5d6f6ec72a2d","2ede07fcb653ffa0518525f6e199c36b04d12aec9b27db80b81f818289c364b2","322d17a36cd5a1185092419f2bcdb8c3b5d9a7c3be068b34096355e8b10401d3","0b1ee6b7a1a25446319247a3e4f23e3b9703b23bd93317c2f6e91c2704170b5b","ddcb02048d7f0bcf093e8d679fa6108029e9e4192c1d3be6f6fbf91e9112f95e","be809bbbda6ac7f5dd3615ecdb9d2fef448f5fb40874cd2b2279708e907d9391","b1bec4d354d7e84c8665ba5283eb743eb5d63c46305c6915f186092690cbde86","029ac13b591af6e0a48078de25743c3b7fab62f6939a5855c6b7bc0a9fc4278e","c37aecc992f5e2faf1624be0d04e0057d6c6ffa27297c76ef397d0d3a77e096c","6a38b5c7a9598589c50f912d6d63ec4bdaffc7aca5dcfe01624755b49ece887c","61122756611e0412676cebd84bc3fd2d155ff42401459d44f96da00d9a63d6f3","d98ebc337353d3df8304e5948c7e45ac0b2be2f70778c0cf023756fac54969c5","b7189a0ee83a535d31ce124f92a8d796a46384d1df01e08b4d6c15337cd96492","a9ebe3c4f8d3c26515e4b7d67b4b9284276575fd814a81e4b416233694eeefd6","3c2d5486c350e33e64a60e3a68c8931d753267f3d81250fe506bbc47aa904f58","d29a177972b76187824e2e3e82465f439d27cf5eed0f7d4392a5f79510a87527","e1c248fbd422f3a981c7b6956ebdd06b60d056621e4ff5c473e9bc7a41b65e57","697fd414eeaa958a27c50fbeae40b2c235e1ea8546a5cdac6bda108518bce8de","1456474708a83b459e15a5c9d6cb1c8b7a2805672981eb6b2b619629782c116d","c83a1f1409c9eecc9e5a99faf34c5ad18e0d25d79e2f6a1e0de0aa9294027166","49515cb879a1864f53b9c66af9f8c44e6b335eeeeab76058658975679a042245","e883cc9465554b78bb22f1227ff90179536c7a4a087478dcf055596886a882cc","db382b318bc333eb7548cc1f0dcd149794d7e1d4969d54f9586f2533b287b5ac","0627d6e13c3cd9afced7944aae953f6754f36c2f07665344531bc5bda4987b7b","2423c49ab6f17f04d19438c22fc8b12a4c4c0d0e48ede80ee72d35a39a7c4ee9","4e5ae7d9eeacb4d370774bec74a487dde7b0e8c585d641b3282637875f39bf46","e39d64fa6d219bc0c6e1cda6d36c7b03ea0c3660c87316b9cc66f970c9e6b517","bd4c9dc7a4967479e0f6bdeea7f149ea17385e90158a09ba962798477eab94e4","01720b8cf1e9f0b2ab2c6ffc37569310be6da79582947230c0f16656700a1aa7","681dc77c3ba725899fc1c4672f473bc58f3bf6866efab16940459b72b566c783","586c88e1997a026767853125b6d6fac108d222c87212fbf653a619a4c1ca0fb5","7a80760a2cc6bf365e9f551ba5dec04f0720da03ad38ac7dbec114cc2d71e7a8","870f5057ceb84f6adb1fb80a91217ec69cd621ed18ade0daa7e0901d06db250d","89f64dde62e64301d28f7779b8277bd2e4d2a35eb7445b564ff26a96642c97b8","65a0f7c7038826fcaa20129ea56bd13412fa31d892c83d4988cbaed8d9259df4","27b35493a8b1cb87e37b61f89a71dbbf2b0ade587cbaea41f4fd42435130e8c9","67d4e628cbdf299d19519091e11485b5e499fc54c9ba235a880290384d37b029","8ff4003e1803103a6076b70f29f3f66c02d066cf0595b8e89ce1b9e032d1281d",{"version":"4572b8cedb87424ece15bfca8641b2ac81327b9237abc1c5ec09e869bfe0a206","signature":"4ed4ae10450bca2e6d790336d3acdc5873d2cf83f2623b19a5bbf66ca3c7700c"},{"version":"2a157d89581058fc5123eb42784ca0425efd27c4920e05198fd44d601863e3ca","signature":"500c27f9bd20fccd14c6062f3ba676062d050a5d19e2b8f60dc6120ccf00de19"},{"version":"e11eafc9fc302bd6fbfebadae63e0dfeebebabbe693e0a8533f5ceb8e298cc5a","signature":"ae525038b6dc2374c10e94318e6a2ca97470220e236f17eb3916ad8dd5698c0d"},{"version":"b269e2e7a0da57df4c8187a8d9b2f19ea8d847083a76006b2d063815c0e26c6a","signature":"5a9f367952bedf465a5e001c215cd8a354beba6663d1c37b935834fc2e43c581"},{"version":"3bb0e7164c489a33d87553a205349f258d7b6276928a6851749371cf00f62957","signature":"ca30c38317ab4d7a409549f9635f74fc5298936a2a0362ca6965dc4f2616acdd"},{"version":"ead5ce9a498f8e68de049d0eaa77d1d3ee5fce82b8ce25644d957a73d959387d","signature":"d7243f0589eba2d915173595c9b813883974ec45a3881bc07d2a85803cf2e730"},{"version":"21705dfb221510fa0df11bedd845f41653a3cb9e1f2d31e074eb6a86d056ca24","signature":"31d088e55566a8f1dc252e25881bc40bf39f5bedfebde17b7115e1e33bd75bb9"},{"version":"815958473a2740225d150044c5c07a8ebb9cd6918d91c33d491316560a610850","signature":"a93c0363933733945c4442400d9991831e40b5db20fa7eae7a747745686abe08"},{"version":"3385dce3cd2b38afb4a713f223d1de0e5a1523fec5a262b4a79b05636181e8de","signature":"a88bff1af688c03f7eed801f1087783d0ffdf5ed59005be06f75fdd9eccace5e"},"3284e33a45d6aa8324691ac5737d08695e35e99b5f69fdc9ef21b3c7e7fd8449","46899ea33977cc9709846fa0df32edbaa610d261a7020e487c09c5b499723634","df2ba32dfae996beb1face17a5bba909d7fb8f6fb80ac554e7cae50e8b00a4c7","b4a8d900684e3167a5251e7614843bc889a307bd79226054124286743475f2fa","5feab6c5b5962b943354bafc10e79ab8a495786c1141358f2a44fe2108003828","91dc8945750895c8ee8cc8549f81b4f0a7a6248af72e48359f8cbbc5b8bec77a","67e1ae275bb047700f4384559e596bcdc46a9e7ba1ef6ab275e60b8059f077ce","eeb24fa259f000f6b51a1fe89123f55de081eb2a0ef8d8f847afd67af49cfb68","9d9b52c50efdfc1d23d4aea99074009a932068cb786992776c233913bff1eeb2","e21bb2cfbcdd8ce7eebb72422f3660806724f2b16cd6ce126d527511abb3a379","c04146836a55ea071b435298335e47f569db0e4d3ae420e35c83e448f944192f","31f71fe23daabea143fc8bd21dae0d5908227180fcda38ad3674df70351f9761","8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f",{"version":"c1824bcb95b65fb8926f679e9e850fd2cb96a15e5ea385284d532dccc8463d8b","signature":"16c3c4a895b9388e841ef72d3550c779c8418ac18722c74261732a18725236ed"},{"version":"7a12d1b13c0cd089bd6261804e5667a393672f4a1caf2fcb8ec3cfcf478cc2c0","signature":"bd6fa27449cccbb5f8e591a3659e50e9c951ca0790dddb59549bcc1d06d4e665"},{"version":"c69af7b25f8a8d4b7b8838b522886284f7beb1f565ce9f5b88165faf4c05ad7d","signature":"a26da3d3936594a283a23e851c5d02c6c2c1a49813cf60287e33583486689068"},{"version":"af1ae61fa804143b4395dc1f3b7c338b446450058a50f390d8a7c2ef5be66aeb","signature":"72a60b2a892d4df0c7f030fe5f7ed293b67e00591b46435c18d79889ac070be3"},{"version":"fc6e63b1b6efc9580c932b49e05e6ce89167c66b501f38686cfde9e79886cba9","signature":"9e4830072b988fa6d2a632fe4bcf4889a2b1345e27d9f4961dddcde179e4ee7a"},{"version":"6600b38c0572932a11763a3dcfb97c63bc0794cef02de811c127cddfc6e0a451","signature":"0bf44aa34cfc7280d9ee82051ecfc796617db7a1bc7a04dac97127a54be57ddd"},{"version":"ad50407bb2fcb7350c4064e45eb4fe476260b2ddab238ad7040062343172dab5","signature":"536aee80ae8276b2fdcc6746470a0eab98513ba2a07e341e8f92e1f4742f7292"},{"version":"92fa28d456f3270378451ce451cdbd2246eac9b90d8e95a2970e7c3e8d5439e4","signature":"4177385de34b0c1788bf0176ec122970b49e9143425c3cf81803cc9807d3793d"},{"version":"687328599f9da16db4de865a31551ad92748615189922acb8c7cc63d288112c3","signature":"cdf8d87461e48d0c7c5a1093ab8eac9c2b021937e8f7aa00a139b7ae5b860285"},{"version":"c0a1284dca69e65eb9f5911818b2d223e2758ab9e6cb8b55e6fd15e11afa2b10","signature":"5e461d2b79f1162e7d5bc555753a0e84ba1fd337ef4a6136c5d0633eb96f932c"},{"version":"7d27a4f4911b76f63cf27e82491e16fb9503e46200327540095c47c852ce8294","signature":"34ed5991593aff2a2d2985842170305560c5e4600f23b833084703a2b9cfa13d"},{"version":"e37fdc700141248a7126e80d1477b26198863e4db5a25446e4e1309de733a03a","signature":"e414abbb6fc21c4a81e0d37f29faf482dded35335e73b0329b1243fb4ff98dbf"},{"version":"4a116ad545aba7eef64884a9f2ad3e4329e387376e3ffa3c345868a20f99b099","signature":"5e502580b557e2b39d8d9a1e0a71fd572af1aeef928f62754f925226d018b11b"},{"version":"6e61b0c6ee8e9bc4030d443b88effe1fd08e8e03b823b67207af2ed733ca7759","signature":"83a1fd0506b09343b6b187507d90824070fdeffd3ee9c09d976300e325d75706"},{"version":"31d9394a627a45f00d3824f0078152fa7a718d93ea0ae4f6eaf6441951c5c02a","signature":"27d694c366be25caf0b4855e9ce350a54df88dc567c67a641d09b928549de777"},{"version":"04afb02c37026c0f6376b44cb3e4b9839642835e4643c55bf801b06699af1395","signature":"db3c40f379f214e34124777300fa71e147a7dad7d392e10eeabb7a2a7a977f01"},{"version":"8cbf91182610d564e9a12bb08a1cc7188aef1eb91c47880f34d82fb4be476b64","signature":"5c9bfa84db250eaafa48cfd7f6758c382a8d55d14db5e8e07819d8fa55093025"},{"version":"7e35db14e6142836599b82529d8857d18cb4159b149d2bb9672a8d9d405cdf8b","signature":"6da83de6ab069bd38ec0186dcac008302e2271520b4b4cfddfdfd5342c673a42"},{"version":"e95dd5f3dfe8086d0036e18380e4bcfec3f7ba6066571af75151fa2fbef70902","signature":"3089b65f7d58aed8b9c3be23cd3bae07e64925527c87e2d93059c19e454fb32d"},{"version":"2b96dcd296aba8e2dd7298f4d4044bd89fead8afd23f33f600c583ae830d298b","signature":"f7f7a9cf48bc904ce1a718f5ee8b9e55205d95cdbb4dd46c518d6c37441a1065"},{"version":"746c9066aa38f4ef87fa23ab1041ddac3fab63aebe422dc0ec651f84215060f1","signature":"b32c57f529bc1ee5be4b9795bbaa45f9e7ff8ea2ca6339de99353501190a2d57"},{"version":"aa486ca9420abcca34b2f7d5eadb073469004cfa7de94c7316f56e728524d425","signature":"ddd36945f25c051311922f330364c57c3b095d54982f60173c7ab436bfc51829"},{"version":"8a37c9256ec99b4afc42330094c2b5432ccde10de3fb47e6da33340605581bba","signature":"39d2e51d7d0806c9349edf4606817cf9ddc6cfcc17923074e24de1da00a77fb4"},{"version":"1540da88c3ea4884ce26b0d21e6b00de19f8736216ed16cb0a5377a052074a2a","signature":"33b394435b0f90091fe13aea6ce7c7ff2ef9b695adbc956252f7c936ad2611d4"},{"version":"8ea9dcb8c1c8975dd166d18b50d90b74ae67119925a7c8e580d82b6e32c68448","signature":"6086638584b5bc3f3a4e0d9a08d68ef04971a20170c7f4346c23f52045f1e3ae"},{"version":"5c4864220944cc58ef0b09c34c6e2d0a894239565119013c491cd2e2eeade5fa","signature":"8289fe12c39976282e0e621234d8912e10e6d4ac8f0501fedeb0bf12d76fb259"},{"version":"992a01bd398e03657efd0e7ad2e2e8770b6721795cf070dcb9092fb84daaeca8","signature":"75c89f1c39a89cc97fe7b430956fc14e43bdb1d618c70cb105d6aa340970a29d"},{"version":"6c773406bcadc99ee82ac6f2dfb6d7d06e5461af9a9158c4dc0424d1e72b0008","signature":"2312a3cfbac27d362f5343982183e5bcda53cc7f489e6b7ba313ae4d0ae9a22e"},{"version":"5c892ebae648a1bf31665b2ec91e0cced5c2c6a41d4fca7f451c17804d31b286","signature":"f45c9154a3a9f0544e0482d7c11d71d6beabec90aff4ebd07a70c80fa2713e75"},{"version":"dd5e059dccb6d3b9229cb8a29fa9eccc7f823fcd5afad9156e994c89fa480307","signature":"788154aa7e0f3efc380b8b3a5213a6e821fd5cb2d9b6c9394ca560ffccc8358f"},{"version":"a6b82b56abc4609c0c0f7c6466cad1850938e5f02250bd6756e046329d66878f","signature":"5f9c6f0f7f442071a7e4622a2b17f6b0794d41b08bcc1e8bfe25ebe82352efbd"},{"version":"9c12b4c2541303f91fb78071186b053914013d045be702ab296d835c8c388be2","signature":"403a70c4c1a5b1c5254be45e660c78166ba0541ea249a5ceec579a4db64cca1e"},{"version":"f1af9c9990b8983d8c61de9101f185e446e8e50c6ded809084c85621a99e4f7d","signature":"a5ee1c0125ba2e726cfc9ffac4073f852b19dcf8f9c20dae6c1762de19a8f564"},{"version":"524beaf1985bb3a724a2e5d5037f2b4d25cbd66fbd5b65ed92fd7bda8cecfd4c","signature":"c1902ba109083d99b3c47891e6f044a1a4235a8377f9520d1a5c761541721feb"},{"version":"4dc259419c0dc8ed07b0df815ae9d3fe5e5f9577c516df926f50abfa1f0eef76","signature":"239341963f646e4a8302e0046649888c79938977e97a8a669178b30273157879"},{"version":"b2f3093f6977161373d26f2a7c574925935b6f8c41d17447c10b05f4ed7eae53","signature":"88f9a0fcc6f7d8e5ccf1b14152e4c71c8c69598c0168443e11c943244bf67270"},{"version":"003c82e0b28ae6809ea961b82e5e688f9fe1c04d8751efc06967baefa6f16dca","signature":"b45fef403b34182b67aeb7a7df452094bbd27087d7c44518f212421c8a228762"},{"version":"b8d5550c2e544a598895390d0918a9a1fbbd716b7396cc367bfc8705726957ec","signature":"c60ad55b5827bb603a48cb358f58d0fb702a52da857b122edf127e16c4921e8a"}],"root":[[437,439],[1090,1097],[1237,1242],[1253,1260],1480,1996,1997,[1999,2012],[2024,2035],[2037,2082],[2293,2308],[2336,2350],2357,[2360,2372],[2412,2448],[2450,2461],[2751,2756],[2762,2799],[2900,2905],[2921,2923],[3326,3331],[3349,3364],[3374,3398],[3441,3449],[3463,3500]],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":true,"declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":false,"outDir":"./dist","removeComments":true,"rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":false,"strictBindCallApply":false,"strictFunctionTypes":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":8},"fileIdsList":[[546,593,2993,3399],[546,593,2993,3218,3429],[546,593,2993,3084,3197,3401,3429],[546,593,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424],[546,593,2993],[546,593,2993,3034,3113,3426],[546,593,3400,3401,3425,3427,3428,3429,3430,3431,3432,3437,3438,3439],[546,593],[546,593,3197,3438],[546,593,3400],[546,593,3197],[546,593,2993,3402,3433],[546,593,3433,3434,3435,3436],[546,593,2993,3429],[546,593,2993,3411,3433],[546,593,2993,3412,3433],[546,593,3427],[546,593,2993,3145],[546,593,2993,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3429],[546,593,2993,2994,3043,3075,3084,3103,3113,3197,3399,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3428],[546,593,2993,3260],[546,593,2993,3218,3309],[546,593,2993,3084,3197,3262,3309],[546,593,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304],[546,593,2993,3034,3113,3306],[546,593,3261,3262,3305,3307,3308,3309,3310,3311,3312,3322,3323,3324],[546,593,3197,3323],[546,593,3261],[546,593,3313,3314,3315,3316,3317,3318,3319,3320,3321],[546,593,2993,3309],[546,593,2993,3281,3313],[546,593,2993,3282,3313],[546,593,2993,3283,3313],[546,593,2993,3284,3313],[546,593,2993,3285,3313],[546,593,2993,3286,3313],[546,593,2993,3287,3313],[546,593,2993,3289,3313],[546,593,3307],[546,593,2993,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3309],[546,593,2993,2994,3043,3075,3084,3103,3113,3197,3260,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3308],[546,593,2993,3219],[546,593,2993,3218,3249],[546,593,2993,3084,3197,3221,3249],[546,593,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244],[546,593,2993,3034,3113,3246],[546,593,3220,3221,3245,3247,3248,3249,3250,3251,3252,3256,3257,3258],[546,593,3197,3257],[546,593,3220],[546,593,3253,3254,3255],[546,593,2993,3249],[546,593,2993,3232,3253],[546,593,2993,3234,3253],[546,593,3247],[546,593,2993,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3249],[546,593,2993,2994,3040,3043,3075,3084,3103,3113,3197,3219,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3248],[546,593,2993,3199],[546,593,2993,3198],[546,593,3198,3199,3200,3201,3214],[546,593,3060],[546,593,2993,3060],[546,593,2993,3034,3213],[546,593,3215,3216],[546,593,3217],[546,593,3035,3037,3038,3039],[546,593,3034],[546,593,2993,3036],[546,593,3041,3042],[546,593,2993,3034,3041],[546,593,2993,3008,3009],[546,593,3002],[546,593,2993,3004],[546,593,3002,3003,3005,3006,3007],[546,593,2995,2996,2997,2998,2999,3000,3001,3004,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033],[546,593,3008,3009],[546,593,2194,2195,2196,2197,2291],[546,593,2194,2196,2198],[546,593,2194,2196],[546,593,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289],[546,593,631,634,2084,2190,2191,2194,2195,2197,2198,2290],[546,593,623,2194,2196,2291],[546,593,2194],[546,593,2132,2133,2138,2190,2191,2192,2193],[546,593,607,623,631,634,635,2083,2191,2193],[546,593,607,609,2084,2085],[546,593,2084,2086,2131],[546,593,2084,2130],[546,593,604,2132,2138,2191,2192],[546,593,607,2190,2191],[546,593,2186,2187,2188],[546,593,2186,2191,2192],[546,593,2186,2191],[546,593,607,2132,2190,2191],[546,593,631,634,2083,2132,2191,2193],[546,593,2132,2134],[546,593,2134,2135,2136,2137],[546,593,2083],[546,593,607,2083,2132,2133,2138,2185,2189,2191,2193],[546,593,607,623,634,2132,2190],[546,593,2565],[546,593,2891],[546,593,2851,2889,2890,2892,2894,2896,2897,2898],[546,593,2851,2889],[546,593,2851,2895],[546,593,2851],[546,593,2851,2896],[546,593,2850,2851,2856,2857,2861,2862,2863,2864,2865,2866],[546,593,2850,2851],[546,593,2893],[546,593,2850,2851,2854],[546,593,2851,2854],[546,593,2850,2851,2859],[546,593,2852,2853,2855,2856,2857,2858,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888],[546,593,2850],[546,593,2800,2833],[546,593,2800,2832,2833,2834,2835,2837,2838,2839,2840,2844,2845,2846,2847,2848,2849],[546,593,2800,2837],[546,593,2800,2835],[546,593,2800,2833,2834],[546,593,2835,2836],[546,593,2832],[546,593,2841,2842,2843],[546,593,2832,2842],[546,593,2835],[546,593,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2837],[546,593,2375],[397,546,593,2375],[546,593,2377],[546,593,2373,2374,2376,2378,2380],[546,593,2379],[397,546,593,2385,2387],[546,593,2382,2383],[546,593,2389,2390,2391,2392],[397,546,593],[546,593,2384],[546,593,2394,2395],[546,593,2381,2384,2387,2388,2393,2396,2399],[397,546,593,2382,2384],[546,593,2383,2385,2386],[397,546,593,2385],[546,593,2397,2398],[397,546,593,3452],[397,546,593,1482,3452,3453],[546,593,3455,3456],[546,593,3450,3454,3457,3459,3460],[246,397,532,546,593],[546,593,3458],[546,593,1481,1482],[397,546,593,3451],[546,593,3451,3452],[546,593,3461],[302,546,593],[52,303,304,305,306,307,308,309,310,311,312,313,314,315,546,593],[255,289,546,593],[262,546,593],[252,302,397,546,593],[320,321,322,323,324,325,326,327,546,593],[257,546,593],[302,397,546,593],[316,319,328,546,593],[317,318,546,593],[293,546,593],[257,258,259,260,546,593],[330,546,593],[275,546,593],[330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,546,593],[358,546,593],[353,354,546,593],[355,357,546,593,623],[51,261,302,329,352,357,359,366,389,394,396,546,593],[57,255,546,593],[56,546,593],[57,247,248,471,476,546,593],[247,255,546,593],[56,246,546,593],[255,368,546,593],[249,370,546,593],[246,250,546,593],[56,302,546,593],[254,255,546,593],[267,546,593],[269,270,271,272,273,546,593],[261,546,593],[261,262,277,281,546,593],[275,276,282,283,284,546,593],[53,54,55,56,57,247,248,249,250,251,252,253,254,255,256,262,267,268,274,281,285,286,287,289,297,298,299,300,301,546,593],[280,546,593],[263,264,265,266,546,593],[255,263,264,546,593],[255,261,262,546,593],[255,265,546,593],[255,293,546,593],[288,290,291,292,293,294,295,296,546,593],[53,255,546,593],[289,546,593],[53,255,288,292,294,546,593],[264,546,593],[290,546,593],[255,289,290,291,546,593],[279,546,593],[255,259,279,297,546,593],[277,278,280,546,593],[251,253,262,268,277,282,298,299,302,546,593],[57,251,253,256,298,299,546,593],[260,546,593],[246,546,593],[279,302,360,364,546,593],[364,365,546,593],[302,360,546,593],[302,360,361,546,593],[361,362,546,593],[361,362,363,546,593],[256,546,593],[381,382,546,593],[381,546,593],[382,383,384,385,386,387,546,593],[380,546,593],[372,382,546,593],[382,383,384,385,386,546,593],[256,381,382,385,546,593],[367,373,374,375,376,377,378,379,388,546,593],[256,302,373,546,593],[256,372,546,593],[256,372,397,546,593],[249,255,256,368,369,370,371,372,546,593],[246,302,368,369,390,546,593],[302,368,546,593],[392,546,593],[329,390,546,593],[390,391,393,546,593],[279,356,546,593],[288,546,593],[261,302,546,593],[395,546,593],[397,546,593,644],[246,534,539,546,593],[533,539,546,593,644,645,646,649],[539,546,593],[540,546,593,642],[534,540,546,593,643],[535,536,537,538,546,593],[546,593,647,648],[539,546,593,644,650],[546,593,650],[277,281,302,397,546,593],[440,546,593],[302,397,460,461,546,593],[442,546,593],[397,454,459,460,546,593],[464,465,546,593],[57,302,455,460,474,546,593],[397,441,467,546,593],[56,397,468,471,546,593],[302,455,460,462,473,475,479,546,593],[56,477,478,546,593],[468,546,593],[246,302,397,482,546,593],[302,397,455,460,462,474,546,593],[481,483,484,546,593],[302,460,546,593],[460,546,593],[302,397,482,546,593],[56,302,397,546,593],[302,397,454,455,460,480,482,485,488,493,494,507,508,546,593],[246,440,546,593],[467,470,509,546,593],[494,506,546,593],[51,441,462,463,466,469,501,506,510,513,517,518,519,521,523,529,531,546,593],[302,397,448,456,459,460,546,593],[302,452,546,593],[302,397,442,451,452,453,454,459,460,462,532,546,593],[454,455,458,460,496,505,546,593],[302,397,447,459,460,546,593],[495,546,593],[397,455,460,546,593],[397,448,455,459,500,546,593],[302,397,442,447,459,546,593],[397,453,454,458,498,502,503,504,546,593],[397,448,455,456,457,459,460,546,593],[255,397,546,593],[302,442,455,458,460,546,593],[459,546,593],[444,445,446,455,459,460,499,546,593],[451,500,511,512,546,593],[397,442,460,546,593],[397,442,546,593],[443,444,445,446,449,451,546,593],[448,546,593],[450,451,546,593],[397,443,444,445,446,449,450,546,593],[486,487,546,593],[302,455,460,462,474,546,593],[497,546,593],[286,546,593],[267,302,514,515,546,593],[516,546,593],[302,462,546,593],[302,455,462,546,593],[280,302,397,448,455,456,457,459,460,546,593],[277,279,302,397,441,455,462,500,518,546,593],[280,281,397,440,520,546,593],[490,491,492,546,593],[397,489,546,593],[522,546,593],[397,546,593,621],[525,527,528,546,593],[524,546,593],[526,546,593],[397,454,459,525,546,593],[472,546,593],[302,397,442,455,459,460,462,497,498,500,501,546,593],[530,546,593],[397,546,593,2351],[546,593,2292],[546,593,2352,2353,2354],[302,546,593,2292],[546,593,2351],[546,593,2355],[546,593,2407],[546,593,2406],[397,546,593,2406],[546,593,2401,2402,2408,2409,2410],[546,593,2401],[546,593,2403,2404,2405],[51,397,546,593,2642],[51,397,546,593],[546,593,2463,2640,2642],[546,593,2462,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662],[546,593,2642],[51,546,593,2463,2640,2642],[546,593,2640,2656],[51,546,593],[546,593,2640],[51,546,593,2642],[532,546,593,2565,2642,2718],[546,593,2719],[546,593,2635,2722],[546,593,2565,2642,2716,2717,2724],[546,593,2723,2725],[546,593,2565,2634],[546,593,2635,2721],[546,593,2565,2567,2642,2696,2697,2716],[546,593,2565,2635,2642,2716,2717],[302,532,546,593,2637,2719,2721,2727],[546,593,2635,2642,2663,2699,2700,2701,2713,2718,2720,2721,2722,2726,2727,2728,2729,2732,2736,2737,2740,2747,2748,2749],[546,593,2565,2566],[546,593,2663],[302,397,546,593,2565,2567,2631,2635,2636,2642],[546,593,2463,2566,2567,2568,2569,2570,2636,2637,2638,2639,2640,2641],[397,546,593,2565],[546,593,2463],[546,593,2565,2730,2731],[546,593,2565,2642,2674,2678,2688],[546,593,2565,2665],[546,593,2565,2674],[546,593,2565,2642,2674,2677,2678,2687,2688],[546,593,2565,2642,2664,2675,2687],[546,593,2565,2642,2668,2677,2678,2680,2681,2682,2687,2689],[546,593,2565,2642,2690],[546,593,2565,2642,2668,2677,2678,2681,2684,2687,2689],[546,593,2565,2668,2687],[546,593,2565,2642,2687],[546,593,2565,2642,2667,2668,2678,2681,2689],[546,593,2565,2674,2682,2687],[546,593,2565,2642,2691,2692,2693,2694,2695],[546,593,2696,2697,2734,2735],[546,593,2665,2669],[546,593,2665,2666,2667,2669,2670,2671,2672,2673],[546,593,2642,2670],[546,593,2670],[546,593,2642,2664],[546,593,2566,2642,2664,2665,2666],[397,546,593,2642,2664,2665,2666],[397,546,593,2642],[397,546,593,2565,2642,2664],[546,593,2733],[546,593,2565,2676,2679,2683,2685,2686],[397,546,593,2674,2680,2684],[546,593,2642,2676,2679,2683,2685,2686,2687],[459,460,546,593,2698],[397,482,546,593],[397,482,546,593,2700],[546,593,2565,2705,2712],[546,593,2699,2700,2701,2713,2714,2715],[451,459,460,509,532,546,593,2642,2662,2698,2699,2719],[460,532,546,593,2565,2637,2642,2699],[397,546,593,2639],[546,593,2738,2739],[546,593,2674],[546,593,2741,2743,2744,2745,2746],[397,546,593,2742],[546,593,2478,2565],[546,593,2565,2577],[546,593,2572],[546,593,2565,2572],[546,593,2565,2575],[546,593,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630],[546,593,2565,2571],[546,593,2602],[546,593,2565,2573,2577],[546,593,2577],[546,593,2565,2576,2577],[546,593,3365,3367,3368,3369,3370,3371],[397,546,593,3365,3366],[546,593,3372],[397,546,593,2014,2016],[546,593,2013,2016,2017,2018,2020,2021],[546,593,2014,2015],[397,546,593,2014],[546,593,2019],[546,593,2016],[546,593,2022],[546,593,1067],[546,593,1068,1069,1070],[546,593,1049],[546,593,1050,1071,1072,1073,1074],[397,546,593,1072],[546,593,1075],[397,400,401,546,593],[400,401,546,593],[400,546,593],[414,546,593],[397,400,546,593],[398,399,402,403,404,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,546,593],[400,425,546,593],[51,421,425,426,427,432,434,546,593],[400,423,424,546,593],[400,422,546,593],[397,425,546,593],[428,429,430,431,546,593],[433,546,593],[435,546,593],[546,593,1078,1079,1080,1081,1082,1083,1084,1085,1087,1088],[302,546,593,1078,1079],[546,593,1077],[546,593,1080],[397,532,546,593,1078,1079,1080],[397,546,593,1077,1080],[397,546,593,1080],[397,546,593,1078,1080],[397,546,593,1077,1078,1086],[546,593,1041,1042],[397,546,593,1039,1040],[246,397,546,593,1039,1040],[546,593,1043,1045,1046],[546,593,1039],[546,593,1044],[397,546,593,1039],[397,546,593,1039,1040,1044],[546,593,1047],[546,593,2145],[546,593,2148],[546,593,2152,2154],[546,593,2141,2145,2156,2157],[546,593,2167,2170,2176,2178],[546,593,2140,2145],[546,593,2139],[546,593,2140],[546,593,2147],[546,593,2150],[546,593,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2179,2180,2181,2182,2183,2184],[546,593,2155],[546,593,2151],[546,593,2152],[546,593,2144,2145],[546,593,2151,2152],[546,593,2158],[546,593,2179],[546,593,2144],[546,593,2145,2161,2164],[546,593,2160],[546,593,2161],[546,593,2159,2161],[546,593,2145,2164,2166,2167,2168],[546,593,2167,2168,2170],[546,593,2145,2159,2162,2165,2172],[546,593,2159,2160],[546,593,2142,2143,2159,2161,2162,2163],[546,593,2161,2164],[546,593,2143,2144,2162,2165],[546,593,2145,2164,2166],[546,593,2167,2168],[546,593,1263,1268],[546,593,1262,1263,1268],[546,593,1262,1268,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397],[546,593,1398],[546,593,1263,1264,1265,1266,1267,1268,1269,1297,1353,1366,1369,1371,1373,1374,1376,1380,1381],[546,593,1357],[546,593,1355,1356,1357,1358,1359],[546,593,1355,1356,1357],[546,593,623,641,1263,1268,1373],[546,593,641,1266,1268,1361,1373],[546,593,1268,1362,1373],[546,593,1369],[546,593,604,641,1262,1263,1268,1306,1353,1354,1360,1361,1362,1363,1364,1365,1366,1370,1371,1372],[546,593,641,1264,1268,1353,1373],[546,593,1262,1268,1353,1363],[546,593,1262,1268],[546,593,604,641,1268,1353,1362,1363,1364,1366,1370,1373],[546,593,641,1268,1362],[546,593,604,612,631,641,1268],[546,593,600,641],[546,593,623,641,1268,1361,1366,1369,1373],[546,593,604,641,1268,1353,1354,1361,1362,1366,1367,1368,1370,1373],[546,593,1263,1268,1280],[546,593,1263,1268,1285],[546,593,1268,1291,1382],[546,593,1263,1268,1295],[546,593,1262,1268,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1382],[546,593,1268,1313,1382],[546,593,1263,1268,1277],[546,593,1263,1268,1324],[546,593,1262,1263,1268,1336],[546,593,641,1268],[546,593,1268],[546,593,1370,1377],[546,593,1377,1378,1379],[546,593,1377],[546,593,641,1264,1268],[546,593,641,1262,1263,1264,1265,1266,1267],[546,593,604,641,1262,1268,1361,1362,1363,1366,1370,1373,1374,1375],[546,593,1262,1268,1353,1363,1374],[546,593,1268,1353,1354,1362,1366,1373,1376],[546,593,1262,1263,1268,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414],[546,593,1415],[546,593,1263,1268,1417,1418],[546,593,1263,1268,1419],[546,593,1263,1268,1420],[546,593,1263,1268,1418],[546,593,641,1262,1263,1268,1419],[546,593,641,1262,1268,1382,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432],[546,593,1263,1268,1382],[546,593,1263,1268,1418,1419],[546,593,1262,1263,1268,1417],[546,593,1268,1382,1418],[546,593,1417,1418,1419,1433],[546,593,1263,1268,1436],[546,593,1263,1268,1437],[546,593,1263,1268,1435,1436],[546,593,641,1262,1263,1268,1435],[546,593,641,1262,1268,1382,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453],[546,593,1263,1268,1436,1439],[546,593,1263,1268,1442],[546,593,1262,1263,1268,1436],[546,593,1262,1263,1268,1436,1445],[546,593,1262,1263,1268,1436,1447],[546,593,1262,1263,1268,1436,1447,1448,1449],[546,593,641,1262,1263,1268,1436,1447,1448],[546,593,1439,1447,1448,1454],[546,593,3061,3062,3063,3064],[546,593,2993,3063],[546,593,3065,3068,3074],[546,593,3066,3067],[546,593,3069],[546,593,2993,3071,3072],[546,593,3071,3072,3073],[546,593,3070],[546,593,3146],[546,593,2993,3126],[546,593,2993,3113,3145,3150],[546,593,2993,3145,3148,3149],[546,593,3127,3128,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159],[546,593,2993,3113],[546,593,2993,3145,3150],[546,593,2993,3149],[546,593,2993,3157],[546,593,3129,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143],[546,593,2993,3130],[546,593,2993,3137],[546,593,2993,3132],[546,593,2993,3138],[546,593,3186],[546,593,3183,3184,3187,3188,3189,3190,3191,3192,3193,3194],[546,593,3147],[546,593,3160],[546,593,3144],[546,593,3195],[546,593,2993,3076,3077],[546,593,3078,3079],[546,593,3076,3077,3080,3081,3082,3083],[546,593,3095,3096,3097,3098,3099,3100,3101,3102],[546,593,2993,3093,3095],[546,593,2993,3094],[546,593,2993,3099],[546,593,2993,3044,3057,3058],[546,593,2993,3056],[546,593,3044,3057,3058,3059],[546,593,3106],[546,593,3107],[546,593,2993,3109],[546,593,2993,3104,3105],[546,593,3104,3105,3106,3108,3109,3110,3111,3112],[546,593,3045,3046,3047,3048,3050,3051,3052,3053,3054,3055],[546,593,2993,3049],[546,593,2993,3050],[546,593,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212],[546,593,2993,3202],[546,593,3161],[546,593,2993,3084],[546,593,3114],[546,593,2993,3171,3172],[546,593,3173],[546,593,2993,3114,3162,3163,3164,3165,3166,3167,3168,3169,3170,3174,3175,3176,3177,3178,3179,3180,3181,3182,3196],[546,593,2925],[546,593,2924],[546,593,2928,2937,2938,2939],[546,593,2937,2940],[546,593,2928,2935],[546,593,2928,2940],[546,593,2926,2927,2938,2939,2940,2941],[546,593,623,2944],[546,593,2946],[546,593,2929,2930,2936,2937],[546,593,2929,2937],[546,593,2949,2951,2952],[546,593,2949,2950],[546,593,2954],[546,593,2926],[546,593,2931,2956],[546,593,2956],[546,593,2956,2957,2958,2959,2960],[546,593,2959],[546,593,2933],[546,593,2956,2957,2958],[546,593,2929,2935,2937],[546,593,2946,2947],[546,593,2962],[546,593,2962,2966],[546,593,2962,2963,2966,2967],[546,593,2936,2965],[546,593,2943],[546,593,2925,2934],[546,593,607,609,2933,2935],[546,593,2928],[546,593,2928,2970,2971,2972],[546,593,2925,2929,2930,2931,2932,2933,2934,2935,2936,2937,2942,2945,2946,2947,2948,2950,2953,2954,2955,2961,2964,2965,2968,2969,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2989,2990,2991,2992],[546,593,2926,2930,2931,2932,2933,2936,2940],[546,593,2930,2948],[546,593,2964],[546,593,2929,2931,2937,2976,2978,2980],[546,593,2929,2931,2937,2976,2977,2978,2979],[546,593,2980],[546,593,2935,2936,2950,2980],[546,593,2929,2935],[546,593,2935,2954,2971],[546,593,2936,2946,2947],[546,593,607,623,2944,2976],[546,593,2929,2930,2986,2987],[546,593,607,608,2930,2935,2948,2976,2985,2986,2987,2988],[546,593,2930,2948,2964],[546,593,2935],[546,593,2993,3085,3086],[546,593,2993,3085],[546,593,3086],[546,593,3085,3086,3087,3088,3089,3090,3091,3092],[546,593,623,2993],[546,593,3117],[546,593,623,3116,3118],[546,593,623],[546,593,3115,3116,3119,3120,3121,3122,3123,3124,3125],[546,593,3185],[546,593,2632],[546,593,607,641,1249],[546,593,607,641],[546,593,604,607,641,1243,1244,1245],[546,593,598,604,1252],[546,593,1246,1248,1250,1251],[546,593,1059],[546,593,1052],[546,593,1051,1053,1055,1056,1060],[546,593,1053,1054,1057],[546,593,1051,1054,1057],[546,593,1053,1055,1057],[546,593,1051,1052,1054,1055,1056,1057,1058],[546,593,1051,1057],[546,593,1053],[546,590,593],[546,592,593],[546,593,598,626],[546,593,594,599,604,612,623,634,2091],[546,593,594,595,604,612],[541,542,543,546,593],[546,593,596,635],[546,593,597,598,605,613],[546,593,598,623,631,2091],[546,593,599,601,604,612,2091],[546,592,593,600],[546,593,601,602],[546,593,603,604],[546,592,593,604],[546,593,604,605,606,623,634,2091],[546,593,604,605,606,619,623,626,2091],[546,593,601,604,607,612,623,634,2091],[546,593,604,605,607,608,612,623,631,634,2091],[546,593,607,609,623,631,634,2091],[546,593,604,610],[546,593,611,634,639],[546,593,601,604,612,623,2091],[546,593,613],[546,593,614],[546,592,593,615],[546,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,2091],[546,593,617],[546,593,618],[546,593,604,619,620],[546,593,619,621,635,637],[546,593,604,623,624,626,2091],[546,593,625,626,2091],[546,593,623,624],[546,593,626],[546,593,627],[546,590,593,623,628],[546,593,604,629,630],[546,593,629,630],[546,593,598,612,623,631,2091],[546,593,632],[593],[544,545,546,547,548,549,550,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640],[546,593,612,633],[546,593,607,618,634,2091],[546,593,598,635],[546,593,623,636,2091],[546,593,611,637,2091],[546,593,638],[546,588,593],[546,588,593,604,606,615,623,626,634,637,639],[546,593,623,640,2091],[546,593,641,2907,2909,2913,2914,2915,2916,2917,2918],[546,593,623,641],[546,593,604,641,2907,2909,2910,2912,2919],[546,593,604,612,623,634,641,2906,2907,2908,2910,2911,2912,2919],[546,593,623,641,2909,2910],[546,593,623,641,2909],[546,593,641,2907,2909,2910,2912,2919],[546,593,623,641,2911],[546,593,604,612,623,631,641,2908,2910,2912],[546,593,604,641,2907,2909,2910,2911,2912,2919],[546,593,604,623,641,2907,2908,2909,2910,2911,2912,2919],[546,593,604,623,641,2907,2909,2910,2912,2919],[546,593,607,623,641,2912],[546,593,607,1252],[546,593,605,623,641],[546,593,607,641,1247],[546,593,1131,1132,1133,1134,1135,1136,1137,1138,1139],[546,593,604,607,609,612,623,631,634,640,641],[546,593,604,1479],[546,593,1482,1994],[546,593,1518],[546,593,1485,1518],[546,593,1485],[546,593,1485,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1873],[546,593,1485,1518,1872],[546,593,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1888,1889,1890,1891,1892,1893,1894,1895,1896],[546,593,1485,1887],[546,593,1485,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1888],[546,593,1897],[546,593,1484,1485,1518,1557,1745,1836,1840,1844],[546,593,641,1485,1834],[546,593,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831],[546,593,604,641,1483,1485,1518,1599,1684,1832,1833,1834,1835,1837,1838,1839],[546,593,1485,1832,1837],[546,593,641,1485],[546,593,604,612,631,641,1485],[546,593,623,641,1485,1834,1840,1844],[546,593,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831],[546,593,604,641,1485,1834,1840,1841,1842,1843],[546,593,1485,1837,1841],[546,593,1612],[546,593,1485,1518,1617],[546,593,1485,1619],[546,593,1485,1518,1622],[546,593,1485,1624],[546,593,1485,1508],[546,593,641],[546,593,1535],[546,593,1557],[546,593,1485,1518,1645],[546,593,1485,1518,1647],[546,593,1485,1518,1649],[546,593,1485,1518,1651],[546,593,1485,1518,1655],[546,593,1485,1500],[546,593,1485,1666],[546,593,1485,1681],[546,593,1485,1518,1682],[546,593,1485,1518,1684],[546,593,641,1483,1484,1840],[546,593,1485,1518,1694],[546,593,1485,1694],[546,593,1485,1704],[546,593,1485,1518,1714],[546,593,1485,1759],[546,593,1485,1773],[546,593,1485,1775],[546,593,1485,1518,1798],[546,593,1485,1518,1802],[546,593,1485,1518,1808],[546,593,1485,1518,1810],[546,593,1485,1812],[546,593,1485,1518,1813],[546,593,1485,1518,1815],[546,593,1485,1518,1818],[546,593,1485,1518,1829],[546,593,1485,1836],[546,593,1485,1899,1900,1901,1902,1903,1904,1905,1906,1907],[546,593,1485,1908],[546,593,1485,1905,1908],[546,593,1485,1840,1905,1906,1908],[546,593,1908,1909],[546,593,1933],[546,593,1485,1933],[546,593,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932],[546,593,1485,1969],[546,593,1485,1937],[546,593,1969],[546,593,1485,1938],[546,593,1485,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968],[546,593,1937,1969],[546,593,1485,1954,1969],[546,593,1485,1954],[546,593,1961],[546,593,1961,1962,1963],[546,593,1937,1954,1969],[546,593,1992],[546,593,1971,1992],[546,593,1485,1992],[546,593,1485,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991],[546,593,1980],[546,593,1485,1983,1992],[546,593,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1888,1889,1890,1891,1892,1893,1894,1895,1896,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1993],[546,593,604,1481],[546,593,2325],[546,593,2327,2328,2329,2330,2331,2332,2333],[546,593,2316],[546,593,2317,2325,2326,2334],[546,593,2318],[546,593,2312],[546,593,2309,2310,2311,2312,2313,2314,2315,2318,2319,2320,2321,2322,2323,2324],[546,593,2317,2319],[546,593,2320,2325],[546,593,1103],[546,593,1102,1103,1108],[546,593,1104,1105,1106,1107,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227],[546,593,1103,1140],[546,593,1103,1180],[546,593,1102],[546,593,1098,1099,1100,1101,1102,1103,1108,1228,1229,1230,1231,1235],[546,593,1108],[546,593,1100,1233,1234],[546,593,1102,1232],[546,593,1103,1108],[546,593,1098,1099],[546,593,1261,1456],[546,593,1060,1063,1065,1066],[546,593,1060,1065,1066],[546,593,1060,1061,1065],[546,593,594,1060,1062,1063,1064],[546,593,604,641],[546,593,2758,2759,2760],[546,593,2758],[546,593,2757],[546,593,604,641,2758],[546,593,2565,2702],[546,593,2702,2703,2704],[546,593,2465,2466,2472,2473],[546,593,2474,2539,2540],[546,593,2465,2472,2474],[546,593,2466,2474],[546,593,2465,2467,2468,2469,2472,2474,2477,2478,2749],[546,593,2468,2479,2493,2494],[546,593,2465,2472,2477,2478,2479,2749],[546,593,2465,2467,2472,2474,2476,2477,2478,2749],[546,593,2465,2466,2477,2478,2479,2749],[546,593,2464,2480,2485,2492,2495,2496,2538,2541,2564],[546,593,2465],[546,593,2466,2470,2471],[546,593,2466,2470,2471,2472,2473,2475,2486,2487,2488,2489,2490,2491],[546,593,2466,2471,2472],[546,593,2466],[546,593,2465,2466,2471,2472,2474,2487],[546,593,2472],[546,593,2466,2472,2473],[546,593,2470,2472],[546,593,2479,2493],[546,593,2465,2467,2468,2469,2472,2477],[546,593,2465,2472,2475,2478,2749],[546,593,2468,2476,2477,2478,2481,2482,2483,2484,2749],[546,593,2478,2749],[546,593,2465,2467,2472,2474,2476,2478,2749],[546,593,2474,2477],[546,593,2474],[546,593,2465,2472,2478,2749],[546,593,2466,2472,2477,2488],[546,593,2477,2542],[546,593,2474,2478,2749],[546,593,2472,2477],[546,593,2477],[546,593,2465,2475],[546,593,2465,2472],[546,593,2472,2477,2478,2749],[546,593,2497,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563],[546,593,2477,2478,2749],[546,593,2466,2472,2476,2477,2478,2749],[546,593,2467,2472],[546,593,2465,2472,2476,2477,2478,2490,2749],[546,593,2465,2467,2472,2478,2749],[546,593,2465,2467,2472],[546,593,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537],[546,593,2490,2498],[546,593,2498,2500],[546,593,2465,2472,2474,2477,2497,2498],[546,593,2465,2472,2474,2476,2477,2478,2490,2497,2749],[546,593,607],[546,593,607,609,634],[546,593,601,641,1463,1470,1471],[546,593,604,641,1458,1459,1460,1462,1463,1471,1472,1477],[546,593,601,641],[546,593,641,1458],[546,593,1458],[546,593,1464],[546,593,604,631,641,1458,1464,1466,1467,1472],[546,593,1466],[546,593,1470],[546,593,612,631,641,1458,1464],[546,593,604,641,1458,1474,1475],[546,593,1458,1459,1460,1461,1464,1468,1469,1470,1471,1472,1473,1477,1478],[546,593,1459,1463,1473,1477],[546,593,604,641,1458,1459,1460,1462,1463,1470,1473,1474,1476],[546,593,1463,1465,1468,1469],[546,593,1459],[546,593,1461],[546,593,612,631,641],[546,593,1458,1459,1461],[546,593,2358],[546,593,1179],[546,593,641,1262,1268,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1434,1435,1437,1438,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,181,190,192,193,194,195,196,197,199,200,202,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,546,593],[103,546,593],[59,62,546,593],[61,546,593],[61,62,546,593],[58,59,60,62,546,593],[59,61,62,219,546,593],[62,546,593],[58,61,103,546,593],[61,62,219,546,593],[61,227,546,593],[59,61,62,546,593],[71,546,593],[94,546,593],[115,546,593],[61,62,103,546,593],[62,110,546,593],[61,62,103,121,546,593],[61,62,121,546,593],[62,162,546,593],[62,103,546,593],[58,62,180,546,593],[58,62,181,546,593],[203,546,593],[187,189,546,593],[198,546,593],[187,546,593],[58,62,180,187,188,546,593],[180,181,189,546,593],[201,546,593],[58,62,187,188,189,546,593],[60,61,62,546,593],[58,62,546,593],[59,61,181,182,183,184,546,593],[103,181,182,183,184,546,593],[181,183,546,593],[61,182,183,185,186,190,546,593],[58,61,546,593],[62,205,546,593],[63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,546,593],[191,546,593],[546,593,2472,2479,2706],[546,593,2707,2709,2710,2711],[546,593,607,641,2565,2708],[546,593,2633],[546,593,719,840],[546,593,658,1039],[546,593,722],[546,593,831],[546,593,827,831],[546,593,827],[546,593,673,715,716,717,718,720,721,831],[546,593,658,659,668,673,716,720,723,727,759,775,776,778,780,788,789,790,791,827,828,829,830,833,840,857],[546,593,793,795,797,798,808,810,811,812,813,814,815,816,818,820,821,822,823,826],[546,593,662,664,665,695,939,940,941,942,943,944],[546,593,665],[546,593,662,665],[546,593,948,949,950],[546,593,957],[546,593,662,955],[546,593,985],[546,593,973],[546,593,715],[546,593,658,696],[546,593,972],[546,593,663],[546,593,662,663,664],[546,593,703],[546,593,653,654,655],[546,593,699],[546,593,662],[546,593,694],[546,593,653],[546,593,662,663],[546,593,700,701],[546,593,656,658],[546,593,857],[546,593,711,712],[546,593,654],[546,593,993],[546,593,722,817],[546,593,631],[546,593,722,723,792],[546,593,654,655,662,668,670,672,686,687,688,691,692,722,723,725,726,833,839,840],[546,593,722,733],[546,593,670,672,690,723,725,731,733,747,760,764,768,775,831,837,839,840],[546,593,601,612,631,731,732],[546,593,722,723,794],[546,593,722,809],[546,593,722,723,796],[546,593,722,819],[546,593,723,824,825],[546,593,689],[546,593,799,800,801,802,803,804,805,806],[546,593,722,723,807],[546,593,658,659,668,733,735,739,740,741,742,743,770,772,773,774,776,778,779,780,785,786,787,789,831,840,857],[546,593,659,668,686,733,736,740,744,745,769,770,772,773,774,788,831,833],[546,593,788,831,840],[546,593,714],[546,593,659,696],[546,593,662,663,695,697],[546,593,693,698,702,703,704,705,706,707,708,709,710,713,1039],[546,593,652,653,654,655,659,699,700,701],[546,593,875],[546,593,833,875],[546,593,662,686,718,875],[546,593,659,875],[546,593,791,875],[546,593,875,876,877,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937],[546,593,675,875],[546,593,675,833,875],[546,593,875,879],[546,593,727,875],[546,593,730],[546,593,739],[546,593,728,735,736,737,738],[546,593,663,668,729],[546,593,733],[546,593,668,739,740,777,833,857],[546,593,730,733,734],[546,593,744],[546,593,668,739],[546,593,730,734],[546,593,668,730],[546,593,658,659,668,775,776,778,788,789,827,828,831,857,870,871],[51,546,593,656,658,659,662,663,665,668,669,670,671,672,673,693,694,698,699,701,702,703,714,715,716,717,718,721,723,724,725,727,728,729,730,733,734,735,736,737,738,739,740,741,742,743,746,747,749,750,751,752,753,754,755,756,757,758,759,761,764,765,768,770,771,772,773,774,775,776,777,778,781,782,784,785,786,788,789,790,791,827,831,833,836,837,838,839,840,850,851,853,854,855,856,857,871,872,873,874,938,945,946,947,951,952,953,954,956,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,986,987,988,989,990,991,992,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1026,1027,1028,1029,1030,1031,1032,1033,1034,1036,1038],[546,593,716,717,840],[546,593,716,840,1019],[546,593,716,717,840,1019],[546,593,840],[546,593,716],[546,593,665,666],[546,593,680],[546,593,659],[546,593,653,654,655,657,660],[546,593,860],[546,593,661,667,676,677,681,683,713,762,766,832,834,858,859,860,861,862,863,864,865,866,867,868,869],[546,593,652,656,657,660],[546,593,703,704,1039],[546,593,673,762,833],[546,593,662,663,667,668,675,685,831,833],[546,593,675,676,678,679,682,684,686,831,833,835],[546,593,668,680,681,685,833],[546,593,668,674,675,678,679,682,684,685,686,703,704,711,712,713,763,767,831,832,835,1039],[546,593,673,766,833],[546,593,653,654,655,673,686,833],[546,593,673,685,686,833,834],[546,593,675,833,857,858],[546,593,668,675,677,833,857],[546,593,652,653,654,655,657,661,668,674,685,686,833],[546,593,686],[546,593,653,673,683,685,686,833],[546,593,790],[546,593,791,831,840],[546,593,673,839],[546,593,673,1032],[546,593,672,839],[546,593,668,675,686,833,878],[546,593,675,686,879],[546,593,604,605,623,718],[546,593,833],[546,593,781],[546,593,659,668,774,781,782,831,840,856],[546,593,668,726,782],[546,593,659,668,686,770,772,783,856],[546,593,675,831,833,842,849],[546,593,782],[546,593,659,668,686,703,727,770,782,831,833,840,841,842,848,849,850,851,852,853,854,855,857],[546,593,668,675,686,703,726,831,833,841,842,843,844,845,846,847,848,856],[546,593,668],[546,593,675,833,849,857],[546,593,668,675,831,840,857],[546,593,668,856],[546,593,771],[546,593,668,771],[546,593,659,668,675,703,731,735,736,737,738,740,781,782,833,840,846,847,849,856],[546,593,659,668,703,773,781,782,831,840,856],[546,593,668,833],[546,593,668,703,770,773,781,782,831,840,856],[546,593,668,782],[546,593,668,670,672,690,723,725,731,747,760,764,768,771,780,788,831,837,839],[546,593,658,668,778,788,789,857],[546,593,659,733,735,739,740,741,742,743,770,772,773,774,785,786,787,789,857,1025],[546,593,668,733,739,740,744,745,775,789,840,857],[546,593,659,668,733,735,739,740,741,742,743,770,772,773,774,785,786,787,788,840,857,1039],[546,593,668,777,789,857],[546,593,784],[546,593,726,783,784],[546,593,669,724,746,761,765,836],[546,593,669,686,690,691,831,833,840],[546,593,690],[546,593,670,725,727,747,764,768,833,837,838],[546,593,761,763],[546,593,669],[546,593,765,767],[546,593,674,724,727],[546,593,835,836],[546,593,684,746],[546,593,671,1039],[546,593,668,675,686,748,759,833,840],[546,593,749,750,751,752,753,754,755,756,757,758],[546,593,668,788,831,833,840],[546,593,788,831,833,840],[546,593,753],[546,593,668,675,686,788,831,833,840],[546,593,670,672,686,689,715,725,730,734,747,764,768,775,782,828,833,837,839,850,851,852,853,854,855,857,879,1025,1026,1027,1035],[546,593,788,833,1037],[546,560,564,593,634],[546,560,593,623,634],[546,555,593],[546,557,560,593,631,634],[546,593,612,631],[546,555,593,641],[546,557,560,593,612,634],[546,552,553,556,559,593,604,623,634],[546,560,567,593],[546,552,558,593],[546,560,581,582,593],[546,556,560,593,626,634,641],[546,581,593,641],[546,554,555,593,641],[546,560,593],[546,554,555,556,557,558,559,560,561,562,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,582,583,584,585,586,587,593],[546,560,575,593],[546,560,567,568,593],[546,558,560,568,569,593],[546,559,593],[546,552,555,560,593],[546,560,564,568,569,593],[546,564,593],[546,558,560,563,593,634],[546,552,557,560,567,593],[546,555,560,581,593,639,641],[546,593,2129],[546,593,634,2093,2096,2099,2100],[546,593,623,634,2096],[546,593,634,2096,2100],[546,593,2090],[546,593,2094],[546,593,634,2092,2093,2096],[546,593,641,2090],[546,593,612,634,2092,2096],[546,593,604,623,634,2087,2088,2089,2091,2095],[546,593,2096,2105,2113],[546,593,2088,2094],[546,593,2096,2123,2124],[546,593,626,634,641,2088,2091,2096],[546,593,641,2090,2091],[546,593,2096],[546,593,634,2092,2096],[546,593,2087],[546,593,2090,2091,2092,2094,2095,2096,2097,2098,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2124,2125,2126,2127,2128],[546,593,601,2096,2116,2119],[546,593,2096,2105,2106,2107],[546,593,2094,2096,2106,2108],[546,593,2095],[546,593,2088,2090,2096],[546,593,2096,2100,2106,2108],[546,593,2100],[546,593,634,2094,2096,2099],[546,593,2088,2092,2096,2105],[546,593,623,2091],[546,593,2096,2116],[546,593,2108],[546,593,2088,2092,2096,2100],[546,593,626,639,641,2090,2091,2096,2123],[546,593,3332,3333,3334,3335,3336,3337,3338,3340,3341,3342,3343,3344,3345,3346,3347],[546,593,3334],[546,593,3334,3339],[397,546,593,2008,2009,2010,2011,2012,2025,2030,2031,2032],[397,546,593,1048,2004,2005,2006,2007,2008,2009,2010,2011,2012,2033],[397,546,593,1039,1048,2005,2007],[397,546,593,1039,1048,2004,2005,2007],[397,546,593,1039,1048,2003,2005,2007,2010],[546,593,1039,2007],[546,593,1039,2004,2007],[546,593,1039,2005,2006],[546,593,1039,2005],[397,546,593,1039,1048,2004,2005,2006,2007],[397,546,593,1039,1048,2005,2007,2010,2011],[397,546,593,2035,2038],[397,546,593,2037],[546,593,1236],[397,436,438,546,593],[397,439,532,546,593,651,1048,1076,1095,1253,1256,1257,1258],[397,546,593,2025,2049],[397,546,593,1048,2043,2044,2045,2046,2047,2048,2049,2050,2051],[397,546,593,1039,1048,2041,2043,2044,2045,2046,2047,2048],[436,546,593,1236],[436,546,593,2053],[546,593,1039,2043,2046],[546,593,1039,2041,2044,2045],[546,593,1039,2043],[546,593,1039,2042,2044],[397,546,593,1039,1048,2043],[397,546,593,2042,2043],[546,593,1039,2055],[397,546,593,651,1039,1048,2055,2056,2057,2058],[397,546,593,2055],[397,546,593,2055,2059],[397,546,593,1076,2059],[397,546,593,2030],[397,546,593,2023,2024],[397,532,546,593,2030,2031],[436,546,593,1236,2065,2066,2067],[436,546,593,1236,2069],[546,593,1039,2065,2066,2067],[546,593,1039,2069,2073],[546,593,2067],[397,546,593,651,2082,2293],[546,593,1090],[397,436,546,593,2025,2030,2031,2032,2298],[546,593,651],[397,546,593,1039,2300],[397,546,593,1039,2302],[397,546,593,2307],[546,593,1236,2295,2335],[397,546,593,1089,1252],[179,246,397,532,546,593,2298,2304],[179,246,397,532,546,593,1252,2305,2341],[397,546,593,623,640,1252],[397,546,593,2341,2342],[397,546,593,2344],[397,546,593,651],[397,546,593,598,651,1479],[397,546,593,651,2292],[546,593,1252],[546,593,1479],[546,592,593,1252],[546,593,651,1479,1995],[277,546,593,1090],[546,593,1048],[546,593,651,2356],[546,593,2359],[436,546,593,1236,2336],[436,546,593,1236,2362],[546,593,1039,2026,2029],[546,593,1039,2027,2028,2030],[546,593,1039,2029,2030],[546,593,1039,2027],[397,546,593,1039,1048,2026,2027,2363],[397,546,593,1039,1048,2026,2027,2029,2364],[397,546,593,1048,2369,2370],[546,593,2368,2369,2370],[397,546,593,1039,1048,2368],[397,436,546,593,2417,2418,2419,2420],[397,546,593,1039,1048,2296,2297,2382,2400,2411,2412,2413,2414,2415,2416,2417,2418,2419],[436,546,593,1236,2335],[436,546,593,1236,2335,2412,2414],[436,546,593,1236,2335,2425,2426],[546,593,2418,2419,2422,2423,2424,2427,2428,2429,2430,2431,2432],[436,546,593,2418],[436,546,593,2424],[436,546,593,2427],[436,546,593,2428],[436,546,593,1039,2440],[436,546,593,1039,2438,2439,2441],[436,546,593,1039,2414,2417],[436,546,593,1039,2412,2417],[436,546,593,1039,2413,2415,2416],[436,546,593,1039,2435,2438],[436,546,593,1039,2434,2436,2437,2440],[436,546,593,1039,2442],[436,546,593,1039],[546,593,2413,2415,2417,2434,2436,2438,2440,2441,2443,2444,2445,2446],[436,546,593,1039,2425,2426,2446],[436,546,593,1039,2445],[546,593,2412,2414,2416,2425,2426,2435,2437,2439,2442],[397,546,593,1039,1048,2428,2431,2434,2449],[397,436,546,593,2428,2431,2434,2450],[397,546,593,1039,1048,2030,2453,2454],[546,593,1039,2030],[546,593,1039,2030,2453],[546,593,1039,2030,2456],[397,546,593,1039,1048,2459],[397,546,593,1039,1048,2030,2457,2459],[546,593,1236,2750],[546,593,2751,2752,2753],[546,593,1236,2030,2750],[546,593,2750,2755],[397,546,593,2750,2755,2761,2762,2763],[397,546,593,605,614,2565],[546,593,2750],[546,593,2750,2763],[546,593,2755,2762,2763],[546,593,2030,2750,2762],[397,436,532,546,593,595,613,1090,1252,1259,1261,1457,1479,1480,1996,1997,1998,1999,2000,2001],[397,546,593,2078,2297,2382,2400],[397,546,593,1479,2782],[546,593,2782],[397,546,593,2297,2382,2400,2785],[397,546,593,2185],[397,546,593,1252,2055,2059,2787],[546,593,2055],[546,593,2791,2792,2794],[397,532,546,593,2790,2793],[397,546,593,1039,2790],[397,546,593,1252,2790],[397,546,593,1252],[397,546,593,1039,1048,2798],[397,546,593,2899],[397,546,593,1039,1048,2901],[397,546,593,651,2919,2920],[397,546,593,1076,2904],[397,546,593,2036],[436,546,593,1236,3326],[397,546,593,651,1039,1048,3259,3325,3326],[397,546,593,1039,1048,3329],[397,546,593,3331,3348],[436,546,593,1236,3351],[436,546,593,1236,3353],[546,593,1039,2030,3353],[397,546,593,3356],[397,546,593,1479],[546,593,1236,3359],[546,593,1236,3359,3361],[546,593,1236,3363],[546,593,3360,3373],[546,593,1039,2030,3359],[546,593,1039,3359],[397,546,593,2297,2382,2400],[436,546,593,1236,3382],[397,546,593,1252,3380],[397,546,593,598,651,1090],[436,546,593,1236,2335,3385],[546,593,3385],[397,546,593,3384,3385,3387],[397,436,437,438,546,593,1237,1238,1240],[397,436,437,438,546,593,1237,1241,1252],[397,437,546,593],[436,437,546,593,1236],[436,546,593,3390],[437,546,593,1039],[397,437,438,532,546,593,1240,1252],[437,438,546,593,1096,1097,1237,1241,1253,1256],[397,546,593,1048,1096,1097,1238,1239,1240,1241,1242,1253,1254,1255],[397,546,593,613],[397,437,546,593,1039,1048,1096,1237],[397,546,593,1076,1240],[397,437,546,593,1039,1048,1097,1237,1238,1239],[397,437,546,593,1238,1239,1240],[397,546,593,2356],[397,546,593,1089,1091,1093],[397,546,593,1093,1094],[397,546,593,1092],[397,546,593,598],[397,546,593,598,651,1076,3440],[397,436,546,593,2025,2030,2031,2032,3441,3442],[397,546,593,3441,3442,3443],[397,546,593,598,609,651,3441],[397,546,593,1076,3394,3395,3396,3397,3398,3444],[397,546,593,1076],[397,546,593,651,1996,1997,3446],[397,546,593,598,651,1479,1997],[397,546,593,1482,2296,2411,3462],[397,546,593,1090,2296,2297,2382,2400,2411],[397,546,593,1090,2297,2382,2400,2411],[397,546,593,2297,2400,3448,3449,3463,3464,3465],[397,546,593,2296,2411,3448,3449,3463,3464],[397,546,593,1039,1048,2349,2789,3467,3468,3469,3470],[397,546,593,1039,1048,2789,3467,3469],[397,546,593,1039,1048,3470,3471],[436,546,593,1236,2789],[546,593,1039,2789],[397,546,593,1039,1048,2789],[397,436,546,593,2025,2030,2031,2032,2789,3471,3472,3473,3474,3475],[397,532,546,593,2750,3474],[397,546,593,1048,2789,2790,2791,2792,2794,3468,3469,3470,3472,3473,3474,3475,3476,3478],[397,546,593,1039,1048,2789,3467,3468,3469,3470,3471,3472,3473],[546,593,1236,2336],[546,593,1039,2028,2029],[546,593,3483,3484,3485,3486,3487],[397,546,593,2030,2055,2059],[179,246,397,532,546,593,1252,2030,3484,3485,3486],[546,593,2030,3483],[397,546,593,2382,3489],[397,546,593,3489,3498],[546,593,2382],[397,546,593,2382,3489,3490,3497],[397,546,593,2382,3490],[546,593,3491,3492,3493,3494,3495,3496],[397,546,593,3497,3498,3499],[2008,2009,2010,2011,2012],[1039,2005,2007],[1039,2004,2007],[1039,2005,2007,2010],[2007],[2004,2007],[2005,2006],[2005],[1039,2004,2005,2006,2007],[1039,2005,2007,2010,2011],[2037],[2049],[1039,2041,2044,2045,2046,2047,2048],[397,2053],[2043,2046],[2041,2044,2045],[2043],[2042,2044],[1039,2043],[2055],[651,1039,2055,2056],[397,2055],[2055,2059],[2059],[397],[397,2030],[2023],[397,532],[2065,2066,2067],[2069],[2069,2073],[2067],[2298],[651],[1039,2300],[1039,2302],[1039],[397,1089],[246,397,532,2298],[246,397,532,2341],[397,1252],[397,651],[1252],[1479],[2030],[651,1479,1995],[277],[1048],[651,2356],[2359],[2336],[397,2362],[2026,2029],[2027,2028,2030],[2029,2030],[2027],[1039,2026,2027,2363],[1039,2027,2029,2364],[2368,2369,2370],[397,1039],[2417,2418,2419,2420],[1039,2382,2411,2413,2415,2417,2418,2419],[2412,2414],[2425,2426],[2418,2419,2422,2423,2424,2427,2428,2429,2430,2431,2432],[397,2418],[397,2424],[397,2427],[397,2428],[2440],[2438,2439,2441],[2414,2417],[2412,2417],[2413,2415,2416],[2435,2438],[2434,2436,2437,2440],[2442],[2413,2415,2417,2434,2436,2438,2440,2441,2443,2444,2445,2446],[2425,2426,2446],[2445],[2412,2414,2416,2425,2426,2435,2437,2439,2442],[1039,2428,2431,2434],[2428,2431,2434,2450],[1039,2453,2454],[2030,2453],[2030,2456],[1039,2459],[1039,2457,2459],[2751,2752,2753],[2755],[2757,2761],[2565],[2763],[2755,2762,2763],[2030,2762],[2078,2382],[2382,2785],[2185],[1252,2059],[2791,2792,2794],[397,532,2790],[1039,2790],[397,1252,2790],[1039,2798],[1039,2901],[2904],[397,2036],[3326],[651,1039,3326],[1039,3329],[397,3331],[3351],[3353],[2030,3353],[3356],[3359],[3359,3361],[3363],[3360,3373],[2030,3359],[2382],[3382],[397,3380],[3385],[3385,3387],[1237,1238,1240,3389],[1237,1241,1252],[437],[397,3390],[397,532,1240],[437,438,1096,1097,1237,1241,1253,1256],[397,1238],[437,1039,1096,1237],[1240],[437,1039,1097,1237,1238,1239],[437,1238,1239,1240,3389],[397,2196,2356],[1093],[3441,3442],[397,651,3441],[397,651,1479],[1482,2411],[2382,2411],[3448,3449,3463,3464],[1039,2789,3468,3469,3470],[1039,2789,3469],[1039,3470,3471],[2789],[1039,2789],[2789,3468,3469,3470,3471,3472,3473,3474,3475],[397,532,3474],[1039,2789,3468,3469,3470,3471,3472,3473],[2028,2029],[3483,3484,3485,3486,3487],[2030,2059],[246,397,532,3485],[397,2382,3489],[3489,3498],[397,2382,3489,3490],[2382,3490],[3491,3492,3493,3494,3495,3496]],"referencedMap":[[3426,1],[3399,2],[3402,3],[3403,3],[3404,3],[3405,3],[3406,3],[3407,3],[3408,3],[3409,3],[3410,3],[3431,4],[3411,3],[3412,3],[3413,3],[3414,3],[3415,3],[3416,3],[3417,3],[3418,3],[3419,3],[3420,3],[3421,3],[3422,3],[3423,3],[3424,3],[3425,5],[3427,6],[3440,7],[3400,8],[3439,9],[3401,10],[3438,11],[3434,12],[3437,13],[3433,14],[3435,15],[3436,16],[3428,17],[3432,18],[3430,19],[3429,20],[3306,21],[3260,22],[3263,23],[3264,23],[3265,23],[3266,23],[3267,23],[3268,23],[3269,23],[3270,23],[3271,23],[3272,23],[3273,23],[3274,23],[3275,23],[3276,23],[3277,23],[3278,23],[3279,23],[3280,23],[3311,24],[3281,23],[3282,23],[3283,23],[3284,23],[3285,23],[3286,23],[3287,23],[3288,23],[3289,23],[3290,23],[3291,23],[3292,23],[3293,23],[3294,23],[3295,23],[3296,23],[3297,23],[3298,23],[3299,23],[3300,23],[3301,23],[3302,23],[3303,23],[3304,23],[3305,5],[3307,25],[3325,26],[3261,8],[3324,27],[3262,28],[3323,11],[3322,29],[3313,30],[3314,31],[3315,32],[3316,33],[3317,34],[3318,35],[3320,36],[3319,37],[3321,38],[3308,39],[3312,18],[3310,40],[3309,41],[3246,42],[3219,43],[3222,44],[3223,44],[3224,44],[3225,44],[3226,44],[3227,44],[3228,44],[3229,44],[3230,44],[3231,44],[3251,45],[3232,44],[3233,44],[3234,44],[3235,44],[3236,44],[3237,44],[3238,44],[3239,44],[3240,44],[3241,44],[3242,44],[3243,44],[3244,44],[3245,5],[3247,46],[3259,47],[3220,8],[3258,48],[3221,49],[3257,11],[3256,50],[3253,51],[3254,52],[3255,53],[3248,54],[3252,18],[3250,55],[3249,56],[3200,57],[3199,58],[3215,59],[3201,60],[3198,61],[3214,62],[3217,63],[3216,8],[3218,64],[2994,5],[3036,5],[3040,65],[3035,66],[3037,67],[3039,67],[3038,67],[3041,5],[3043,68],[3042,69],[2995,5],[2996,5],[2997,5],[2998,5],[2999,5],[3000,5],[3001,5],[3010,70],[3011,5],[3012,8],[3013,5],[3014,5],[3015,5],[3016,5],[3004,8],[3017,8],[3018,5],[3003,71],[3005,72],[3002,5],[3008,73],[3006,71],[3007,72],[3034,74],[3019,5],[3020,72],[3021,5],[3022,5],[3023,8],[3024,5],[3025,5],[3026,5],[3027,5],[3028,5],[3029,5],[3030,75],[3031,5],[3032,5],[3009,5],[3033,5],[2292,76],[2199,77],[2200,77],[2201,78],[2202,78],[2203,78],[2204,77],[2205,77],[2206,78],[2207,78],[2208,77],[2209,77],[2210,78],[2211,78],[2212,77],[2213,78],[2214,78],[2215,78],[2216,78],[2217,77],[2218,77],[2219,77],[2220,78],[2221,78],[2222,78],[2223,77],[2224,78],[2225,77],[2226,78],[2227,78],[2228,78],[2229,78],[2230,78],[2231,78],[2232,77],[2233,78],[2234,77],[2235,78],[2236,77],[2237,77],[2238,78],[2239,77],[2240,78],[2241,77],[2242,78],[2243,77],[2244,78],[2245,77],[2246,77],[2247,77],[2248,78],[2249,78],[2250,78],[2251,77],[2252,78],[2253,78],[2254,77],[2255,77],[2256,78],[2257,77],[2258,78],[2259,78],[2260,78],[2261,78],[2262,77],[2263,78],[2264,78],[2265,78],[2266,77],[2267,78],[2268,78],[2269,78],[2270,77],[2271,77],[2272,77],[2273,77],[2274,77],[2275,77],[2276,77],[2277,77],[2278,77],[2279,77],[2280,77],[2281,78],[2282,78],[2283,77],[2284,77],[2285,78],[2286,78],[2287,78],[2288,77],[2289,77],[2290,79],[2196,8],[2291,80],[2197,81],[2195,82],[2198,8],[2194,83],[2084,84],[2086,85],[2132,86],[2131,87],[2193,88],[2192,89],[2189,90],[2187,91],[2188,92],[2186,93],[2134,94],[2137,95],[2136,95],[2138,96],[2135,95],[2133,97],[2083,8],[2190,98],[2191,99],[2571,100],[2892,101],[2899,102],[2890,103],[2896,104],[2898,105],[2897,106],[2895,107],[2893,108],[2894,109],[2855,110],[2856,111],[2857,110],[2858,108],[2854,105],[2852,105],[2853,105],[2860,112],[2861,108],[2865,108],[2866,108],[2862,108],[2863,112],[2864,108],[2867,112],[2868,108],[2869,108],[2859,105],[2870,108],[2889,113],[2885,108],[2886,108],[2871,108],[2872,108],[2873,108],[2874,108],[2875,108],[2876,108],[2877,108],[2878,108],[2879,108],[2880,108],[2881,108],[2882,108],[2883,108],[2884,108],[2887,105],[2888,105],[2851,114],[2891,8],[2847,8],[2839,115],[2849,8],[2840,8],[2845,8],[2850,116],[2848,8],[2838,117],[2846,118],[2835,119],[2836,8],[2837,120],[2800,8],[2841,121],[2844,122],[2843,123],[2842,124],[2801,8],[2802,8],[2803,8],[2815,8],[2804,8],[2805,8],[2806,8],[2807,8],[2810,8],[2812,8],[2813,8],[2808,8],[2809,8],[2811,8],[2832,125],[2814,8],[2816,8],[2817,8],[2818,8],[2819,8],[2825,8],[2826,8],[2820,8],[2822,8],[2821,8],[2823,8],[2824,8],[2827,8],[2828,8],[2829,8],[2830,8],[2831,8],[2834,8],[2833,121],[2373,8],[2374,8],[2376,126],[2375,8],[2377,127],[2378,128],[2381,129],[2379,8],[2380,130],[2388,131],[2384,132],[2393,133],[2389,134],[2390,8],[2391,134],[2392,135],[2394,8],[2395,8],[2396,136],[2400,137],[2385,138],[2383,135],[2387,139],[2386,140],[2397,8],[2398,8],[2399,141],[3450,8],[3453,142],[3454,143],[3455,134],[3456,134],[3457,144],[3461,145],[3458,146],[3459,147],[3451,148],[3452,149],[3460,150],[3462,151],[442,8],[314,8],[52,8],[303,152],[304,152],[305,8],[306,134],[316,153],[307,8],[308,154],[309,8],[310,8],[311,152],[312,152],[313,152],[315,155],[323,156],[325,8],[322,8],[328,157],[326,8],[324,8],[320,158],[321,159],[327,8],[329,160],[317,8],[319,161],[318,162],[258,8],[261,163],[257,8],[489,8],[259,8],[260,8],[346,164],[331,164],[338,164],[335,164],[348,164],[339,164],[345,164],[330,165],[349,164],[352,166],[343,164],[333,164],[351,164],[336,164],[334,164],[344,164],[340,164],[350,164],[337,164],[347,164],[332,164],[342,164],[341,164],[359,167],[355,168],[354,8],[353,8],[358,169],[397,170],[53,8],[54,8],[55,8],[471,171],[57,172],[477,173],[476,174],[247,175],[248,172],[368,8],[277,8],[278,8],[369,176],[249,8],[370,8],[371,177],[56,8],[251,178],[252,8],[250,179],[253,178],[254,8],[256,180],[268,181],[269,8],[274,182],[270,8],[271,8],[272,8],[273,8],[275,8],[276,183],[282,184],[285,185],[283,8],[284,8],[302,186],[286,8],[287,8],[520,187],[267,188],[265,189],[263,190],[264,191],[266,8],[294,192],[288,8],[297,193],[290,194],[295,195],[293,196],[296,197],[291,198],[292,199],[280,200],[298,201],[281,202],[300,203],[301,204],[289,8],[255,8],[262,205],[299,206],[365,207],[360,8],[366,208],[361,209],[362,210],[363,211],[364,212],[367,213],[383,214],[382,215],[388,216],[380,8],[381,217],[384,214],[385,218],[387,219],[386,220],[389,221],[374,222],[375,223],[378,224],[377,224],[376,223],[379,223],[373,225],[391,226],[390,227],[393,228],[392,229],[394,230],[356,200],[357,231],[279,8],[395,232],[372,233],[396,234],[533,134],[645,235],[646,236],[650,237],[534,8],[540,238],[643,239],[644,240],[535,8],[536,8],[539,241],[537,8],[538,8],[648,8],[649,242],[647,243],[651,244],[440,245],[441,246],[462,247],[463,248],[464,8],[465,249],[466,250],[475,251],[468,252],[472,253],[480,254],[478,134],[479,255],[469,256],[481,8],[483,257],[484,258],[485,259],[474,260],[470,261],[494,262],[482,263],[509,264],[467,265],[510,266],[507,267],[508,134],[532,268],[457,269],[453,270],[455,271],[506,272],[448,273],[496,274],[495,8],[456,275],[503,276],[460,277],[504,8],[505,278],[458,279],[452,280],[459,281],[454,282],[447,8],[500,283],[513,284],[511,134],[443,134],[499,285],[444,159],[445,248],[446,286],[450,287],[449,288],[512,289],[451,290],[488,291],[486,257],[487,292],[497,159],[498,293],[501,294],[516,295],[517,296],[514,297],[515,298],[518,299],[519,300],[521,301],[493,302],[490,303],[491,152],[492,292],[523,304],[522,305],[529,306],[461,134],[525,307],[524,134],[527,308],[526,8],[528,309],[473,310],[502,311],[531,312],[530,134],[2352,313],[2353,314],[2355,315],[2351,316],[2354,317],[2356,318],[2402,8],[2408,319],[2407,320],[2409,8],[2410,321],[2411,322],[2403,323],[2405,8],[2406,324],[2404,323],[2462,8],[2643,325],[2644,326],[2645,8],[2646,8],[2647,327],[2648,8],[2663,328],[2649,326],[2650,8],[2651,329],[2652,330],[2653,8],[2654,8],[2655,330],[2656,327],[2657,331],[2658,8],[2659,332],[2660,8],[2661,333],[2662,334],[2719,335],[2720,336],[2723,337],[2725,338],[2726,339],[2724,329],[2635,340],[2722,341],[2717,342],[2727,100],[2721,8],[2728,8],[2718,343],[2729,344],[2750,345],[2463,8],[2641,100],[2567,346],[2742,347],[2568,100],[2569,100],[2566,100],[2570,134],[2637,348],[2638,8],[2642,349],[2639,100],[2698,8],[2640,350],[2636,8],[2664,351],[2732,352],[2730,100],[2731,100],[2689,353],[2678,354],[2676,355],[2679,356],[2688,357],[2683,358],[2691,359],[2685,360],[2692,361],[2681,357],[2693,359],[2682,362],[2690,363],[2694,359],[2686,364],[2696,365],[2697,8],[2736,366],[2670,367],[2665,8],[2671,8],[2672,8],[2674,368],[2680,369],[2684,370],[2666,371],[2669,372],[2667,373],[2673,374],[2735,8],[2668,329],[2677,100],[2675,375],[2734,376],[2687,377],[2733,378],[2695,379],[2699,380],[2700,381],[2701,382],[2713,383],[2716,384],[2714,385],[2715,386],[2737,8],[2738,387],[2740,388],[2739,389],[2741,8],[2747,390],[2743,391],[2744,391],[2745,391],[2746,391],[2748,8],[2749,392],[2592,100],[2613,100],[2585,100],[2617,100],[2616,100],[2630,8],[2627,8],[2625,100],[2606,393],[2602,394],[2622,393],[2629,8],[2599,100],[2586,395],[2620,393],[2590,395],[2589,395],[2579,393],[2576,396],[2578,393],[2580,100],[2609,100],[2575,100],[2621,395],[2588,395],[2598,100],[2587,100],[2574,100],[2605,393],[2631,397],[2572,398],[2611,8],[2612,100],[2624,399],[2573,395],[2628,399],[2603,399],[2591,395],[2619,8],[2595,8],[2626,394],[2607,8],[2583,400],[2584,395],[2623,401],[2581,402],[2594,393],[2600,100],[2593,100],[2615,100],[2597,395],[2596,100],[2601,393],[2577,100],[2604,100],[2582,100],[2610,8],[2608,395],[2614,8],[3372,403],[3367,404],[3365,134],[3368,404],[3369,404],[3370,404],[3371,134],[3366,8],[3373,405],[2013,8],[2017,406],[2022,407],[2014,134],[2016,408],[2015,8],[2018,409],[2020,410],[2021,411],[2023,412],[1068,413],[1071,414],[1069,8],[1070,8],[1049,8],[1050,415],[1075,416],[1072,134],[1073,417],[1074,413],[1076,418],[398,8],[399,8],[402,419],[403,8],[404,8],[406,8],[405,8],[420,8],[407,8],[408,420],[409,8],[410,8],[411,421],[412,419],[413,8],[415,422],[416,419],[417,423],[418,421],[419,8],[421,424],[426,425],[435,426],[425,427],[400,8],[414,423],[423,428],[424,8],[422,8],[427,429],[432,430],[428,134],[429,134],[430,134],[431,134],[401,8],[433,8],[434,431],[436,432],[1089,433],[1080,434],[1086,8],[1077,8],[1078,435],[1081,436],[1082,134],[1083,437],[1079,438],[1084,439],[1085,440],[1087,441],[1088,8],[1043,442],[1041,443],[1042,444],[1047,445],[1040,446],[1045,447],[1044,448],[1046,449],[1048,450],[2147,451],[2150,452],[2155,453],[2158,454],[2179,455],[2157,456],[2139,8],[2140,457],[2141,458],[2144,8],[2142,8],[2143,8],[2180,459],[2146,451],[2145,8],[2181,460],[2149,452],[2148,8],[2185,461],[2182,462],[2152,463],[2154,464],[2151,465],[2153,466],[2183,467],[2156,451],[2184,468],[2159,469],[2178,470],[2175,471],[2177,472],[2162,473],[2169,474],[2171,475],[2173,476],[2172,477],[2164,478],[2161,471],[2165,8],[2176,479],[2166,480],[2163,8],[2174,8],[2160,8],[2167,481],[2168,8],[2170,482],[1383,483],[1384,484],[1385,483],[1386,483],[1387,483],[1388,483],[1389,483],[1390,484],[1391,483],[1398,485],[1392,483],[1393,483],[1394,484],[1395,483],[1396,483],[1397,483],[1399,486],[1382,487],[1359,488],[1357,8],[1355,8],[1360,489],[1358,490],[1356,8],[1366,491],[1362,492],[1372,493],[1370,494],[1373,495],[1365,496],[1364,497],[1263,498],[1371,499],[1361,500],[1354,501],[1381,502],[1367,503],[1369,504],[1368,497],[1276,483],[1277,483],[1278,483],[1279,483],[1280,483],[1281,505],[1282,484],[1285,483],[1270,483],[1286,506],[1287,484],[1271,483],[1288,483],[1272,483],[1273,483],[1324,8],[1289,483],[1290,483],[1274,483],[1291,483],[1292,507],[1293,483],[1294,483],[1262,483],[1296,508],[1298,508],[1299,508],[1295,483],[1297,508],[1300,508],[1301,483],[1302,483],[1303,484],[1304,484],[1309,483],[1310,483],[1305,483],[1307,483],[1308,483],[1353,509],[1311,483],[1312,483],[1313,483],[1314,510],[1283,484],[1315,483],[1316,483],[1317,483],[1318,511],[1319,483],[1320,483],[1321,483],[1306,483],[1275,483],[1322,484],[1323,483],[1350,483],[1351,483],[1352,483],[1325,512],[1326,484],[1328,483],[1327,484],[1329,483],[1330,483],[1331,483],[1332,483],[1333,483],[1334,483],[1335,484],[1336,484],[1337,513],[1338,483],[1339,512],[1341,484],[1340,484],[1342,484],[1343,484],[1284,484],[1344,483],[1345,483],[1346,483],[1347,483],[1348,484],[1349,484],[1264,8],[1265,514],[1363,515],[1379,516],[1380,517],[1378,518],[1377,8],[1266,519],[1268,520],[1267,8],[1376,521],[1375,522],[1374,523],[1269,515],[1400,484],[1401,483],[1402,484],[1403,483],[1404,483],[1405,483],[1406,483],[1407,484],[1415,524],[1408,484],[1409,483],[1410,483],[1411,484],[1412,483],[1413,483],[1414,483],[1416,525],[1419,526],[1420,527],[1417,484],[1421,528],[1422,483],[1423,529],[1424,483],[1425,530],[1433,531],[1426,532],[1427,533],[1418,534],[1428,535],[1429,483],[1430,483],[1431,483],[1432,484],[1434,536],[1435,537],[1438,538],[1437,539],[1439,483],[1441,483],[1436,540],[1440,539],[1454,541],[1442,542],[1443,543],[1444,537],[1445,544],[1446,545],[1453,546],[1448,546],[1449,546],[1450,547],[1452,546],[1451,548],[1447,542],[1455,549],[3065,550],[3061,60],[3062,60],[3064,551],[3063,5],[3075,552],[3066,60],[3068,553],[3067,5],[3070,554],[3069,8],[3073,555],[3074,556],[3071,557],[3072,557],[3146,18],[3147,558],[3127,559],[3128,8],[3151,560],[3150,561],[3160,562],[3153,563],[3154,8],[3152,564],[3159,18],[3155,565],[3156,565],[3158,566],[3157,565],[3149,5],[3129,5],[3144,567],[3131,568],[3130,5],[3138,569],[3133,570],[3134,570],[3139,5],[3136,5],[3135,570],[3132,5],[3141,5],[3140,570],[3137,570],[3142,5],[3143,571],[3183,5],[3184,8],[3187,572],[3195,573],[3188,8],[3189,8],[3190,8],[3191,8],[3192,8],[3193,8],[3194,8],[3148,574],[3161,575],[3145,576],[3196,577],[3078,578],[3080,579],[3079,5],[3081,578],[3082,578],[3084,580],[3076,5],[3083,5],[3077,8],[3099,61],[3103,581],[3100,5],[3102,5],[3096,582],[3097,8],[3098,5],[3095,583],[3094,5],[3101,584],[3059,585],[3044,5],[3057,586],[3058,5],[3060,587],[3107,588],[3108,589],[3109,5],[3110,590],[3106,591],[3104,5],[3105,5],[3113,592],[3111,8],[3112,5],[3049,8],[3053,8],[3045,8],[3046,8],[3047,8],[3048,8],[3056,593],[3050,594],[3051,5],[3052,595],[3055,8],[3054,5],[3204,8],[3210,5],[3205,5],[3206,5],[3207,5],[3211,5],[3213,596],[3208,5],[3209,5],[3212,5],[3203,597],[3202,5],[3114,5],[3162,598],[3163,599],[3164,8],[3165,600],[3166,8],[3167,8],[3168,8],[3169,5],[3170,598],[3171,5],[3173,601],[3174,602],[3172,5],[3175,8],[3176,8],[3197,603],[3177,8],[3178,5],[3179,8],[3180,598],[3181,8],[3182,8],[2924,604],[2925,605],[2926,8],[2927,8],[2940,606],[2941,607],[2938,608],[2939,609],[2942,610],[2945,611],[2947,612],[2948,613],[2930,614],[2949,8],[2953,615],[2951,616],[2952,8],[2946,8],[2955,617],[2931,618],[2957,619],[2958,620],[2961,621],[2960,622],[2956,623],[2959,624],[2954,625],[2962,626],[2963,627],[2967,628],[2968,629],[2966,630],[2944,631],[2932,8],[2935,632],[2969,633],[2970,634],[2971,634],[2928,8],[2973,635],[2972,634],[2993,636],[2933,8],[2937,637],[2974,638],[2975,8],[2929,8],[2965,639],[2981,640],[2980,641],[2977,8],[2978,642],[2979,8],[2976,643],[2964,644],[2982,645],[2983,646],[2984,611],[2985,611],[2986,647],[2950,8],[2988,648],[2989,649],[2943,8],[2990,8],[2991,650],[2987,8],[2934,651],[2936,625],[2992,604],[3087,652],[3090,8],[3088,653],[3091,8],[3089,654],[3093,655],[3092,8],[3085,5],[3086,8],[3115,8],[3117,5],[3116,656],[3118,657],[3119,658],[3120,656],[3121,656],[3122,659],[3126,660],[3123,656],[3124,659],[3125,8],[3186,661],[3185,8],[2358,8],[2633,662],[2632,8],[1250,663],[1249,664],[1246,665],[1261,666],[1252,667],[1251,665],[1247,8],[1060,668],[1053,669],[1057,670],[1055,671],[1058,672],[1056,673],[1059,674],[1054,8],[1052,675],[1051,676],[590,677],[591,677],[592,678],[593,679],[594,680],[595,681],[541,8],[544,682],[542,8],[543,8],[596,683],[597,684],[598,685],[599,686],[600,687],[601,688],[602,688],[603,689],[604,690],[605,691],[606,692],[547,8],[607,693],[608,694],[609,695],[610,696],[611,697],[612,698],[613,699],[614,700],[615,701],[616,702],[617,703],[618,704],[619,705],[620,705],[621,706],[622,8],[623,707],[625,708],[624,709],[626,710],[627,711],[628,712],[629,713],[630,714],[631,715],[632,716],[546,717],[545,8],[641,718],[633,719],[634,720],[635,721],[636,722],[637,723],[638,724],[548,8],[549,8],[550,8],[589,725],[639,726],[640,727],[2919,728],[2906,729],[2913,730],[2909,731],[2907,732],[2910,733],[2914,734],[2915,730],[2912,735],[2911,736],[2916,737],[2917,738],[2918,739],[2908,740],[2019,741],[1244,8],[1245,8],[1243,742],[1248,743],[1140,744],[1131,8],[1132,8],[1133,8],[1134,8],[1135,8],[1136,8],[1137,8],[1138,8],[1139,8],[2708,745],[2920,8],[551,8],[2382,746],[1995,747],[1846,748],[1847,8],[1848,748],[1849,8],[1850,749],[1851,750],[1852,748],[1853,748],[1854,8],[1855,8],[1856,8],[1857,8],[1858,8],[1859,8],[1860,8],[1861,750],[1862,748],[1863,748],[1864,8],[1865,748],[1866,748],[1872,751],[1867,8],[1873,752],[1868,752],[1869,750],[1870,8],[1871,8],[1897,753],[1874,750],[1888,754],[1875,754],[1876,754],[1877,754],[1887,755],[1878,750],[1879,754],[1880,754],[1881,754],[1882,754],[1883,750],[1884,750],[1885,750],[1886,754],[1889,750],[1890,750],[1891,8],[1892,8],[1894,8],[1893,8],[1895,750],[1896,8],[1898,756],[1845,757],[1835,758],[1832,759],[1840,760],[1838,761],[1834,762],[1833,763],[1842,764],[1841,765],[1844,766],[1843,767],[1483,8],[1486,750],[1487,750],[1488,750],[1489,750],[1490,750],[1491,750],[1492,750],[1494,750],[1493,750],[1495,750],[1496,750],[1497,750],[1498,750],[1610,750],[1499,750],[1500,750],[1501,750],[1502,750],[1611,750],[1612,8],[1613,768],[1614,750],[1615,749],[1616,749],[1618,769],[1619,750],[1620,770],[1621,750],[1623,771],[1624,749],[1625,772],[1503,762],[1504,750],[1505,750],[1506,8],[1508,8],[1507,750],[1509,773],[1510,762],[1511,762],[1512,762],[1513,750],[1514,762],[1515,750],[1516,762],[1517,750],[1519,749],[1520,8],[1521,8],[1522,8],[1523,750],[1524,749],[1525,8],[1526,8],[1527,8],[1528,8],[1529,8],[1530,8],[1531,8],[1532,8],[1533,8],[1534,774],[1535,8],[1536,775],[1537,8],[1538,8],[1539,8],[1540,8],[1541,8],[1542,750],[1548,749],[1543,750],[1544,750],[1545,750],[1546,749],[1547,750],[1549,748],[1550,8],[1551,8],[1552,750],[1626,749],[1553,8],[1627,750],[1628,750],[1629,750],[1554,750],[1630,750],[1555,750],[1632,748],[1631,748],[1633,748],[1634,748],[1635,750],[1636,749],[1637,749],[1638,750],[1556,8],[1640,748],[1639,748],[1557,8],[1558,776],[1559,750],[1560,750],[1561,750],[1562,750],[1564,749],[1563,749],[1565,750],[1566,750],[1567,750],[1518,750],[1641,749],[1642,749],[1643,750],[1644,750],[1647,749],[1645,749],[1646,777],[1648,778],[1651,749],[1649,749],[1650,779],[1652,780],[1653,780],[1654,778],[1655,749],[1656,781],[1657,781],[1658,750],[1659,749],[1660,750],[1661,750],[1662,750],[1663,750],[1664,750],[1568,782],[1665,749],[1666,750],[1667,783],[1668,750],[1669,750],[1670,749],[1671,750],[1672,750],[1673,750],[1674,750],[1675,750],[1676,750],[1677,783],[1678,783],[1679,750],[1680,750],[1681,750],[1682,784],[1683,785],[1684,749],[1685,786],[1686,750],[1687,749],[1688,750],[1689,750],[1690,750],[1691,750],[1692,750],[1693,750],[1485,787],[1569,8],[1570,750],[1571,8],[1572,8],[1573,750],[1574,8],[1575,750],[1694,762],[1696,788],[1695,788],[1697,789],[1698,750],[1699,750],[1700,750],[1701,749],[1617,749],[1576,750],[1703,750],[1702,750],[1704,750],[1705,790],[1706,750],[1707,750],[1708,750],[1709,750],[1710,750],[1711,750],[1577,8],[1578,8],[1579,8],[1580,8],[1581,8],[1712,750],[1713,782],[1582,8],[1583,8],[1584,8],[1585,748],[1714,750],[1715,791],[1716,750],[1717,750],[1718,750],[1719,750],[1720,749],[1721,749],[1722,749],[1723,750],[1724,749],[1725,750],[1726,750],[1586,750],[1727,750],[1728,750],[1729,750],[1587,8],[1588,8],[1589,750],[1590,750],[1591,750],[1592,750],[1593,8],[1594,8],[1730,750],[1731,749],[1595,8],[1596,8],[1732,750],[1597,8],[1734,750],[1733,750],[1735,750],[1736,750],[1737,750],[1738,750],[1598,750],[1599,749],[1739,8],[1600,8],[1601,749],[1602,8],[1603,8],[1604,8],[1740,750],[1741,750],[1745,750],[1746,749],[1747,750],[1748,749],[1749,750],[1605,8],[1742,750],[1743,750],[1744,750],[1750,749],[1751,750],[1752,749],[1753,749],[1756,749],[1754,749],[1755,749],[1757,750],[1758,750],[1759,750],[1760,792],[1761,750],[1762,749],[1763,750],[1764,750],[1765,750],[1606,8],[1607,8],[1766,750],[1767,750],[1768,750],[1769,750],[1608,8],[1609,8],[1770,750],[1771,750],[1772,750],[1773,749],[1774,793],[1775,749],[1776,794],[1777,750],[1778,750],[1779,749],[1780,750],[1781,749],[1782,750],[1783,750],[1784,750],[1785,749],[1786,750],[1788,750],[1787,750],[1789,749],[1790,749],[1791,749],[1792,749],[1793,750],[1794,750],[1795,749],[1796,750],[1797,750],[1798,750],[1799,795],[1800,750],[1801,749],[1802,750],[1803,796],[1804,750],[1805,750],[1806,750],[1622,749],[1807,749],[1808,749],[1809,797],[1810,749],[1811,798],[1812,750],[1813,799],[1814,800],[1815,750],[1816,801],[1817,750],[1818,750],[1819,802],[1820,750],[1821,750],[1822,750],[1823,750],[1824,750],[1825,750],[1826,750],[1827,749],[1828,749],[1829,750],[1830,803],[1831,750],[1836,750],[1484,750],[1837,804],[1899,8],[1900,8],[1901,8],[1902,8],[1908,805],[1903,8],[1904,8],[1905,806],[1906,807],[1907,8],[1909,808],[1910,809],[1911,810],[1912,810],[1913,810],[1914,8],[1915,810],[1916,8],[1917,8],[1918,8],[1919,8],[1920,811],[1933,812],[1921,810],[1922,810],[1923,811],[1924,810],[1925,810],[1926,8],[1927,8],[1928,8],[1929,810],[1930,8],[1931,8],[1932,8],[1934,810],[1935,8],[1937,813],[1938,814],[1939,8],[1940,8],[1941,8],[1936,815],[1942,8],[1943,8],[1944,815],[1945,750],[1946,816],[1947,750],[1948,750],[1949,8],[1950,8],[1951,815],[1952,8],[1969,817],[1953,750],[1956,818],[1955,819],[1954,813],[1957,820],[1958,8],[1959,8],[1960,748],[1961,8],[1962,821],[1963,821],[1964,822],[1965,8],[1966,8],[1967,750],[1968,8],[1970,823],[1971,824],[1972,825],[1973,825],[1974,824],[1975,826],[1976,826],[1977,8],[1978,826],[1979,826],[1992,827],[1980,824],[1981,828],[1982,824],[1983,826],[1984,829],[1988,826],[1989,826],[1990,826],[1991,826],[1985,826],[1986,826],[1987,826],[1993,824],[1994,830],[1482,831],[2326,832],[2327,832],[2328,832],[2334,833],[2329,832],[2330,832],[2331,832],[2332,832],[2333,832],[2317,834],[2316,8],[2335,835],[2323,8],[2319,836],[2310,8],[2309,8],[2311,8],[2312,832],[2313,837],[2325,838],[2314,832],[2315,832],[2320,839],[2321,840],[2322,832],[2318,8],[2324,8],[1101,8],[1220,841],[1224,841],[1223,841],[1221,841],[1222,841],[1225,841],[1104,841],[1116,841],[1105,841],[1118,841],[1120,841],[1114,841],[1113,841],[1115,841],[1119,841],[1121,841],[1106,841],[1117,841],[1107,841],[1109,842],[1110,841],[1111,841],[1112,841],[1128,841],[1127,841],[1228,843],[1122,841],[1124,841],[1123,841],[1125,841],[1126,841],[1227,841],[1226,841],[1129,841],[1211,841],[1210,841],[1141,844],[1142,844],[1144,841],[1188,841],[1209,841],[1145,844],[1189,841],[1186,841],[1190,841],[1146,841],[1147,841],[1148,844],[1191,841],[1185,844],[1143,844],[1192,841],[1149,844],[1193,841],[1173,841],[1150,844],[1151,841],[1152,841],[1183,844],[1155,841],[1154,841],[1194,841],[1195,841],[1196,844],[1157,841],[1159,841],[1160,841],[1166,841],[1167,841],[1161,844],[1197,841],[1184,844],[1162,841],[1163,841],[1198,841],[1164,841],[1156,844],[1199,841],[1182,841],[1200,841],[1165,844],[1168,841],[1169,841],[1187,844],[1201,841],[1202,841],[1181,845],[1158,841],[1203,844],[1204,841],[1205,841],[1206,841],[1207,844],[1170,841],[1208,841],[1174,841],[1171,844],[1172,844],[1153,841],[1175,841],[1178,841],[1176,841],[1177,841],[1130,841],[1218,841],[1212,841],[1213,841],[1215,841],[1216,841],[1214,841],[1219,841],[1217,841],[1103,846],[1236,847],[1234,848],[1235,849],[1233,850],[1232,841],[1231,851],[1100,8],[1102,8],[1098,8],[1229,8],[1230,852],[1108,846],[1099,8],[1457,853],[1062,8],[1061,8],[1067,854],[1063,855],[1066,856],[1065,857],[1064,8],[2618,8],[1474,8],[642,774],[2401,8],[1839,858],[2761,859],[2757,860],[2758,861],[2759,862],[2760,8],[2703,863],[2702,100],[2705,864],[2704,863],[2474,865],[2541,866],[2540,867],[2539,868],[2479,869],[2495,870],[2493,871],[2494,872],[2480,873],[2565,874],[2465,8],[2467,8],[2468,875],[2469,8],[2472,876],[2475,8],[2492,877],[2470,8],[2487,878],[2473,879],[2488,880],[2491,881],[2489,881],[2486,882],[2466,8],[2471,8],[2490,883],[2496,884],[2484,8],[2478,885],[2476,886],[2485,887],[2482,888],[2481,888],[2477,889],[2483,890],[2560,891],[2554,892],[2547,893],[2546,894],[2555,895],[2556,881],[2548,896],[2561,897],[2542,898],[2543,899],[2544,900],[2564,901],[2545,894],[2549,897],[2550,902],[2563,903],[2557,904],[2558,879],[2559,902],[2562,881],[2551,900],[2497,905],[2552,906],[2553,907],[2538,908],[2536,909],[2537,909],[2502,909],[2503,909],[2504,909],[2505,909],[2506,909],[2507,909],[2508,909],[2509,909],[2528,909],[2500,909],[2510,909],[2511,909],[2512,909],[2513,909],[2514,909],[2515,909],[2535,909],[2516,909],[2517,909],[2518,909],[2533,909],[2519,909],[2534,909],[2520,909],[2531,909],[2532,909],[2521,909],[2522,909],[2523,909],[2529,909],[2530,909],[2524,909],[2525,909],[2526,909],[2527,909],[2501,910],[2499,911],[2498,912],[2464,8],[2449,8],[1998,913],[2085,914],[1472,915],[1473,916],[1471,917],[1459,918],[1464,919],[1465,920],[1468,921],[1467,922],[1466,923],[1469,924],[1476,925],[1479,926],[1478,927],[1477,928],[1470,929],[1460,729],[1475,930],[1462,931],[1458,932],[1463,933],[1461,918],[2359,934],[1481,8],[1180,935],[1179,8],[2036,8],[1456,936],[51,8],[246,937],[219,8],[197,938],[195,938],[245,939],[210,940],[209,940],[110,941],[61,942],[217,941],[218,941],[220,943],[221,941],[222,944],[121,945],[223,941],[194,941],[224,941],[225,946],[226,941],[227,940],[228,947],[229,941],[230,941],[231,941],[232,941],[233,940],[234,941],[235,941],[236,941],[237,941],[238,948],[239,941],[240,941],[241,941],[242,941],[243,941],[60,939],[63,944],[64,944],[65,944],[66,944],[67,944],[68,944],[69,944],[70,941],[72,949],[73,944],[71,944],[74,944],[75,944],[76,944],[77,944],[78,944],[79,944],[80,941],[81,944],[82,944],[83,944],[84,944],[85,944],[86,941],[87,944],[88,944],[89,944],[90,944],[91,944],[92,944],[93,941],[95,950],[94,944],[96,944],[97,944],[98,944],[99,944],[100,948],[101,941],[102,941],[116,951],[104,952],[105,944],[106,944],[107,941],[108,944],[109,944],[111,953],[112,944],[113,944],[114,944],[115,944],[117,944],[118,944],[119,944],[120,944],[122,954],[123,944],[124,944],[125,944],[126,941],[127,944],[128,955],[129,955],[130,955],[131,941],[132,944],[133,944],[134,944],[139,944],[135,944],[136,941],[137,944],[138,941],[140,944],[141,944],[142,944],[143,944],[144,944],[145,944],[146,941],[147,944],[148,944],[149,944],[150,944],[151,944],[152,944],[153,944],[154,944],[155,944],[156,944],[157,944],[158,944],[159,944],[160,944],[161,944],[162,944],[163,956],[164,944],[165,944],[166,944],[167,944],[168,944],[169,944],[170,941],[171,941],[172,941],[173,941],[174,941],[175,944],[176,944],[177,944],[178,944],[196,957],[244,941],[181,958],[180,959],[204,960],[203,961],[199,962],[198,961],[200,963],[189,964],[187,965],[202,966],[201,963],[188,8],[190,967],[103,968],[59,969],[58,944],[193,8],[185,970],[186,971],[183,8],[184,972],[182,944],[191,973],[62,974],[211,8],[212,8],[205,8],[208,940],[207,8],[213,8],[214,8],[206,975],[215,8],[216,8],[179,976],[192,977],[2707,978],[2712,979],[2710,8],[2711,8],[2709,980],[2706,8],[2634,981],[720,982],[719,8],[741,8],[659,983],[721,8],[668,8],[658,8],[787,8],[874,8],[824,984],[1030,985],[871,986],[1029,987],[1028,987],[873,8],[722,988],[831,989],[827,990],[1025,986],[995,8],[945,991],[946,992],[947,992],[959,992],[952,993],[951,994],[953,992],[954,992],[958,995],[956,996],[986,997],[983,8],[982,998],[984,992],[998,999],[996,8],[992,1000],[997,8],[991,1001],[960,8],[961,8],[964,8],[962,8],[963,8],[965,8],[966,8],[969,8],[967,8],[968,8],[970,8],[971,8],[664,1002],[939,8],[940,8],[941,8],[942,8],[665,1003],[943,8],[944,8],[973,1004],[696,1005],[972,8],[699,8],[700,1006],[701,1006],[950,1007],[948,1007],[949,8],[656,1005],[695,1008],[993,1009],[663,8],[957,1002],[985,446],[955,1010],[974,1006],[975,1011],[976,1012],[977,1012],[978,1012],[979,1012],[980,1013],[981,1013],[990,1014],[989,8],[987,8],[988,1015],[994,1016],[817,8],[818,1017],[821,984],[822,984],[823,984],[792,1018],[793,1019],[812,984],[727,1020],[816,984],[732,8],[811,1021],[769,1022],[733,1023],[794,8],[795,1024],[815,984],[809,8],[810,1025],[796,1018],[797,1026],[689,8],[814,984],[819,8],[820,1027],[825,8],[826,1028],[690,1029],[798,984],[813,984],[800,8],[801,8],[802,8],[803,8],[804,8],[805,8],[799,8],[806,8],[1027,8],[807,1030],[808,1031],[662,8],[687,8],[718,8],[692,8],[694,8],[780,8],[688,1007],[723,8],[726,8],[788,1032],[775,1033],[828,1034],[715,1035],[706,8],[697,1036],[698,1037],[1034,999],[707,8],[710,1036],[693,8],[708,992],[714,1038],[709,1013],[702,1039],[705,1009],[877,1040],[900,1040],[881,1040],[884,1041],[886,1040],[935,1040],[912,1040],[876,1040],[904,1040],[932,1040],[883,1040],[913,1040],[898,1040],[901,1040],[889,1040],[922,1042],[918,1040],[911,1040],[893,1043],[892,1043],[909,1041],[919,1040],[937,1044],[938,1045],[923,1046],[915,1040],[896,1040],[882,1040],[885,1040],[917,1040],[902,1041],[910,1040],[907,1047],[924,1047],[908,1041],[894,1040],[903,1040],[936,1040],[926,1040],[914,1040],[934,1040],[916,1040],[895,1040],[930,1040],[920,1040],[897,1040],[925,1040],[933,1040],[899,1040],[921,1043],[905,1040],[929,1048],[880,1048],[891,1040],[890,1040],[888,1049],[875,8],[887,1040],[931,1047],[927,1047],[906,1047],[928,1047],[734,1050],[740,1051],[739,1052],[730,1053],[729,8],[738,1054],[737,1054],[736,1054],[1018,1055],[735,1056],[777,8],[728,8],[745,1057],[744,1058],[999,1050],[1001,1050],[1002,1050],[1003,1050],[1004,1050],[1005,1050],[1006,1059],[1011,1050],[1007,1050],[1008,1050],[1017,1050],[1009,1050],[1010,1050],[1012,1050],[1013,1050],[1014,1050],[1015,1050],[1000,1050],[1016,1060],[703,8],[872,1061],[1039,1062],[1019,1063],[1020,1064],[1023,1065],[1021,1064],[716,1066],[717,1067],[1022,1064],[762,8],[667,1068],[864,8],[676,8],[681,1069],[865,1070],[862,8],[766,8],[869,1071],[868,8],[834,8],[863,992],[860,8],[861,1072],[870,1073],[859,8],[858,1013],[677,1013],[661,1074],[832,1075],[866,8],[867,8],[713,1014],[666,8],[683,1009],[763,1076],[686,1077],[685,1078],[682,1079],[833,1080],[767,1081],[674,1082],[835,1083],[679,1084],[678,1085],[675,1086],[712,1087],[653,8],[680,8],[654,8],[655,8],[657,8],[660,1070],[652,8],[704,8],[711,8],[684,1088],[791,1089],[1031,1090],[790,1066],[1032,1091],[1033,1092],[673,1093],[879,1094],[878,1095],[731,1096],[842,1097],[782,1098],[851,1099],[783,1100],[853,1101],[843,1102],[855,1103],[856,1104],[841,8],[849,1105],[770,1106],[845,1107],[844,1107],[830,1108],[829,1108],[854,1109],[774,1110],[772,1111],[773,1111],[784,8],[846,8],[857,1112],[847,8],[852,1113],[779,1114],[850,1115],[848,8],[781,1116],[771,8],[840,1117],[1024,1118],[1026,1119],[1037,8],[776,1120],[743,8],[789,1121],[742,8],[778,1122],[786,1123],[785,1124],[761,8],[669,8],[765,8],[724,8],[836,8],[838,1125],[746,8],[671,446],[1035,1126],[691,1127],[839,1128],[764,1129],[670,1130],[768,1131],[725,1132],[837,1133],[747,1134],[672,1135],[760,1136],[748,8],[759,1137],[754,1138],[755,1139],[758,1034],[757,1140],[753,1139],[756,1140],[749,1034],[750,1034],[751,1034],[752,1141],[1036,1142],[1038,1143],[49,8],[50,8],[9,8],[11,8],[10,8],[2,8],[12,8],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[3,8],[20,8],[4,8],[21,8],[25,8],[22,8],[23,8],[24,8],[26,8],[27,8],[28,8],[5,8],[29,8],[30,8],[31,8],[32,8],[6,8],[36,8],[33,8],[34,8],[35,8],[37,8],[7,8],[38,8],[43,8],[44,8],[39,8],[40,8],[41,8],[42,8],[8,8],[48,8],[45,8],[46,8],[47,8],[1,8],[567,1144],[577,1145],[566,1144],[587,1146],[558,1147],[557,1148],[586,774],[580,1149],[585,1150],[560,1151],[574,1152],[559,1153],[583,1154],[555,1155],[554,774],[584,1156],[556,1157],[561,1158],[562,8],[565,1158],[552,8],[588,1159],[578,1160],[569,1161],[570,1162],[572,1163],[568,1164],[571,1165],[581,774],[563,1166],[564,1167],[573,1168],[553,659],[576,1160],[575,1158],[579,8],[582,1169],[2130,1170],[2105,1171],[2118,1172],[2102,1173],[2119,659],[2128,1174],[2093,1175],[2094,1176],[2092,1148],[2127,774],[2122,1177],[2126,1178],[2096,1179],[2115,1180],[2095,1181],[2125,1182],[2090,1183],[2091,1184],[2097,1185],[2098,8],[2104,1186],[2101,1185],[2088,1187],[2129,1188],[2120,1189],[2108,1190],[2107,1185],[2109,1191],[2112,1192],[2106,1193],[2110,1194],[2123,774],[2099,1195],[2100,1196],[2113,1197],[2089,1198],[2117,1199],[2116,1185],[2103,1196],[2111,1200],[2114,1201],[2121,8],[2087,8],[2124,1202],[3348,1203],[3332,8],[3333,8],[3335,1204],[3336,8],[3334,8],[3337,1204],[3338,1204],[3340,1205],[3339,1204],[3341,1204],[3342,1205],[3343,1204],[3344,8],[3345,1204],[3346,8],[3347,8],[2003,8],[2033,1206],[2034,1207],[2008,1208],[2010,1209],[2011,1210],[2006,1211],[2005,1212],[2007,1213],[2004,1214],[2009,1215],[2012,1216],[2035,134],[2039,1217],[2038,1218],[2040,1219],[439,1220],[1259,1221],[1260,134],[2050,1222],[2052,1223],[2049,1224],[2053,1225],[2054,1226],[2045,1227],[2046,1228],[2044,1229],[2043,1230],[2041,8],[2042,8],[2047,134],[2051,1231],[2048,1232],[2056,1233],[2059,1234],[2060,1235],[2061,1235],[2055,8],[2062,1236],[2063,1237],[2064,134],[2031,1238],[2025,1239],[2032,1240],[2068,1241],[2070,1242],[2071,1225],[2072,1225],[2073,1243],[2074,1244],[2065,8],[2066,8],[2069,8],[2067,8],[2075,1245],[2076,8],[2077,1225],[2078,446],[2079,8],[2080,1219],[2081,1219],[2294,1246],[2295,8],[2024,8],[2296,8],[2297,8],[1091,1247],[1090,8],[2299,1248],[2300,1249],[2301,8],[2302,1250],[2303,1251],[2082,448],[2304,134],[2305,134],[2306,134],[2308,1252],[2336,1253],[2337,134],[2338,1254],[2339,8],[2340,1255],[2342,1256],[2001,1257],[2343,1258],[2345,1259],[2344,134],[2298,1260],[2341,1261],[2293,1262],[2000,134],[2346,8],[2307,1263],[2347,1264],[1480,1265],[2348,134],[2057,8],[2349,8],[2350,1238],[1996,1266],[1999,1267],[1257,1268],[2357,1269],[2360,1270],[1258,8],[2361,1271],[2362,1225],[2363,1225],[2364,1225],[2365,1272],[2027,1273],[2029,1274],[2028,1275],[2026,1276],[2366,1277],[2367,1278],[2371,1279],[2372,1280],[2370,1281],[2369,1281],[2368,8],[2421,1282],[2420,1283],[2422,1225],[2423,1284],[2418,1285],[2424,1225],[2427,1286],[2428,1225],[2433,1287],[2430,1225],[2419,1288],[2429,1289],[2432,1290],[2431,1291],[2441,1292],[2440,1293],[2415,1294],[2413,1295],[2417,1296],[2436,1297],[2438,1298],[2443,1299],[2444,1300],[2434,1300],[2447,1301],[2445,1302],[2446,1303],[2439,8],[2414,8],[2437,8],[2442,8],[2448,1304],[2435,8],[2425,8],[2426,8],[2412,8],[2416,8],[2450,1305],[2451,1306],[2452,8],[2455,1307],[2453,446],[2456,446],[2457,1308],[2454,1309],[2458,1310],[2459,1308],[2460,1311],[2461,1312],[2751,1313],[2752,1313],[2754,1314],[2753,1315],[2756,1316],[2764,1317],[2765,350],[2766,8],[2767,1318],[2755,1319],[2762,1320],[2768,1321],[2763,1322],[2769,8],[2770,134],[2771,134],[2773,1225],[2774,1225],[2775,1225],[2776,1284],[2777,1284],[2778,1225],[2779,446],[2772,8],[2002,1323],[2780,1225],[2781,1324],[2782,8],[2783,1325],[2784,1326],[2786,1327],[2785,1328],[2788,1329],[2058,8],[2787,1330],[2795,1331],[2794,1332],[2792,1333],[2791,1334],[2796,1335],[2797,446],[2799,1336],[2798,446],[2900,1337],[2902,1338],[2901,446],[2903,134],[2921,1339],[2922,1340],[2905,1340],[2904,1218],[2923,1219],[2037,1341],[3328,1342],[3329,1308],[3326,1308],[3327,1343],[3330,1344],[3331,8],[3349,1345],[3350,1225],[3352,1346],[3354,1347],[3351,446],[3353,446],[3355,1348],[3356,134],[3357,1349],[3358,1350],[3360,1351],[3362,1352],[3364,1353],[3374,1354],[3375,1355],[3359,1275],[3363,1356],[3361,1308],[3376,8],[3377,1357],[3378,134],[3383,1358],[3382,446],[3379,8],[3381,1359],[3380,1360],[3386,1361],[3385,8],[3387,1362],[3388,1363],[3384,8],[1254,1364],[1255,1365],[438,1366],[3390,1225],[1237,1367],[3391,1368],[1096,1369],[3392,8],[1097,1369],[1253,1370],[3389,1371],[437,8],[1256,1372],[1239,1373],[1238,1374],[1242,1375],[1240,1376],[1241,1377],[3393,1378],[1092,8],[1094,1379],[1095,1380],[1093,1381],[3398,134],[3397,134],[3395,1382],[3441,1383],[3443,1384],[3444,1385],[3442,1386],[3445,1387],[3394,1388],[3396,134],[1997,8],[3447,1389],[3446,1390],[3463,1391],[3448,134],[3449,1392],[3464,1393],[3466,1394],[3465,1395],[3475,1396],[3472,1397],[3473,1398],[3480,134],[2793,134],[3471,1399],[3469,1400],[3468,1400],[3470,1400],[2789,446],[3478,1332],[2790,1401],[3467,8],[3476,1402],[3477,1403],[3479,1404],[3474,1405],[3482,1406],[2030,1407],[3481,8],[3483,8],[3488,1408],[3486,1238],[3485,1409],[3487,1410],[3484,1411],[3490,1412],[3499,1413],[3489,1414],[3498,1415],[3494,1416],[3493,1416],[3491,1416],[3497,1417],[3492,1416],[3496,1416],[3495,1416],[3500,1418]],"exportedModulesMap":[[3426,1],[3399,2],[3402,3],[3403,3],[3404,3],[3405,3],[3406,3],[3407,3],[3408,3],[3409,3],[3410,3],[3431,4],[3411,3],[3412,3],[3413,3],[3414,3],[3415,3],[3416,3],[3417,3],[3418,3],[3419,3],[3420,3],[3421,3],[3422,3],[3423,3],[3424,3],[3425,5],[3427,6],[3440,7],[3400,8],[3439,9],[3401,10],[3438,11],[3434,12],[3437,13],[3433,14],[3435,15],[3436,16],[3428,17],[3432,18],[3430,19],[3429,20],[3306,21],[3260,22],[3263,23],[3264,23],[3265,23],[3266,23],[3267,23],[3268,23],[3269,23],[3270,23],[3271,23],[3272,23],[3273,23],[3274,23],[3275,23],[3276,23],[3277,23],[3278,23],[3279,23],[3280,23],[3311,24],[3281,23],[3282,23],[3283,23],[3284,23],[3285,23],[3286,23],[3287,23],[3288,23],[3289,23],[3290,23],[3291,23],[3292,23],[3293,23],[3294,23],[3295,23],[3296,23],[3297,23],[3298,23],[3299,23],[3300,23],[3301,23],[3302,23],[3303,23],[3304,23],[3305,5],[3307,25],[3325,26],[3261,8],[3324,27],[3262,28],[3323,11],[3322,29],[3313,30],[3314,31],[3315,32],[3316,33],[3317,34],[3318,35],[3320,36],[3319,37],[3321,38],[3308,39],[3312,18],[3310,40],[3309,41],[3246,42],[3219,43],[3222,44],[3223,44],[3224,44],[3225,44],[3226,44],[3227,44],[3228,44],[3229,44],[3230,44],[3231,44],[3251,45],[3232,44],[3233,44],[3234,44],[3235,44],[3236,44],[3237,44],[3238,44],[3239,44],[3240,44],[3241,44],[3242,44],[3243,44],[3244,44],[3245,5],[3247,46],[3259,47],[3220,8],[3258,48],[3221,49],[3257,11],[3256,50],[3253,51],[3254,52],[3255,53],[3248,54],[3252,18],[3250,55],[3249,56],[3200,57],[3199,58],[3215,59],[3201,60],[3198,61],[3214,62],[3217,63],[3216,8],[3218,64],[2994,5],[3036,5],[3040,65],[3035,66],[3037,67],[3039,67],[3038,67],[3041,5],[3043,68],[3042,69],[2995,5],[2996,5],[2997,5],[2998,5],[2999,5],[3000,5],[3001,5],[3010,70],[3011,5],[3012,8],[3013,5],[3014,5],[3015,5],[3016,5],[3004,8],[3017,8],[3018,5],[3003,71],[3005,72],[3002,5],[3008,73],[3006,71],[3007,72],[3034,74],[3019,5],[3020,72],[3021,5],[3022,5],[3023,8],[3024,5],[3025,5],[3026,5],[3027,5],[3028,5],[3029,5],[3030,75],[3031,5],[3032,5],[3009,5],[3033,5],[2292,76],[2199,77],[2200,77],[2201,78],[2202,78],[2203,78],[2204,77],[2205,77],[2206,78],[2207,78],[2208,77],[2209,77],[2210,78],[2211,78],[2212,77],[2213,78],[2214,78],[2215,78],[2216,78],[2217,77],[2218,77],[2219,77],[2220,78],[2221,78],[2222,78],[2223,77],[2224,78],[2225,77],[2226,78],[2227,78],[2228,78],[2229,78],[2230,78],[2231,78],[2232,77],[2233,78],[2234,77],[2235,78],[2236,77],[2237,77],[2238,78],[2239,77],[2240,78],[2241,77],[2242,78],[2243,77],[2244,78],[2245,77],[2246,77],[2247,77],[2248,78],[2249,78],[2250,78],[2251,77],[2252,78],[2253,78],[2254,77],[2255,77],[2256,78],[2257,77],[2258,78],[2259,78],[2260,78],[2261,78],[2262,77],[2263,78],[2264,78],[2265,78],[2266,77],[2267,78],[2268,78],[2269,78],[2270,77],[2271,77],[2272,77],[2273,77],[2274,77],[2275,77],[2276,77],[2277,77],[2278,77],[2279,77],[2280,77],[2281,78],[2282,78],[2283,77],[2284,77],[2285,78],[2286,78],[2287,78],[2288,77],[2289,77],[2290,79],[2196,8],[2291,80],[2197,81],[2195,82],[2198,8],[2194,83],[2084,84],[2086,85],[2132,86],[2131,87],[2193,88],[2192,89],[2189,90],[2187,91],[2188,92],[2186,93],[2134,94],[2137,95],[2136,95],[2138,96],[2135,95],[2133,97],[2083,8],[2190,98],[2191,99],[2571,100],[2892,101],[2899,102],[2890,103],[2896,104],[2898,105],[2897,106],[2895,107],[2893,108],[2894,109],[2855,110],[2856,111],[2857,110],[2858,108],[2854,105],[2852,105],[2853,105],[2860,112],[2861,108],[2865,108],[2866,108],[2862,108],[2863,112],[2864,108],[2867,112],[2868,108],[2869,108],[2859,105],[2870,108],[2889,113],[2885,108],[2886,108],[2871,108],[2872,108],[2873,108],[2874,108],[2875,108],[2876,108],[2877,108],[2878,108],[2879,108],[2880,108],[2881,108],[2882,108],[2883,108],[2884,108],[2887,105],[2888,105],[2851,114],[2891,8],[2847,8],[2839,115],[2849,8],[2840,8],[2845,8],[2850,116],[2848,8],[2838,117],[2846,118],[2835,119],[2836,8],[2837,120],[2800,8],[2841,121],[2844,122],[2843,123],[2842,124],[2801,8],[2802,8],[2803,8],[2815,8],[2804,8],[2805,8],[2806,8],[2807,8],[2810,8],[2812,8],[2813,8],[2808,8],[2809,8],[2811,8],[2832,125],[2814,8],[2816,8],[2817,8],[2818,8],[2819,8],[2825,8],[2826,8],[2820,8],[2822,8],[2821,8],[2823,8],[2824,8],[2827,8],[2828,8],[2829,8],[2830,8],[2831,8],[2834,8],[2833,121],[2373,8],[2374,8],[2376,126],[2375,8],[2377,127],[2378,128],[2381,129],[2379,8],[2380,130],[2388,131],[2384,132],[2393,133],[2389,134],[2390,8],[2391,134],[2392,135],[2394,8],[2395,8],[2396,136],[2400,137],[2385,138],[2383,135],[2387,139],[2386,140],[2397,8],[2398,8],[2399,141],[3450,8],[3453,142],[3454,143],[3455,134],[3456,134],[3457,144],[3461,145],[3458,146],[3459,147],[3451,148],[3452,149],[3460,150],[3462,151],[442,8],[314,8],[52,8],[303,152],[304,152],[305,8],[306,134],[316,153],[307,8],[308,154],[309,8],[310,8],[311,152],[312,152],[313,152],[315,155],[323,156],[325,8],[322,8],[328,157],[326,8],[324,8],[320,158],[321,159],[327,8],[329,160],[317,8],[319,161],[318,162],[258,8],[261,163],[257,8],[489,8],[259,8],[260,8],[346,164],[331,164],[338,164],[335,164],[348,164],[339,164],[345,164],[330,165],[349,164],[352,166],[343,164],[333,164],[351,164],[336,164],[334,164],[344,164],[340,164],[350,164],[337,164],[347,164],[332,164],[342,164],[341,164],[359,167],[355,168],[354,8],[353,8],[358,169],[397,170],[53,8],[54,8],[55,8],[471,171],[57,172],[477,173],[476,174],[247,175],[248,172],[368,8],[277,8],[278,8],[369,176],[249,8],[370,8],[371,177],[56,8],[251,178],[252,8],[250,179],[253,178],[254,8],[256,180],[268,181],[269,8],[274,182],[270,8],[271,8],[272,8],[273,8],[275,8],[276,183],[282,184],[285,185],[283,8],[284,8],[302,186],[286,8],[287,8],[520,187],[267,188],[265,189],[263,190],[264,191],[266,8],[294,192],[288,8],[297,193],[290,194],[295,195],[293,196],[296,197],[291,198],[292,199],[280,200],[298,201],[281,202],[300,203],[301,204],[289,8],[255,8],[262,205],[299,206],[365,207],[360,8],[366,208],[361,209],[362,210],[363,211],[364,212],[367,213],[383,214],[382,215],[388,216],[380,8],[381,217],[384,214],[385,218],[387,219],[386,220],[389,221],[374,222],[375,223],[378,224],[377,224],[376,223],[379,223],[373,225],[391,226],[390,227],[393,228],[392,229],[394,230],[356,200],[357,231],[279,8],[395,232],[372,233],[396,234],[533,134],[645,235],[646,236],[650,237],[534,8],[540,238],[643,239],[644,240],[535,8],[536,8],[539,241],[537,8],[538,8],[648,8],[649,242],[647,243],[651,244],[440,245],[441,246],[462,247],[463,248],[464,8],[465,249],[466,250],[475,251],[468,252],[472,253],[480,254],[478,134],[479,255],[469,256],[481,8],[483,257],[484,258],[485,259],[474,260],[470,261],[494,262],[482,263],[509,264],[467,265],[510,266],[507,267],[508,134],[532,268],[457,269],[453,270],[455,271],[506,272],[448,273],[496,274],[495,8],[456,275],[503,276],[460,277],[504,8],[505,278],[458,279],[452,280],[459,281],[454,282],[447,8],[500,283],[513,284],[511,134],[443,134],[499,285],[444,159],[445,248],[446,286],[450,287],[449,288],[512,289],[451,290],[488,291],[486,257],[487,292],[497,159],[498,293],[501,294],[516,295],[517,296],[514,297],[515,298],[518,299],[519,300],[521,301],[493,302],[490,303],[491,152],[492,292],[523,304],[522,305],[529,306],[461,134],[525,307],[524,134],[527,308],[526,8],[528,309],[473,310],[502,311],[531,312],[530,134],[2352,313],[2353,314],[2355,315],[2351,316],[2354,317],[2356,318],[2402,8],[2408,319],[2407,320],[2409,8],[2410,321],[2411,322],[2403,323],[2405,8],[2406,324],[2404,323],[2462,8],[2643,325],[2644,326],[2645,8],[2646,8],[2647,327],[2648,8],[2663,328],[2649,326],[2650,8],[2651,329],[2652,330],[2653,8],[2654,8],[2655,330],[2656,327],[2657,331],[2658,8],[2659,332],[2660,8],[2661,333],[2662,334],[2719,335],[2720,336],[2723,337],[2725,338],[2726,339],[2724,329],[2635,340],[2722,341],[2717,342],[2727,100],[2721,8],[2728,8],[2718,343],[2729,344],[2750,345],[2463,8],[2641,100],[2567,346],[2742,347],[2568,100],[2569,100],[2566,100],[2570,134],[2637,348],[2638,8],[2642,349],[2639,100],[2698,8],[2640,350],[2636,8],[2664,351],[2732,352],[2730,100],[2731,100],[2689,353],[2678,354],[2676,355],[2679,356],[2688,357],[2683,358],[2691,359],[2685,360],[2692,361],[2681,357],[2693,359],[2682,362],[2690,363],[2694,359],[2686,364],[2696,365],[2697,8],[2736,366],[2670,367],[2665,8],[2671,8],[2672,8],[2674,368],[2680,369],[2684,370],[2666,371],[2669,372],[2667,373],[2673,374],[2735,8],[2668,329],[2677,100],[2675,375],[2734,376],[2687,377],[2733,378],[2695,379],[2699,380],[2700,381],[2701,382],[2713,383],[2716,384],[2714,385],[2715,386],[2737,8],[2738,387],[2740,388],[2739,389],[2741,8],[2747,390],[2743,391],[2744,391],[2745,391],[2746,391],[2748,8],[2749,392],[2592,100],[2613,100],[2585,100],[2617,100],[2616,100],[2630,8],[2627,8],[2625,100],[2606,393],[2602,394],[2622,393],[2629,8],[2599,100],[2586,395],[2620,393],[2590,395],[2589,395],[2579,393],[2576,396],[2578,393],[2580,100],[2609,100],[2575,100],[2621,395],[2588,395],[2598,100],[2587,100],[2574,100],[2605,393],[2631,397],[2572,398],[2611,8],[2612,100],[2624,399],[2573,395],[2628,399],[2603,399],[2591,395],[2619,8],[2595,8],[2626,394],[2607,8],[2583,400],[2584,395],[2623,401],[2581,402],[2594,393],[2600,100],[2593,100],[2615,100],[2597,395],[2596,100],[2601,393],[2577,100],[2604,100],[2582,100],[2610,8],[2608,395],[2614,8],[3372,403],[3367,404],[3365,134],[3368,404],[3369,404],[3370,404],[3371,134],[3366,8],[3373,405],[2013,8],[2017,406],[2022,407],[2014,134],[2016,408],[2015,8],[2018,409],[2020,410],[2021,411],[2023,412],[1068,413],[1071,414],[1069,8],[1070,8],[1049,8],[1050,415],[1075,416],[1072,134],[1073,417],[1074,413],[1076,418],[398,8],[399,8],[402,419],[403,8],[404,8],[406,8],[405,8],[420,8],[407,8],[408,420],[409,8],[410,8],[411,421],[412,419],[413,8],[415,422],[416,419],[417,423],[418,421],[419,8],[421,424],[426,425],[435,426],[425,427],[400,8],[414,423],[423,428],[424,8],[422,8],[427,429],[432,430],[428,134],[429,134],[430,134],[431,134],[401,8],[433,8],[434,431],[436,432],[1089,433],[1080,434],[1086,8],[1077,8],[1078,435],[1081,436],[1082,134],[1083,437],[1079,438],[1084,439],[1085,440],[1087,441],[1088,8],[1043,442],[1041,443],[1042,444],[1047,445],[1040,446],[1045,447],[1044,448],[1046,449],[1048,450],[2147,451],[2150,452],[2155,453],[2158,454],[2179,455],[2157,456],[2139,8],[2140,457],[2141,458],[2144,8],[2142,8],[2143,8],[2180,459],[2146,451],[2145,8],[2181,460],[2149,452],[2148,8],[2185,461],[2182,462],[2152,463],[2154,464],[2151,465],[2153,466],[2183,467],[2156,451],[2184,468],[2159,469],[2178,470],[2175,471],[2177,472],[2162,473],[2169,474],[2171,475],[2173,476],[2172,477],[2164,478],[2161,471],[2165,8],[2176,479],[2166,480],[2163,8],[2174,8],[2160,8],[2167,481],[2168,8],[2170,482],[1383,483],[1384,484],[1385,483],[1386,483],[1387,483],[1388,483],[1389,483],[1390,484],[1391,483],[1398,485],[1392,483],[1393,483],[1394,484],[1395,483],[1396,483],[1397,483],[1399,486],[1382,487],[1359,488],[1357,8],[1355,8],[1360,489],[1358,490],[1356,8],[1366,491],[1362,492],[1372,493],[1370,494],[1373,495],[1365,496],[1364,497],[1263,498],[1371,499],[1361,500],[1354,501],[1381,502],[1367,503],[1369,504],[1368,497],[1276,483],[1277,483],[1278,483],[1279,483],[1280,483],[1281,505],[1282,484],[1285,483],[1270,483],[1286,506],[1287,484],[1271,483],[1288,483],[1272,483],[1273,483],[1324,8],[1289,483],[1290,483],[1274,483],[1291,483],[1292,507],[1293,483],[1294,483],[1262,483],[1296,508],[1298,508],[1299,508],[1295,483],[1297,508],[1300,508],[1301,483],[1302,483],[1303,484],[1304,484],[1309,483],[1310,483],[1305,483],[1307,483],[1308,483],[1353,509],[1311,483],[1312,483],[1313,483],[1314,510],[1283,484],[1315,483],[1316,483],[1317,483],[1318,511],[1319,483],[1320,483],[1321,483],[1306,483],[1275,483],[1322,484],[1323,483],[1350,483],[1351,483],[1352,483],[1325,512],[1326,484],[1328,483],[1327,484],[1329,483],[1330,483],[1331,483],[1332,483],[1333,483],[1334,483],[1335,484],[1336,484],[1337,513],[1338,483],[1339,512],[1341,484],[1340,484],[1342,484],[1343,484],[1284,484],[1344,483],[1345,483],[1346,483],[1347,483],[1348,484],[1349,484],[1264,8],[1265,514],[1363,515],[1379,516],[1380,517],[1378,518],[1377,8],[1266,519],[1268,520],[1267,8],[1376,521],[1375,522],[1374,523],[1269,515],[1400,484],[1401,483],[1402,484],[1403,483],[1404,483],[1405,483],[1406,483],[1407,484],[1415,524],[1408,484],[1409,483],[1410,483],[1411,484],[1412,483],[1413,483],[1414,483],[1416,525],[1419,526],[1420,527],[1417,484],[1421,528],[1422,483],[1423,529],[1424,483],[1425,530],[1433,531],[1426,532],[1427,533],[1418,534],[1428,535],[1429,483],[1430,483],[1431,483],[1432,484],[1434,536],[1435,537],[1438,538],[1437,539],[1439,483],[1441,483],[1436,540],[1440,539],[1454,541],[1442,542],[1443,543],[1444,537],[1445,544],[1446,545],[1453,546],[1448,546],[1449,546],[1450,547],[1452,546],[1451,548],[1447,542],[1455,549],[3065,550],[3061,60],[3062,60],[3064,551],[3063,5],[3075,552],[3066,60],[3068,553],[3067,5],[3070,554],[3069,8],[3073,555],[3074,556],[3071,557],[3072,557],[3146,18],[3147,558],[3127,559],[3128,8],[3151,560],[3150,561],[3160,562],[3153,563],[3154,8],[3152,564],[3159,18],[3155,565],[3156,565],[3158,566],[3157,565],[3149,5],[3129,5],[3144,567],[3131,568],[3130,5],[3138,569],[3133,570],[3134,570],[3139,5],[3136,5],[3135,570],[3132,5],[3141,5],[3140,570],[3137,570],[3142,5],[3143,571],[3183,5],[3184,8],[3187,572],[3195,573],[3188,8],[3189,8],[3190,8],[3191,8],[3192,8],[3193,8],[3194,8],[3148,574],[3161,575],[3145,576],[3196,577],[3078,578],[3080,579],[3079,5],[3081,578],[3082,578],[3084,580],[3076,5],[3083,5],[3077,8],[3099,61],[3103,581],[3100,5],[3102,5],[3096,582],[3097,8],[3098,5],[3095,583],[3094,5],[3101,584],[3059,585],[3044,5],[3057,586],[3058,5],[3060,587],[3107,588],[3108,589],[3109,5],[3110,590],[3106,591],[3104,5],[3105,5],[3113,592],[3111,8],[3112,5],[3049,8],[3053,8],[3045,8],[3046,8],[3047,8],[3048,8],[3056,593],[3050,594],[3051,5],[3052,595],[3055,8],[3054,5],[3204,8],[3210,5],[3205,5],[3206,5],[3207,5],[3211,5],[3213,596],[3208,5],[3209,5],[3212,5],[3203,597],[3202,5],[3114,5],[3162,598],[3163,599],[3164,8],[3165,600],[3166,8],[3167,8],[3168,8],[3169,5],[3170,598],[3171,5],[3173,601],[3174,602],[3172,5],[3175,8],[3176,8],[3197,603],[3177,8],[3178,5],[3179,8],[3180,598],[3181,8],[3182,8],[2924,604],[2925,605],[2926,8],[2927,8],[2940,606],[2941,607],[2938,608],[2939,609],[2942,610],[2945,611],[2947,612],[2948,613],[2930,614],[2949,8],[2953,615],[2951,616],[2952,8],[2946,8],[2955,617],[2931,618],[2957,619],[2958,620],[2961,621],[2960,622],[2956,623],[2959,624],[2954,625],[2962,626],[2963,627],[2967,628],[2968,629],[2966,630],[2944,631],[2932,8],[2935,632],[2969,633],[2970,634],[2971,634],[2928,8],[2973,635],[2972,634],[2993,636],[2933,8],[2937,637],[2974,638],[2975,8],[2929,8],[2965,639],[2981,640],[2980,641],[2977,8],[2978,642],[2979,8],[2976,643],[2964,644],[2982,645],[2983,646],[2984,611],[2985,611],[2986,647],[2950,8],[2988,648],[2989,649],[2943,8],[2990,8],[2991,650],[2987,8],[2934,651],[2936,625],[2992,604],[3087,652],[3090,8],[3088,653],[3091,8],[3089,654],[3093,655],[3092,8],[3085,5],[3086,8],[3115,8],[3117,5],[3116,656],[3118,657],[3119,658],[3120,656],[3121,656],[3122,659],[3126,660],[3123,656],[3124,659],[3125,8],[3186,661],[3185,8],[2358,8],[2633,662],[2632,8],[1250,663],[1249,664],[1246,665],[1261,666],[1252,667],[1251,665],[1247,8],[1060,668],[1053,669],[1057,670],[1055,671],[1058,672],[1056,673],[1059,674],[1054,8],[1052,675],[1051,676],[590,677],[591,677],[592,678],[593,679],[594,680],[595,681],[541,8],[544,682],[542,8],[543,8],[596,683],[597,684],[598,685],[599,686],[600,687],[601,688],[602,688],[603,689],[604,690],[605,691],[606,692],[547,8],[607,693],[608,694],[609,695],[610,696],[611,697],[612,698],[613,699],[614,700],[615,701],[616,702],[617,703],[618,704],[619,705],[620,705],[621,706],[622,8],[623,707],[625,708],[624,709],[626,710],[627,711],[628,712],[629,713],[630,714],[631,715],[632,716],[546,717],[545,8],[641,718],[633,719],[634,720],[635,721],[636,722],[637,723],[638,724],[548,8],[549,8],[550,8],[589,725],[639,726],[640,727],[2919,728],[2906,729],[2913,730],[2909,731],[2907,732],[2910,733],[2914,734],[2915,730],[2912,735],[2911,736],[2916,737],[2917,738],[2918,739],[2908,740],[2019,741],[1244,8],[1245,8],[1243,742],[1248,743],[1140,744],[1131,8],[1132,8],[1133,8],[1134,8],[1135,8],[1136,8],[1137,8],[1138,8],[1139,8],[2708,745],[2920,8],[551,8],[2382,746],[1995,747],[1846,748],[1847,8],[1848,748],[1849,8],[1850,749],[1851,750],[1852,748],[1853,748],[1854,8],[1855,8],[1856,8],[1857,8],[1858,8],[1859,8],[1860,8],[1861,750],[1862,748],[1863,748],[1864,8],[1865,748],[1866,748],[1872,751],[1867,8],[1873,752],[1868,752],[1869,750],[1870,8],[1871,8],[1897,753],[1874,750],[1888,754],[1875,754],[1876,754],[1877,754],[1887,755],[1878,750],[1879,754],[1880,754],[1881,754],[1882,754],[1883,750],[1884,750],[1885,750],[1886,754],[1889,750],[1890,750],[1891,8],[1892,8],[1894,8],[1893,8],[1895,750],[1896,8],[1898,756],[1845,757],[1835,758],[1832,759],[1840,760],[1838,761],[1834,762],[1833,763],[1842,764],[1841,765],[1844,766],[1843,767],[1483,8],[1486,750],[1487,750],[1488,750],[1489,750],[1490,750],[1491,750],[1492,750],[1494,750],[1493,750],[1495,750],[1496,750],[1497,750],[1498,750],[1610,750],[1499,750],[1500,750],[1501,750],[1502,750],[1611,750],[1612,8],[1613,768],[1614,750],[1615,749],[1616,749],[1618,769],[1619,750],[1620,770],[1621,750],[1623,771],[1624,749],[1625,772],[1503,762],[1504,750],[1505,750],[1506,8],[1508,8],[1507,750],[1509,773],[1510,762],[1511,762],[1512,762],[1513,750],[1514,762],[1515,750],[1516,762],[1517,750],[1519,749],[1520,8],[1521,8],[1522,8],[1523,750],[1524,749],[1525,8],[1526,8],[1527,8],[1528,8],[1529,8],[1530,8],[1531,8],[1532,8],[1533,8],[1534,774],[1535,8],[1536,775],[1537,8],[1538,8],[1539,8],[1540,8],[1541,8],[1542,750],[1548,749],[1543,750],[1544,750],[1545,750],[1546,749],[1547,750],[1549,748],[1550,8],[1551,8],[1552,750],[1626,749],[1553,8],[1627,750],[1628,750],[1629,750],[1554,750],[1630,750],[1555,750],[1632,748],[1631,748],[1633,748],[1634,748],[1635,750],[1636,749],[1637,749],[1638,750],[1556,8],[1640,748],[1639,748],[1557,8],[1558,776],[1559,750],[1560,750],[1561,750],[1562,750],[1564,749],[1563,749],[1565,750],[1566,750],[1567,750],[1518,750],[1641,749],[1642,749],[1643,750],[1644,750],[1647,749],[1645,749],[1646,777],[1648,778],[1651,749],[1649,749],[1650,779],[1652,780],[1653,780],[1654,778],[1655,749],[1656,781],[1657,781],[1658,750],[1659,749],[1660,750],[1661,750],[1662,750],[1663,750],[1664,750],[1568,782],[1665,749],[1666,750],[1667,783],[1668,750],[1669,750],[1670,749],[1671,750],[1672,750],[1673,750],[1674,750],[1675,750],[1676,750],[1677,783],[1678,783],[1679,750],[1680,750],[1681,750],[1682,784],[1683,785],[1684,749],[1685,786],[1686,750],[1687,749],[1688,750],[1689,750],[1690,750],[1691,750],[1692,750],[1693,750],[1485,787],[1569,8],[1570,750],[1571,8],[1572,8],[1573,750],[1574,8],[1575,750],[1694,762],[1696,788],[1695,788],[1697,789],[1698,750],[1699,750],[1700,750],[1701,749],[1617,749],[1576,750],[1703,750],[1702,750],[1704,750],[1705,790],[1706,750],[1707,750],[1708,750],[1709,750],[1710,750],[1711,750],[1577,8],[1578,8],[1579,8],[1580,8],[1581,8],[1712,750],[1713,782],[1582,8],[1583,8],[1584,8],[1585,748],[1714,750],[1715,791],[1716,750],[1717,750],[1718,750],[1719,750],[1720,749],[1721,749],[1722,749],[1723,750],[1724,749],[1725,750],[1726,750],[1586,750],[1727,750],[1728,750],[1729,750],[1587,8],[1588,8],[1589,750],[1590,750],[1591,750],[1592,750],[1593,8],[1594,8],[1730,750],[1731,749],[1595,8],[1596,8],[1732,750],[1597,8],[1734,750],[1733,750],[1735,750],[1736,750],[1737,750],[1738,750],[1598,750],[1599,749],[1739,8],[1600,8],[1601,749],[1602,8],[1603,8],[1604,8],[1740,750],[1741,750],[1745,750],[1746,749],[1747,750],[1748,749],[1749,750],[1605,8],[1742,750],[1743,750],[1744,750],[1750,749],[1751,750],[1752,749],[1753,749],[1756,749],[1754,749],[1755,749],[1757,750],[1758,750],[1759,750],[1760,792],[1761,750],[1762,749],[1763,750],[1764,750],[1765,750],[1606,8],[1607,8],[1766,750],[1767,750],[1768,750],[1769,750],[1608,8],[1609,8],[1770,750],[1771,750],[1772,750],[1773,749],[1774,793],[1775,749],[1776,794],[1777,750],[1778,750],[1779,749],[1780,750],[1781,749],[1782,750],[1783,750],[1784,750],[1785,749],[1786,750],[1788,750],[1787,750],[1789,749],[1790,749],[1791,749],[1792,749],[1793,750],[1794,750],[1795,749],[1796,750],[1797,750],[1798,750],[1799,795],[1800,750],[1801,749],[1802,750],[1803,796],[1804,750],[1805,750],[1806,750],[1622,749],[1807,749],[1808,749],[1809,797],[1810,749],[1811,798],[1812,750],[1813,799],[1814,800],[1815,750],[1816,801],[1817,750],[1818,750],[1819,802],[1820,750],[1821,750],[1822,750],[1823,750],[1824,750],[1825,750],[1826,750],[1827,749],[1828,749],[1829,750],[1830,803],[1831,750],[1836,750],[1484,750],[1837,804],[1899,8],[1900,8],[1901,8],[1902,8],[1908,805],[1903,8],[1904,8],[1905,806],[1906,807],[1907,8],[1909,808],[1910,809],[1911,810],[1912,810],[1913,810],[1914,8],[1915,810],[1916,8],[1917,8],[1918,8],[1919,8],[1920,811],[1933,812],[1921,810],[1922,810],[1923,811],[1924,810],[1925,810],[1926,8],[1927,8],[1928,8],[1929,810],[1930,8],[1931,8],[1932,8],[1934,810],[1935,8],[1937,813],[1938,814],[1939,8],[1940,8],[1941,8],[1936,815],[1942,8],[1943,8],[1944,815],[1945,750],[1946,816],[1947,750],[1948,750],[1949,8],[1950,8],[1951,815],[1952,8],[1969,817],[1953,750],[1956,818],[1955,819],[1954,813],[1957,820],[1958,8],[1959,8],[1960,748],[1961,8],[1962,821],[1963,821],[1964,822],[1965,8],[1966,8],[1967,750],[1968,8],[1970,823],[1971,824],[1972,825],[1973,825],[1974,824],[1975,826],[1976,826],[1977,8],[1978,826],[1979,826],[1992,827],[1980,824],[1981,828],[1982,824],[1983,826],[1984,829],[1988,826],[1989,826],[1990,826],[1991,826],[1985,826],[1986,826],[1987,826],[1993,824],[1994,830],[1482,831],[2326,832],[2327,832],[2328,832],[2334,833],[2329,832],[2330,832],[2331,832],[2332,832],[2333,832],[2317,834],[2316,8],[2335,835],[2323,8],[2319,836],[2310,8],[2309,8],[2311,8],[2312,832],[2313,837],[2325,838],[2314,832],[2315,832],[2320,839],[2321,840],[2322,832],[2318,8],[2324,8],[1101,8],[1220,841],[1224,841],[1223,841],[1221,841],[1222,841],[1225,841],[1104,841],[1116,841],[1105,841],[1118,841],[1120,841],[1114,841],[1113,841],[1115,841],[1119,841],[1121,841],[1106,841],[1117,841],[1107,841],[1109,842],[1110,841],[1111,841],[1112,841],[1128,841],[1127,841],[1228,843],[1122,841],[1124,841],[1123,841],[1125,841],[1126,841],[1227,841],[1226,841],[1129,841],[1211,841],[1210,841],[1141,844],[1142,844],[1144,841],[1188,841],[1209,841],[1145,844],[1189,841],[1186,841],[1190,841],[1146,841],[1147,841],[1148,844],[1191,841],[1185,844],[1143,844],[1192,841],[1149,844],[1193,841],[1173,841],[1150,844],[1151,841],[1152,841],[1183,844],[1155,841],[1154,841],[1194,841],[1195,841],[1196,844],[1157,841],[1159,841],[1160,841],[1166,841],[1167,841],[1161,844],[1197,841],[1184,844],[1162,841],[1163,841],[1198,841],[1164,841],[1156,844],[1199,841],[1182,841],[1200,841],[1165,844],[1168,841],[1169,841],[1187,844],[1201,841],[1202,841],[1181,845],[1158,841],[1203,844],[1204,841],[1205,841],[1206,841],[1207,844],[1170,841],[1208,841],[1174,841],[1171,844],[1172,844],[1153,841],[1175,841],[1178,841],[1176,841],[1177,841],[1130,841],[1218,841],[1212,841],[1213,841],[1215,841],[1216,841],[1214,841],[1219,841],[1217,841],[1103,846],[1236,847],[1234,848],[1235,849],[1233,850],[1232,841],[1231,851],[1100,8],[1102,8],[1098,8],[1229,8],[1230,852],[1108,846],[1099,8],[1457,853],[1062,8],[1061,8],[1067,854],[1063,855],[1066,856],[1065,857],[1064,8],[2618,8],[1474,8],[642,774],[2401,8],[1839,858],[2761,859],[2757,860],[2758,861],[2759,862],[2760,8],[2703,863],[2702,100],[2705,864],[2704,863],[2474,865],[2541,866],[2540,867],[2539,868],[2479,869],[2495,870],[2493,871],[2494,872],[2480,873],[2565,874],[2465,8],[2467,8],[2468,875],[2469,8],[2472,876],[2475,8],[2492,877],[2470,8],[2487,878],[2473,879],[2488,880],[2491,881],[2489,881],[2486,882],[2466,8],[2471,8],[2490,883],[2496,884],[2484,8],[2478,885],[2476,886],[2485,887],[2482,888],[2481,888],[2477,889],[2483,890],[2560,891],[2554,892],[2547,893],[2546,894],[2555,895],[2556,881],[2548,896],[2561,897],[2542,898],[2543,899],[2544,900],[2564,901],[2545,894],[2549,897],[2550,902],[2563,903],[2557,904],[2558,879],[2559,902],[2562,881],[2551,900],[2497,905],[2552,906],[2553,907],[2538,908],[2536,909],[2537,909],[2502,909],[2503,909],[2504,909],[2505,909],[2506,909],[2507,909],[2508,909],[2509,909],[2528,909],[2500,909],[2510,909],[2511,909],[2512,909],[2513,909],[2514,909],[2515,909],[2535,909],[2516,909],[2517,909],[2518,909],[2533,909],[2519,909],[2534,909],[2520,909],[2531,909],[2532,909],[2521,909],[2522,909],[2523,909],[2529,909],[2530,909],[2524,909],[2525,909],[2526,909],[2527,909],[2501,910],[2499,911],[2498,912],[2464,8],[2449,8],[1998,913],[2085,914],[1472,915],[1473,916],[1471,917],[1459,918],[1464,919],[1465,920],[1468,921],[1467,922],[1466,923],[1469,924],[1476,925],[1479,926],[1478,927],[1477,928],[1470,929],[1460,729],[1475,930],[1462,931],[1458,932],[1463,933],[1461,918],[2359,934],[1481,8],[1180,935],[1179,8],[2036,8],[1456,936],[51,8],[246,937],[219,8],[197,938],[195,938],[245,939],[210,940],[209,940],[110,941],[61,942],[217,941],[218,941],[220,943],[221,941],[222,944],[121,945],[223,941],[194,941],[224,941],[225,946],[226,941],[227,940],[228,947],[229,941],[230,941],[231,941],[232,941],[233,940],[234,941],[235,941],[236,941],[237,941],[238,948],[239,941],[240,941],[241,941],[242,941],[243,941],[60,939],[63,944],[64,944],[65,944],[66,944],[67,944],[68,944],[69,944],[70,941],[72,949],[73,944],[71,944],[74,944],[75,944],[76,944],[77,944],[78,944],[79,944],[80,941],[81,944],[82,944],[83,944],[84,944],[85,944],[86,941],[87,944],[88,944],[89,944],[90,944],[91,944],[92,944],[93,941],[95,950],[94,944],[96,944],[97,944],[98,944],[99,944],[100,948],[101,941],[102,941],[116,951],[104,952],[105,944],[106,944],[107,941],[108,944],[109,944],[111,953],[112,944],[113,944],[114,944],[115,944],[117,944],[118,944],[119,944],[120,944],[122,954],[123,944],[124,944],[125,944],[126,941],[127,944],[128,955],[129,955],[130,955],[131,941],[132,944],[133,944],[134,944],[139,944],[135,944],[136,941],[137,944],[138,941],[140,944],[141,944],[142,944],[143,944],[144,944],[145,944],[146,941],[147,944],[148,944],[149,944],[150,944],[151,944],[152,944],[153,944],[154,944],[155,944],[156,944],[157,944],[158,944],[159,944],[160,944],[161,944],[162,944],[163,956],[164,944],[165,944],[166,944],[167,944],[168,944],[169,944],[170,941],[171,941],[172,941],[173,941],[174,941],[175,944],[176,944],[177,944],[178,944],[196,957],[244,941],[181,958],[180,959],[204,960],[203,961],[199,962],[198,961],[200,963],[189,964],[187,965],[202,966],[201,963],[188,8],[190,967],[103,968],[59,969],[58,944],[193,8],[185,970],[186,971],[183,8],[184,972],[182,944],[191,973],[62,974],[211,8],[212,8],[205,8],[208,940],[207,8],[213,8],[214,8],[206,975],[215,8],[216,8],[179,976],[192,977],[2707,978],[2712,979],[2710,8],[2711,8],[2709,980],[2706,8],[2634,981],[720,982],[719,8],[741,8],[659,983],[721,8],[668,8],[658,8],[787,8],[874,8],[824,984],[1030,985],[871,986],[1029,987],[1028,987],[873,8],[722,988],[831,989],[827,990],[1025,986],[995,8],[945,991],[946,992],[947,992],[959,992],[952,993],[951,994],[953,992],[954,992],[958,995],[956,996],[986,997],[983,8],[982,998],[984,992],[998,999],[996,8],[992,1000],[997,8],[991,1001],[960,8],[961,8],[964,8],[962,8],[963,8],[965,8],[966,8],[969,8],[967,8],[968,8],[970,8],[971,8],[664,1002],[939,8],[940,8],[941,8],[942,8],[665,1003],[943,8],[944,8],[973,1004],[696,1005],[972,8],[699,8],[700,1006],[701,1006],[950,1007],[948,1007],[949,8],[656,1005],[695,1008],[993,1009],[663,8],[957,1002],[985,446],[955,1010],[974,1006],[975,1011],[976,1012],[977,1012],[978,1012],[979,1012],[980,1013],[981,1013],[990,1014],[989,8],[987,8],[988,1015],[994,1016],[817,8],[818,1017],[821,984],[822,984],[823,984],[792,1018],[793,1019],[812,984],[727,1020],[816,984],[732,8],[811,1021],[769,1022],[733,1023],[794,8],[795,1024],[815,984],[809,8],[810,1025],[796,1018],[797,1026],[689,8],[814,984],[819,8],[820,1027],[825,8],[826,1028],[690,1029],[798,984],[813,984],[800,8],[801,8],[802,8],[803,8],[804,8],[805,8],[799,8],[806,8],[1027,8],[807,1030],[808,1031],[662,8],[687,8],[718,8],[692,8],[694,8],[780,8],[688,1007],[723,8],[726,8],[788,1032],[775,1033],[828,1034],[715,1035],[706,8],[697,1036],[698,1037],[1034,999],[707,8],[710,1036],[693,8],[708,992],[714,1038],[709,1013],[702,1039],[705,1009],[877,1040],[900,1040],[881,1040],[884,1041],[886,1040],[935,1040],[912,1040],[876,1040],[904,1040],[932,1040],[883,1040],[913,1040],[898,1040],[901,1040],[889,1040],[922,1042],[918,1040],[911,1040],[893,1043],[892,1043],[909,1041],[919,1040],[937,1044],[938,1045],[923,1046],[915,1040],[896,1040],[882,1040],[885,1040],[917,1040],[902,1041],[910,1040],[907,1047],[924,1047],[908,1041],[894,1040],[903,1040],[936,1040],[926,1040],[914,1040],[934,1040],[916,1040],[895,1040],[930,1040],[920,1040],[897,1040],[925,1040],[933,1040],[899,1040],[921,1043],[905,1040],[929,1048],[880,1048],[891,1040],[890,1040],[888,1049],[875,8],[887,1040],[931,1047],[927,1047],[906,1047],[928,1047],[734,1050],[740,1051],[739,1052],[730,1053],[729,8],[738,1054],[737,1054],[736,1054],[1018,1055],[735,1056],[777,8],[728,8],[745,1057],[744,1058],[999,1050],[1001,1050],[1002,1050],[1003,1050],[1004,1050],[1005,1050],[1006,1059],[1011,1050],[1007,1050],[1008,1050],[1017,1050],[1009,1050],[1010,1050],[1012,1050],[1013,1050],[1014,1050],[1015,1050],[1000,1050],[1016,1060],[703,8],[872,1061],[1039,1062],[1019,1063],[1020,1064],[1023,1065],[1021,1064],[716,1066],[717,1067],[1022,1064],[762,8],[667,1068],[864,8],[676,8],[681,1069],[865,1070],[862,8],[766,8],[869,1071],[868,8],[834,8],[863,992],[860,8],[861,1072],[870,1073],[859,8],[858,1013],[677,1013],[661,1074],[832,1075],[866,8],[867,8],[713,1014],[666,8],[683,1009],[763,1076],[686,1077],[685,1078],[682,1079],[833,1080],[767,1081],[674,1082],[835,1083],[679,1084],[678,1085],[675,1086],[712,1087],[653,8],[680,8],[654,8],[655,8],[657,8],[660,1070],[652,8],[704,8],[711,8],[684,1088],[791,1089],[1031,1090],[790,1066],[1032,1091],[1033,1092],[673,1093],[879,1094],[878,1095],[731,1096],[842,1097],[782,1098],[851,1099],[783,1100],[853,1101],[843,1102],[855,1103],[856,1104],[841,8],[849,1105],[770,1106],[845,1107],[844,1107],[830,1108],[829,1108],[854,1109],[774,1110],[772,1111],[773,1111],[784,8],[846,8],[857,1112],[847,8],[852,1113],[779,1114],[850,1115],[848,8],[781,1116],[771,8],[840,1117],[1024,1118],[1026,1119],[1037,8],[776,1120],[743,8],[789,1121],[742,8],[778,1122],[786,1123],[785,1124],[761,8],[669,8],[765,8],[724,8],[836,8],[838,1125],[746,8],[671,446],[1035,1126],[691,1127],[839,1128],[764,1129],[670,1130],[768,1131],[725,1132],[837,1133],[747,1134],[672,1135],[760,1136],[748,8],[759,1137],[754,1138],[755,1139],[758,1034],[757,1140],[753,1139],[756,1140],[749,1034],[750,1034],[751,1034],[752,1141],[1036,1142],[1038,1143],[49,8],[50,8],[9,8],[11,8],[10,8],[2,8],[12,8],[13,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[3,8],[20,8],[4,8],[21,8],[25,8],[22,8],[23,8],[24,8],[26,8],[27,8],[28,8],[5,8],[29,8],[30,8],[31,8],[32,8],[6,8],[36,8],[33,8],[34,8],[35,8],[37,8],[7,8],[38,8],[43,8],[44,8],[39,8],[40,8],[41,8],[42,8],[8,8],[48,8],[45,8],[46,8],[47,8],[1,8],[567,1144],[577,1145],[566,1144],[587,1146],[558,1147],[557,1148],[586,774],[580,1149],[585,1150],[560,1151],[574,1152],[559,1153],[583,1154],[555,1155],[554,774],[584,1156],[556,1157],[561,1158],[562,8],[565,1158],[552,8],[588,1159],[578,1160],[569,1161],[570,1162],[572,1163],[568,1164],[571,1165],[581,774],[563,1166],[564,1167],[573,1168],[553,659],[576,1160],[575,1158],[579,8],[582,1169],[2130,1170],[2105,1171],[2118,1172],[2102,1173],[2119,659],[2128,1174],[2093,1175],[2094,1176],[2092,1148],[2127,774],[2122,1177],[2126,1178],[2096,1179],[2115,1180],[2095,1181],[2125,1182],[2090,1183],[2091,1184],[2097,1185],[2098,8],[2104,1186],[2101,1185],[2088,1187],[2129,1188],[2120,1189],[2108,1190],[2107,1185],[2109,1191],[2112,1192],[2106,1193],[2110,1194],[2123,774],[2099,1195],[2100,1196],[2113,1197],[2089,1198],[2117,1199],[2116,1185],[2103,1196],[2111,1200],[2114,1201],[2121,8],[2087,8],[2124,1202],[3348,1203],[3332,8],[3333,8],[3335,1204],[3336,8],[3334,8],[3337,1204],[3338,1204],[3340,1205],[3339,1204],[3341,1204],[3342,1205],[3343,1204],[3344,8],[3345,1204],[3346,8],[3347,8],[2033,1419],[2008,1420],[2010,1421],[2011,1422],[2006,1423],[2005,1424],[2007,1425],[2004,1426],[2009,1427],[2012,1428],[2038,1429],[2050,1430],[2049,1431],[2054,1432],[2045,1433],[2046,1434],[2044,1435],[2043,1436],[2051,1437],[2048,1435],[2056,1438],[2059,1439],[2060,1440],[2061,1440],[2062,1441],[2063,1442],[2064,1443],[2031,1444],[2025,1445],[2032,1446],[2068,1447],[2070,1448],[2073,1447],[2074,1449],[2075,1450],[2299,1451],[2300,1452],[2302,1453],[2303,1454],[2082,1455],[2304,1443],[2305,1443],[2308,1443],[2337,1443],[2338,1456],[2340,1457],[2342,1458],[2001,1459],[2298,1460],[2341,1460],[2293,1460],[2307,1461],[2347,1462],[1480,1461],[2350,1463],[1996,1464],[1999,1465],[1257,1466],[2357,1467],[2360,1468],[2361,1469],[2365,1470],[2027,1471],[2029,1472],[2028,1473],[2026,1474],[2366,1475],[2367,1476],[2372,1477],[2370,1478],[2369,1478],[2421,1479],[2420,1480],[2418,1481],[2427,1482],[2433,1483],[2419,1484],[2429,1485],[2432,1486],[2431,1487],[2441,1488],[2440,1489],[2415,1490],[2413,1491],[2417,1492],[2436,1493],[2438,1494],[2443,1495],[2447,1496],[2445,1497],[2446,1498],[2448,1499],[2450,1500],[2451,1501],[2455,1502],[2457,1463],[2454,1503],[2458,1504],[2459,1463],[2460,1505],[2461,1506],[2754,1507],[2753,1463],[2756,1508],[2764,1509],[2765,1510],[2767,1443],[2762,1511],[2768,1512],[2763,1513],[2781,1514],[2786,1515],[2785,1516],[2788,1517],[2787,1438],[2795,1518],[2794,1519],[2792,1520],[2791,1521],[2796,1459],[2799,1522],[2902,1523],[2921,1452],[2922,1524],[2905,1524],[2904,1429],[2037,1525],[3328,1526],[3329,1463],[3326,1463],[3327,1527],[3330,1528],[3349,1529],[3352,1530],[3354,1531],[3355,1532],[3356,1443],[3357,1533],[3360,1534],[3362,1535],[3364,1536],[3374,1537],[3375,1538],[3359,1473],[3363,1534],[3361,1463],[3377,1539],[3383,1540],[3381,1541],[3380,1452],[3386,1542],[3387,1542],[3388,1543],[1254,1544],[1255,1545],[438,1546],[1237,1546],[3391,1547],[1096,1546],[1097,1546],[1253,1548],[3389,1549],[1256,1550],[1238,1551],[1242,1552],[1240,1553],[1241,1554],[3393,1555],[1094,1556],[3441,1460],[3443,1557],[3442,1558],[3446,1559],[3463,1560],[3449,1561],[3464,1561],[3465,1562],[3475,1563],[3472,1564],[3473,1565],[2793,1443],[3471,1566],[3469,1566],[3468,1566],[3470,1566],[3478,1519],[2790,1567],[3476,1568],[3477,1569],[3474,1570],[3482,1469],[2030,1571],[3488,1572],[3486,1444],[3485,1573],[3487,1574],[3484,1463],[3490,1575],[3499,1576],[3489,1539],[3498,1577],[3494,1578],[3493,1578],[3491,1578],[3497,1579],[3492,1578],[3496,1578],[3495,1578]],"semanticDiagnosticsPerFile":[3426,3399,3402,3403,3404,3405,3406,3407,3408,3409,3410,3431,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3427,3440,3400,3439,3401,3438,3434,3437,3433,3435,3436,3428,3432,3430,3429,3306,3260,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3311,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3307,3325,3261,3324,3262,3323,3322,3313,3314,3315,3316,3317,3318,3320,3319,3321,3308,3312,3310,3309,3246,3219,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3251,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3247,3259,3220,3258,3221,3257,3256,3253,3254,3255,3248,3252,3250,3249,3200,3199,3215,3201,3198,3214,3217,3216,3218,2994,3036,3040,3035,3037,3039,3038,3041,3043,3042,2995,2996,2997,2998,2999,3000,3001,3010,3011,3012,3013,3014,3015,3016,3004,3017,3018,3003,3005,3002,3008,3006,3007,3034,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3009,3033,2292,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2196,2291,2197,2195,2198,2194,2084,2086,2132,2131,2193,2192,2189,2187,2188,2186,2134,2137,2136,2138,2135,2133,2083,2190,2191,2571,2892,2899,2890,2896,2898,2897,2895,2893,2894,2855,2856,2857,2858,2854,2852,2853,2860,2861,2865,2866,2862,2863,2864,2867,2868,2869,2859,2870,2889,2885,2886,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2887,2888,2851,2891,2847,2839,2849,2840,2845,2850,2848,2838,2846,2835,2836,2837,2800,2841,2844,2843,2842,2801,2802,2803,2815,2804,2805,2806,2807,2810,2812,2813,2808,2809,2811,2832,2814,2816,2817,2818,2819,2825,2826,2820,2822,2821,2823,2824,2827,2828,2829,2830,2831,2834,2833,2373,2374,2376,2375,2377,2378,2381,2379,2380,2388,2384,2393,2389,2390,2391,2392,2394,2395,2396,2400,2385,2383,2387,2386,2397,2398,2399,3450,3453,3454,3455,3456,3457,3461,3458,3459,3451,3452,3460,3462,442,314,52,303,304,305,306,316,307,308,309,310,311,312,313,315,323,325,322,328,326,324,320,321,327,329,317,319,318,258,261,257,489,259,260,346,331,338,335,348,339,345,330,349,352,343,333,351,336,334,344,340,350,337,347,332,342,341,359,355,354,353,358,397,53,54,55,471,57,477,476,247,248,368,277,278,369,249,370,371,56,251,252,250,253,254,256,268,269,274,270,271,272,273,275,276,282,285,283,284,302,286,287,520,267,265,263,264,266,294,288,297,290,295,293,296,291,292,280,298,281,300,301,289,255,262,299,365,360,366,361,362,363,364,367,383,382,388,380,381,384,385,387,386,389,374,375,378,377,376,379,373,391,390,393,392,394,356,357,279,395,372,396,533,645,646,650,534,540,643,644,535,536,539,537,538,648,649,647,651,440,441,462,463,464,465,466,475,468,472,480,478,479,469,481,483,484,485,474,470,494,482,509,467,510,507,508,532,457,453,455,506,448,496,495,456,503,460,504,505,458,452,459,454,447,500,513,511,443,499,444,445,446,450,449,512,451,488,486,487,497,498,501,516,517,514,515,518,519,521,493,490,491,492,523,522,529,461,525,524,527,526,528,473,502,531,530,2352,2353,2355,2351,2354,2356,2402,2408,2407,2409,2410,2411,2403,2405,2406,2404,2462,2643,2644,2645,2646,2647,2648,2663,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2719,2720,2723,2725,2726,2724,2635,2722,2717,2727,2721,2728,2718,2729,2750,2463,2641,2567,2742,2568,2569,2566,2570,2637,2638,2642,2639,2698,2640,2636,2664,2732,2730,2731,2689,2678,2676,2679,2688,2683,2691,2685,2692,2681,2693,2682,2690,2694,2686,2696,2697,2736,2670,2665,2671,2672,2674,2680,2684,2666,2669,2667,2673,2735,2668,2677,2675,2734,2687,2733,2695,2699,2700,2701,2713,2716,2714,2715,2737,2738,2740,2739,2741,2747,2743,2744,2745,2746,2748,2749,2592,2613,2585,2617,2616,2630,2627,2625,2606,2602,2622,2629,2599,2586,2620,2590,2589,2579,2576,2578,2580,2609,2575,2621,2588,2598,2587,2574,2605,2631,2572,2611,2612,2624,2573,2628,2603,2591,2619,2595,2626,2607,2583,2584,2623,2581,2594,2600,2593,2615,2597,2596,2601,2577,2604,2582,2610,2608,2614,3372,3367,3365,3368,3369,3370,3371,3366,3373,2013,2017,2022,2014,2016,2015,2018,2020,2021,2023,1068,1071,1069,1070,1049,1050,1075,1072,1073,1074,1076,398,399,402,403,404,406,405,420,407,408,409,410,411,412,413,415,416,417,418,419,421,426,435,425,400,414,423,424,422,427,432,428,429,430,431,401,433,434,436,1089,1080,1086,1077,1078,1081,1082,1083,1079,1084,1085,1087,1088,1043,1041,1042,1047,1040,1045,1044,1046,1048,2147,2150,2155,2158,2179,2157,2139,2140,2141,2144,2142,2143,2180,2146,2145,2181,2149,2148,2185,2182,2152,2154,2151,2153,2183,2156,2184,2159,2178,2175,2177,2162,2169,2171,2173,2172,2164,2161,2165,2176,2166,2163,2174,2160,2167,2168,2170,1383,1384,1385,1386,1387,1388,1389,1390,1391,1398,1392,1393,1394,1395,1396,1397,1399,1382,1359,1357,1355,1360,1358,1356,1366,1362,1372,1370,1373,1365,1364,1263,1371,1361,1354,1381,1367,1369,1368,1276,1277,1278,1279,1280,1281,1282,1285,1270,1286,1287,1271,1288,1272,1273,1324,1289,1290,1274,1291,1292,1293,1294,1262,1296,1298,1299,1295,1297,1300,1301,1302,1303,1304,1309,1310,1305,1307,1308,1353,1311,1312,1313,1314,1283,1315,1316,1317,1318,1319,1320,1321,1306,1275,1322,1323,1350,1351,1352,1325,1326,1328,1327,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1341,1340,1342,1343,1284,1344,1345,1346,1347,1348,1349,1264,1265,1363,1379,1380,1378,1377,1266,1268,1267,1376,1375,1374,1269,1400,1401,1402,1403,1404,1405,1406,1407,1415,1408,1409,1410,1411,1412,1413,1414,1416,1419,1420,1417,1421,1422,1423,1424,1425,1433,1426,1427,1418,1428,1429,1430,1431,1432,1434,1435,1438,1437,1439,1441,1436,1440,1454,1442,1443,1444,1445,1446,1453,1448,1449,1450,1452,1451,1447,1455,3065,3061,3062,3064,3063,3075,3066,3068,3067,3070,3069,3073,3074,3071,3072,3146,3147,3127,3128,3151,3150,3160,3153,3154,3152,3159,3155,3156,3158,3157,3149,3129,3144,3131,3130,3138,3133,3134,3139,3136,3135,3132,3141,3140,3137,3142,3143,3183,3184,3187,3195,3188,3189,3190,3191,3192,3193,3194,3148,3161,3145,3196,3078,3080,3079,3081,3082,3084,3076,3083,3077,3099,3103,3100,3102,3096,3097,3098,3095,3094,3101,3059,3044,3057,3058,3060,3107,3108,3109,3110,3106,3104,3105,3113,3111,3112,3049,3053,3045,3046,3047,3048,3056,3050,3051,3052,3055,3054,3204,3210,3205,3206,3207,3211,3213,3208,3209,3212,3203,3202,3114,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3173,3174,3172,3175,3176,3197,3177,3178,3179,3180,3181,3182,2924,2925,2926,2927,2940,2941,2938,2939,2942,2945,2947,2948,2930,2949,2953,2951,2952,2946,2955,2931,2957,2958,2961,2960,2956,2959,2954,2962,2963,2967,2968,2966,2944,2932,2935,2969,2970,2971,2928,2973,2972,2993,2933,2937,2974,2975,2929,2965,2981,2980,2977,2978,2979,2976,2964,2982,2983,2984,2985,2986,2950,2988,2989,2943,2990,2991,2987,2934,2936,2992,3087,3090,3088,3091,3089,3093,3092,3085,3086,3115,3117,3116,3118,3119,3120,3121,3122,3126,3123,3124,3125,3186,3185,2358,2633,2632,1250,1249,1246,1261,1252,1251,1247,1060,1053,1057,1055,1058,1056,1059,1054,1052,1051,590,591,592,593,594,595,541,544,542,543,596,597,598,599,600,601,602,603,604,605,606,547,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,625,624,626,627,628,629,630,631,632,546,545,641,633,634,635,636,637,638,548,549,550,589,639,640,2919,2906,2913,2909,2907,2910,2914,2915,2912,2911,2916,2917,2918,2908,2019,1244,1245,1243,1248,1140,1131,1132,1133,1134,1135,1136,1137,1138,1139,2708,2920,551,2382,1995,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1872,1867,1873,1868,1869,1870,1871,1897,1874,1888,1875,1876,1877,1887,1878,1879,1880,1881,1882,1883,1884,1885,1886,1889,1890,1891,1892,1894,1893,1895,1896,1898,1845,1835,1832,1840,1838,1834,1833,1842,1841,1844,1843,1483,1486,1487,1488,1489,1490,1491,1492,1494,1493,1495,1496,1497,1498,1610,1499,1500,1501,1502,1611,1612,1613,1614,1615,1616,1618,1619,1620,1621,1623,1624,1625,1503,1504,1505,1506,1508,1507,1509,1510,1511,1512,1513,1514,1515,1516,1517,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1548,1543,1544,1545,1546,1547,1549,1550,1551,1552,1626,1553,1627,1628,1629,1554,1630,1555,1632,1631,1633,1634,1635,1636,1637,1638,1556,1640,1639,1557,1558,1559,1560,1561,1562,1564,1563,1565,1566,1567,1518,1641,1642,1643,1644,1647,1645,1646,1648,1651,1649,1650,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1568,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1485,1569,1570,1571,1572,1573,1574,1575,1694,1696,1695,1697,1698,1699,1700,1701,1617,1576,1703,1702,1704,1705,1706,1707,1708,1709,1710,1711,1577,1578,1579,1580,1581,1712,1713,1582,1583,1584,1585,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1586,1727,1728,1729,1587,1588,1589,1590,1591,1592,1593,1594,1730,1731,1595,1596,1732,1597,1734,1733,1735,1736,1737,1738,1598,1599,1739,1600,1601,1602,1603,1604,1740,1741,1745,1746,1747,1748,1749,1605,1742,1743,1744,1750,1751,1752,1753,1756,1754,1755,1757,1758,1759,1760,1761,1762,1763,1764,1765,1606,1607,1766,1767,1768,1769,1608,1609,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1788,1787,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1622,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1836,1484,1837,1899,1900,1901,1902,1908,1903,1904,1905,1906,1907,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1933,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1934,1935,1937,1938,1939,1940,1941,1936,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1969,1953,1956,1955,1954,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1992,1980,1981,1982,1983,1984,1988,1989,1990,1991,1985,1986,1987,1993,1994,1482,2326,2327,2328,2334,2329,2330,2331,2332,2333,2317,2316,2335,2323,2319,2310,2309,2311,2312,2313,2325,2314,2315,2320,2321,2322,2318,2324,1101,1220,1224,1223,1221,1222,1225,1104,1116,1105,1118,1120,1114,1113,1115,1119,1121,1106,1117,1107,1109,1110,1111,1112,1128,1127,1228,1122,1124,1123,1125,1126,1227,1226,1129,1211,1210,1141,1142,1144,1188,1209,1145,1189,1186,1190,1146,1147,1148,1191,1185,1143,1192,1149,1193,1173,1150,1151,1152,1183,1155,1154,1194,1195,1196,1157,1159,1160,1166,1167,1161,1197,1184,1162,1163,1198,1164,1156,1199,1182,1200,1165,1168,1169,1187,1201,1202,1181,1158,1203,1204,1205,1206,1207,1170,1208,1174,1171,1172,1153,1175,1178,1176,1177,1130,1218,1212,1213,1215,1216,1214,1219,1217,1103,1236,1234,1235,1233,1232,1231,1100,1102,1098,1229,1230,1108,1099,1457,1062,1061,1067,1063,1066,1065,1064,2618,1474,642,2401,1839,2761,2757,2758,2759,2760,2703,2702,2705,2704,2474,2541,2540,2539,2479,2495,2493,2494,2480,2565,2465,2467,2468,2469,2472,2475,2492,2470,2487,2473,2488,2491,2489,2486,2466,2471,2490,2496,2484,2478,2476,2485,2482,2481,2477,2483,2560,2554,2547,2546,2555,2556,2548,2561,2542,2543,2544,2564,2545,2549,2550,2563,2557,2558,2559,2562,2551,2497,2552,2553,2538,2536,2537,2502,2503,2504,2505,2506,2507,2508,2509,2528,2500,2510,2511,2512,2513,2514,2515,2535,2516,2517,2518,2533,2519,2534,2520,2531,2532,2521,2522,2523,2529,2530,2524,2525,2526,2527,2501,2499,2498,2464,2449,1998,2085,1472,1473,1471,1459,1464,1465,1468,1467,1466,1469,1476,1479,1478,1477,1470,1460,1475,1462,1458,1463,1461,2359,1481,1180,1179,2036,1456,51,246,219,197,195,245,210,209,110,61,217,218,220,221,222,121,223,194,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,60,63,64,65,66,67,68,69,70,72,73,71,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,99,100,101,102,116,104,105,106,107,108,109,111,112,113,114,115,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,139,135,136,137,138,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,196,244,181,180,204,203,199,198,200,189,187,202,201,188,190,103,59,58,193,185,186,183,184,182,191,62,211,212,205,208,207,213,214,206,215,216,179,192,2707,2712,2710,2711,2709,2706,2634,720,719,741,659,721,668,658,787,874,824,1030,871,1029,1028,873,722,831,827,1025,995,945,946,947,959,952,951,953,954,958,956,986,983,982,984,998,996,992,997,991,960,961,964,962,963,965,966,969,967,968,970,971,664,939,940,941,942,665,943,944,973,696,972,699,700,701,950,948,949,656,695,993,663,957,985,955,974,975,976,977,978,979,980,981,990,989,987,988,994,817,818,821,822,823,792,793,812,727,816,732,811,769,733,794,795,815,809,810,796,797,689,814,819,820,825,826,690,798,813,800,801,802,803,804,805,799,806,1027,807,808,662,687,718,692,694,780,688,723,726,788,775,828,715,706,697,698,1034,707,710,693,708,714,709,702,705,877,900,881,884,886,935,912,876,904,932,883,913,898,901,889,922,918,911,893,892,909,919,937,938,923,915,896,882,885,917,902,910,907,924,908,894,903,936,926,914,934,916,895,930,920,897,925,933,899,921,905,929,880,891,890,888,875,887,931,927,906,928,734,740,739,730,729,738,737,736,1018,735,777,728,745,744,999,1001,1002,1003,1004,1005,1006,1011,1007,1008,1017,1009,1010,1012,1013,1014,1015,1000,1016,703,872,1039,1019,1020,1023,1021,716,717,1022,762,667,864,676,681,865,862,766,869,868,834,863,860,861,870,859,858,677,661,832,866,867,713,666,683,763,686,685,682,833,767,674,835,679,678,675,712,653,680,654,655,657,660,652,704,711,684,791,1031,790,1032,1033,673,879,878,731,842,782,851,783,853,843,855,856,841,849,770,845,844,830,829,854,774,772,773,784,846,857,847,852,779,850,848,781,771,840,1024,1026,1037,776,743,789,742,778,786,785,761,669,765,724,836,838,746,671,1035,691,839,764,670,768,725,837,747,672,760,748,759,754,755,758,757,753,756,749,750,751,752,1036,1038,49,50,9,11,10,2,12,13,14,15,16,17,18,19,3,20,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,1,567,577,566,587,558,557,586,580,585,560,574,559,583,555,554,584,556,561,562,565,552,588,578,569,570,572,568,571,581,563,564,573,553,576,575,579,582,2130,2105,2118,2102,2119,2128,2093,2094,2092,2127,2122,2126,2096,2115,2095,2125,2090,2091,2097,2098,2104,2101,2088,2129,2120,2108,2107,2109,2112,2106,2110,2123,2099,2100,2113,2089,2117,2116,2103,2111,2114,2121,2087,2124,3348,3332,3333,3335,3336,3334,3337,3338,3340,3339,3341,3342,3343,3344,3345,3346,3347,2003,2033,2034,2008,2010,2011,2006,2005,2007,2004,2009,2012,2035,2039,2038,2040,439,1259,1260,2050,2052,2049,2053,2054,2045,2046,2044,2043,2041,2042,2047,2051,2048,2056,2059,2060,2061,2055,2062,2063,2064,2031,2025,2032,2068,2070,2071,2072,2073,2074,2065,2066,2069,2067,2075,2076,2077,2078,2079,2080,2081,2294,2295,2024,2296,2297,1091,1090,2299,2300,2301,2302,2303,2082,2304,2305,2306,2308,2336,2337,2338,2339,2340,2342,2001,2343,2345,2344,2298,2341,2293,2000,2346,2307,2347,1480,2348,2057,2349,2350,1996,1999,1257,2357,2360,1258,2361,2362,2363,2364,2365,2027,2029,2028,2026,2366,2367,2371,2372,2370,2369,2368,2421,2420,2422,2423,2418,2424,2427,2428,2433,2430,2419,2429,2432,2431,2441,2440,2415,2413,2417,2436,2438,2443,2444,2434,2447,2445,2446,2439,2414,2437,2442,2448,2435,2425,2426,2412,2416,2450,2451,2452,2455,2453,2456,2457,2454,2458,2459,2460,2461,2751,2752,2754,2753,2756,2764,2765,2766,2767,2755,2762,2768,2763,2769,2770,2771,2773,2774,2775,2776,2777,2778,2779,2772,2002,2780,2781,2782,2783,2784,2786,2785,2788,2058,2787,2795,2794,2792,2791,2796,2797,2799,2798,2900,2902,2901,2903,2921,2922,2905,2904,2923,2037,3328,3329,3326,3327,3330,3331,3349,3350,3352,3354,3351,3353,3355,3356,3357,3358,3360,3362,3364,3374,3375,3359,3363,3361,3376,3377,3378,3383,3382,3379,3381,3380,3386,3385,3387,3388,3384,1254,1255,438,3390,1237,3391,1096,3392,1097,1253,3389,437,1256,1239,1238,1242,1240,1241,3393,1092,1094,1095,1093,3398,3397,3395,3441,3443,3444,3442,3445,3394,3396,1997,3447,3446,3463,3448,3449,3464,3466,3465,3475,3472,3473,3480,2793,3471,3469,3468,3470,2789,3478,2790,3467,3476,3477,3479,3474,3482,2030,3481,3483,3488,3486,3485,3487,3484,3490,3499,3489,3498,3494,3493,3491,3497,3492,3496,3495,3500],"affectedFilesPendingEmit":[2003,2033,2034,2008,2010,2011,2006,2005,2007,2004,2009,2012,2035,2039,2038,2040,439,1259,1260,2050,2052,2049,2053,2054,2045,2046,2044,2043,2041,2042,2047,2051,2048,2056,2059,2060,2061,2055,2062,2063,2064,2031,2025,2032,2068,2070,2071,2072,2073,2074,2065,2066,2069,2067,2075,2076,2077,2078,2079,2080,2081,2294,2295,2024,2296,2297,1091,1090,2299,2300,2301,2302,2303,2082,2304,2305,2306,2308,2336,2337,2338,2339,2340,2342,2001,2343,2345,2344,2298,2341,2293,2000,2346,2307,2347,1480,2348,2057,2349,2350,1996,1999,1257,2357,2360,1258,2361,2362,2363,2364,2365,2027,2029,2028,2026,2366,2367,2371,2372,2370,2369,2368,2421,2420,2422,2423,2418,2424,2427,2428,2433,2430,2419,2429,2432,2431,2441,2440,2415,2413,2417,2436,2438,2443,2444,2434,2447,2445,2446,2439,2414,2437,2442,2448,2435,2425,2426,2412,2416,2450,2451,2452,2455,2453,2456,2457,2454,2458,2459,2460,2461,2751,2752,2754,2753,2756,2764,2765,2766,2767,2755,2762,2768,2763,2769,2770,2771,2773,2774,2775,2776,2777,2778,2779,2772,2002,2780,2781,2782,2783,2784,2786,2785,2788,2058,2787,2795,2794,2792,2791,2796,2797,2799,2798,2900,2902,2901,2903,2921,2922,2905,2904,2923,2037,3328,3329,3326,3327,3330,3331,3349,3350,3352,3354,3351,3353,3355,3356,3357,3358,3360,3362,3364,3374,3375,3359,3363,3361,3376,3377,3378,3383,3382,3379,3381,3380,3386,3385,3387,3388,3384,1254,1255,438,3390,1237,3391,1096,3392,1097,1253,3389,437,1256,1239,1238,1242,1240,1241,3393,1092,1094,1095,1093,3398,3397,3395,3441,3443,3444,3442,3445,3394,3396,1997,3447,3446,3463,3448,3449,3464,3466,3465,3475,3472,3473,3480,2793,3471,3469,3468,3470,2789,3478,2790,3467,3476,3477,3479,3474,3482,2030,3481,3483,3488,3486,3485,3487,3484,3490,3499,3489,3498,3494,3493,3491,3497,3492,3496,3495,3500]},"version":"5.4.5"} \ No newline at end of file