@ignidor/web-search-mcp 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,13 @@
1
1
  # @ignidor/web-search-mcp
2
2
 
3
- **Local, unlimited web-search MCP server with BM25 ranking and Playwright crawling.**
3
+ **Local, unlimited web-search MCP server with BM25 ranking, Playwright crawling, and YouTube transcripts.**
4
4
 
5
5
  - 🔍 **No API keys** - Uses free DuckDuckGo HTML search
6
6
  - 🚀 **No rate limits** - Unlimited searches, 24/7
7
7
  - 🐳 **No Docker** - Direct Playwright integration (optional)
8
8
  - 📊 **Smart ranking** - BM25 + hybrid scoring with freshness
9
9
  - 📄 **Full extraction** - 1000+ words per page (not 200-word snippets)
10
+ - 🎬 **YouTube transcripts** - Fast, robust extraction with yt-dlp
10
11
  - 💰 **100% Free** - Outperforms Brave Search, Tavily, commercial alternatives
11
12
 
12
13
  ---
@@ -18,6 +19,7 @@
18
19
  | `search` | Fast web search with BM25 ranking (DuckDuckGo) |
19
20
  | `crawl_and_extract` | Extract full content from URLs using Playwright |
20
21
  | `search_and_crawl` | Search + extract top results (one-stop research) |
22
+ | `get_youtube_transcript` | Get YouTube video transcript (yt-dlp, 1-5sec) ⭐ NEW |
21
23
  | `capture_screenshot` | Screenshot any webpage (base64 PNG) |
22
24
  | `generate_pdf` | Convert webpage to PDF (base64) |
23
25
  | `extract_structured` | CSS selector-based data extraction |
@@ -100,7 +102,39 @@ npx @ignidor/web-search-mcp
100
102
  - Complete code examples
101
103
  - Common pitfalls
102
104
 
103
- ### 3. Extract Structured Data
105
+ ### 3. Get YouTube Transcript ⭐ NEW
106
+
107
+ ```javascript
108
+ // Fast, reliable transcript extraction (1-5 seconds)
109
+ {
110
+ "name": "get_youtube_transcript",
111
+ "arguments": {
112
+ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
113
+ "language": "en",
114
+ "includeTimestamps": false,
115
+ "includeMetadata": true
116
+ }
117
+ }
118
+ ```
119
+
120
+ **Features:**
121
+ - Works with any video length (1 min or 10 hours - same speed!)
122
+ - Fetches existing captions (no audio processing)
123
+ - Multiple language support (en, es, fr, de, ja, ko, etc.)
124
+ - Optional timestamps: `[00:15] Text here`
125
+ - Metadata: title, duration, word count
126
+ - Uses yt-dlp (gold standard, 85k+ GitHub stars)
127
+
128
+ **Requirements:**
129
+ - Install yt-dlp: `brew install yt-dlp` (macOS) or `pip install yt-dlp`
130
+
131
+ **Supported URL formats:**
132
+ - Full URL: `https://www.youtube.com/watch?v=VIDEO_ID`
133
+ - Short URL: `https://youtu.be/VIDEO_ID`
134
+ - Shorts: `https://www.youtube.com/shorts/VIDEO_ID`
135
+ - Video ID only: `VIDEO_ID`
136
+
137
+ ### 4. Extract Structured Data
104
138
 
105
139
  ```javascript
106
140
  // Scrape product listings, articles, etc.
@@ -118,7 +152,7 @@ npx @ignidor/web-search-mcp
118
152
  }
119
153
  ```
120
154
 
121
- ### 4. Execute JavaScript
155
+ ### 5. Execute JavaScript
122
156
 
123
157
  ```javascript
124
158
  // Great for dynamic content, debugging
@@ -135,7 +169,7 @@ npx @ignidor/web-search-mcp
135
169
  }
136
170
  ```
137
171
 
138
- ### 5. Screenshot
172
+ ### 6. Screenshot
139
173
 
140
174
  ```javascript
141
175
  {
package/dist/index.d.ts CHANGED
@@ -36,4 +36,10 @@ export interface SearchWithFiltersArgs extends SearchArgs {
36
36
  language?: string;
37
37
  region?: string;
38
38
  }
39
+ export interface YouTubeTranscriptArgs {
40
+ url: string;
41
+ language?: string;
42
+ includeTimestamps?: boolean;
43
+ includeMetadata?: boolean;
44
+ }
39
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4BA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACzC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA6BA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACzC,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { BM25Ranker, HybridRanker } from './ranking.js';
8
8
  import { crawlWithPlaywright, captureScreenshot, generatePDF, executeJS, extractStructured, extractRegex } from './playwright-crawler.js';
9
9
  import { isValidQuery, clamp } from './utils/validators.js';
10
10
  import { processBatchWithErrorHandling } from './utils/concurrency.js';
11
+ import { getYouTubeTranscript, formatTranscriptWithTimestamps } from './youtube-transcript.js';
11
12
  // ============================================================================
12
13
  // MCP Server
13
14
  // ============================================================================
@@ -215,6 +216,35 @@ class WebSearchServer {
215
216
  required: ['url'],
216
217
  },
217
218
  },
219
+ {
220
+ name: 'get_youtube_transcript',
221
+ description: '🎬 Get YouTube video transcript using yt-dlp (most robust). Fast, free, no API key. Works with any video length - fetches existing captions in 1-5 seconds regardless of duration.',
222
+ inputSchema: {
223
+ type: 'object',
224
+ properties: {
225
+ url: {
226
+ type: 'string',
227
+ description: 'YouTube video URL or video ID (e.g., https://www.youtube.com/watch?v=dQw4w9WgXcQ or dQw4w9WgXcQ)',
228
+ },
229
+ language: {
230
+ type: 'string',
231
+ description: 'Preferred language code (default: en). Examples: en, es, fr, de, ja, ko',
232
+ default: 'en'
233
+ },
234
+ includeTimestamps: {
235
+ type: 'boolean',
236
+ description: 'Include timestamps with transcript lines (default: false)',
237
+ default: false
238
+ },
239
+ includeMetadata: {
240
+ type: 'boolean',
241
+ description: 'Include video metadata (title, duration) (default: true)',
242
+ default: true
243
+ }
244
+ },
245
+ required: ['url'],
246
+ },
247
+ },
218
248
  ],
219
249
  }));
220
250
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -237,6 +267,8 @@ class WebSearchServer {
237
267
  return await this.handleExecuteJS(args);
238
268
  case 'extract_regex':
239
269
  return await this.handleExtractRegex(args);
270
+ case 'get_youtube_transcript':
271
+ return await this.handleYouTubeTranscript(args);
240
272
  default:
241
273
  throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
242
274
  }
@@ -544,6 +576,86 @@ class WebSearchServer {
544
576
  isError: true,
545
577
  };
546
578
  }
579
+ async handleYouTubeTranscript(args) {
580
+ const { url, language = 'en', includeTimestamps = false, includeMetadata = true } = args;
581
+ console.error(`[MCP] Fetching YouTube transcript: ${url} (lang: ${language})`);
582
+ const result = await getYouTubeTranscript(url, {
583
+ language,
584
+ includeTimestamps,
585
+ includeMetadata,
586
+ tryFallbackLanguages: true
587
+ });
588
+ if (!result.success) {
589
+ let errorMsg = `❌ Failed to get transcript\n\n`;
590
+ errorMsg += `**Error:** ${result.error}\n`;
591
+ if (result.errorCode)
592
+ errorMsg += `**Code:** ${result.errorCode}\n`;
593
+ if (result.videoId)
594
+ errorMsg += `**Video ID:** ${result.videoId}\n`;
595
+ if (result.fetchTimeMs)
596
+ errorMsg += `**Time:** ${result.fetchTimeMs}ms\n`;
597
+ // Add helpful suggestions
598
+ errorMsg += `\n**Suggestions:**\n`;
599
+ if (result.errorCode === 'NO_CAPTIONS') {
600
+ errorMsg += `- Video may not have subtitles enabled\n`;
601
+ errorMsg += `- Try a different language (es, fr, de, ja)\n`;
602
+ errorMsg += `- Check if the video is age-restricted or private\n`;
603
+ }
604
+ else if (result.errorCode === 'YTDLP_NOT_FOUND') {
605
+ errorMsg += `- Install yt-dlp: \`brew install yt-dlp\` (macOS)\n`;
606
+ errorMsg += `- Or: \`pip install yt-dlp\`\n`;
607
+ }
608
+ else if (result.errorCode === 'INVALID_URL') {
609
+ errorMsg += `- Use format: https://www.youtube.com/watch?v=VIDEO_ID\n`;
610
+ errorMsg += `- Or: https://youtu.be/VIDEO_ID\n`;
611
+ errorMsg += `- Or just the 11-character video ID\n`;
612
+ }
613
+ return {
614
+ content: [{ type: 'text', text: errorMsg }],
615
+ isError: true,
616
+ };
617
+ }
618
+ // Format successful output
619
+ let output = `🎬 **YouTube Transcript**\n\n`;
620
+ // Metadata section
621
+ if (result.videoTitle) {
622
+ output += `📺 **Title:** ${result.videoTitle}\n`;
623
+ }
624
+ if (result.videoId) {
625
+ output += `🔗 **Video:** https://youtube.com/watch?v=${result.videoId}\n`;
626
+ }
627
+ if (result.durationFormatted) {
628
+ output += `⏱️ **Duration:** ${result.durationFormatted}\n`;
629
+ }
630
+ if (result.wordCount) {
631
+ output += `📝 **Words:** ${result.wordCount.toLocaleString()}`;
632
+ if (result.charCount)
633
+ output += ` (${result.charCount.toLocaleString()} chars)`;
634
+ output += `\n`;
635
+ }
636
+ if (result.languageUsed) {
637
+ output += `🌍 **Language:** ${result.languageUsed}`;
638
+ if (result.languageUsed !== language) {
639
+ output += ` (fallback from ${language})`;
640
+ }
641
+ output += `\n`;
642
+ }
643
+ if (result.fetchTimeMs) {
644
+ output += `⚡ **Fetched in:** ${result.fetchTimeMs}ms\n`;
645
+ }
646
+ output += `\n---\n\n`;
647
+ // Transcript content
648
+ if (includeTimestamps && result.transcriptLines && result.transcriptLines.length > 0) {
649
+ output += `**📜 Transcript (${result.transcriptLines.length} segments):**\n\n`;
650
+ output += formatTranscriptWithTimestamps(result.transcriptLines);
651
+ }
652
+ else if (result.transcript) {
653
+ output += `**📜 Transcript:**\n\n${result.transcript}`;
654
+ }
655
+ return {
656
+ content: [{ type: 'text', text: output }],
657
+ };
658
+ }
547
659
  // ========================================================================
548
660
  // Run Server
549
661
  // ========================================================================
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,wFAAwF;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAgDvE,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,eAAe;IACX,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,+DAA+D;QAC/D,yCAAyC;QACzC,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mFAAmF;oBAChG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gCAAgC;gCAC7C,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCACxB,WAAW,EAAE,oEAAoE;6BAClF;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,oGAAoG;oBACjH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,8BAA8B;6BAC5C;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;gCAC3B,WAAW,EAAE,mCAAmC;6BACjD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EAAE,2EAA2E;oBACxF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oDAAoD;gCACjE,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;4BACD,kBAAkB,EAAE;gCAClB,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,yDAAyD;6BACvE;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,2EAA2E;oBACxF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mBAAmB;6BACjC;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;gCAC5D,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,yDAAyD;oBACtE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uBAAuB;6BACrC;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,oGAAoG;oBACjH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,eAAe;6BAC7B;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,iEAAiE;6BAC/E;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;wCAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qCAC9B;oCACD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;iCACvC;gCACD,WAAW,EAAE,sEAAsE;6BACpF;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;qBAC5C;iBACF;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,oFAAoF;oBACjG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sBAAsB;6BACpC;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,8FAA8F;6BAC5G;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;qBAC7B;iBACF;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,2GAA2G;oBACxH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC;iCAC9P;gCACD,WAAW,EAAE,8BAA8B;6BAC5C;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8CAA8C;6BAC5D;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;aACF;SACF,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC;gBACH,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,QAAQ;wBACX,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAA6B,CAAC,CAAC;oBAEhE,KAAK,mBAAmB;wBACtB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAA4B,CAAC,CAAC;oBAExE,KAAK,kBAAkB;wBACrB,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAqC,CAAC,CAAC;oBAEhF,KAAK,oBAAoB;wBACvB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAoD,CAAC,CAAC;oBAElG,KAAK,cAAc;wBACjB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAkC,CAAC,CAAC;oBAE1E,KAAK,oBAAoB;wBACvB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAA6I,CAAC,CAAC;oBAE3L,KAAK,YAAY;wBACf,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAqD,CAAC,CAAC;oBAE3F,KAAK,eAAe;wBAClB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAgG,CAAC,CAAC;oBAEzI;wBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,QAAQ;oBAAE,MAAM,KAAK,CAAC;gBAE3C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBACzE;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,gBAAgB;IAChB,2EAA2E;IAEnE,KAAK,CAAC,YAAY,CAAC,IAAgB;QACzC,iBAAiB;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,KAAM,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;QAE/C,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,aAAa,KAAK,cAAc,WAAW,GAAG,CAAC,CAAC;QAExF,iBAAiB;QACjB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,2BAA2B;qBAChE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,eAAe;QACf,IAAI,aAAa,CAAC;QAClB,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAClC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,aAAa,CAAC,MAAM,iBAAiB,KAAK,UAAU,QAAQ,CAAC,QAAQ,QAAQ,SAAS,EAAE;iBACxG;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,IAAe;QACjD,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAEtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,iBAAiB,YAAY,oBAAoB,CAAC,CAAC;QAEhG,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,IAAI,EACJ,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAC7D,CAAC,CACF,CAAC;QAEF,iBAAiB;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YAElC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,EAAE,CAAC;gBACf,MAAM,IAAI,gBAAgB,MAAM,CAAC,SAAS,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC;gBACxF,IAAI,MAAM,CAAC,KAAK;oBAAE,MAAM,IAAI,YAAY,MAAM,CAAC,KAAK,IAAI,CAAC;gBACzD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACnG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,eAAe,MAAM,EAAE,KAAK,IAAI,eAAe,IAAI,CAAC;YAChE,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,iBAAiB,YAAY,IAAI,IAAI,CAAC,MAAM,cAAc,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO,GAAG,MAAM;iBACvB;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAwB;QACzD,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEnE,iBAAiB;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,KAAM,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvC,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,qBAAqB,IAAI,GAAG,CAAC,CAAC;QAE3E,iBAAiB;QACjB,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,GAAG;qBACxC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5E,sDAAsD;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEjD,MAAM,YAAY,GAAG,MAAM,6BAA6B,CACtD,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACrD,CAAC,CACF,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC9D,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,kBAAkB,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/D,aAAa,GAAG,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAChF,CAAC;QAED,gBAAgB;QAChB,IAAI,MAAM,GAAG,0BAA0B,KAAK,OAAO,CAAC;QAEpD,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,IAAI,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;YAC3C,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,IAAI,CAAC;YAC7E,MAAM,IAAI,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC;YAElC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,mBAAmB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,gBAAgB,CAAC;gBAC7E,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI;oBAAE,MAAM,IAAI,OAAO,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC;YAC1C,CAAC;YACD,MAAM,IAAI,WAAW,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAuC;QAC3E,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,MAAM,CAAC,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;qBACxI;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM,CAAC,MAAM;wBACnB,QAAQ,EAAE,WAAW;qBACtB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE;iBAC7F;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAqB;QACnD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,MAAM,CAAC,MAAM,CAAC,MAAM,yDAAyD;qBACxH;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE;iBAC1F;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAgI;QACpK,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAa,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU;qBAC9G;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,mBAAmB,EAAE;iBACxD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAwC;QACpE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,UAAU,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CACzE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,MAAM,EAAE;qBACzD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,kBAAkB,EAAE;iBACvD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAmF;QAClH,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,GAAG,iCAAiC,CAAC;YAE/C,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,OAAO,OAAO,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACzF,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC1D,MAAM,IAAI,aAAa,OAAO,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC;gBACtD,CAAC;gBACD,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;qBACpB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,mBAAmB,EAAE;iBACxD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,aAAa;IACb,2EAA2E;IAE3E,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;CACF;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,wFAAwF;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,YAAY,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAuD/F,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,MAAM,eAAe;IACX,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,+DAA+D;QAC/D,yCAAyC;QACzC,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mFAAmF;oBAChG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gCAAgC;gCAC7C,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCACxB,WAAW,EAAE,oEAAoE;6BAClF;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,oGAAoG;oBACjH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,8BAA8B;6BAC5C;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;gCAC3B,WAAW,EAAE,mCAAmC;6BACjD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EAAE,2EAA2E;oBACxF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oDAAoD;gCACjE,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;4BACD,kBAAkB,EAAE;gCAClB,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,yDAAyD;6BACvE;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,2EAA2E;oBACxF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mBAAmB;6BACjC;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;gCAC5D,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,EAAE;6BACZ;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,yDAAyD;oBACtE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uBAAuB;6BACrC;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,oGAAoG;oBACjH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,eAAe;6BAC7B;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,iEAAiE;6BAC/E;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;wCAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qCAC9B;oCACD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC;iCACvC;gCACD,WAAW,EAAE,sEAAsE;6BACpF;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;qBAC5C;iBACF;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,oFAAoF;oBACjG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sBAAsB;6BACpC;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,8FAA8F;6BAC5G;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;qBAC7B;iBACF;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,2GAA2G;oBACxH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC;iCAC9P;gCACD,WAAW,EAAE,8BAA8B;6BAC5C;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8CAA8C;6BAC5D;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD;oBACE,IAAI,EAAE,wBAAwB;oBAC9B,WAAW,EAAE,oLAAoL;oBACjM,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,kGAAkG;6BAChH;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yEAAyE;gCACtF,OAAO,EAAE,IAAI;6BACd;4BACD,iBAAiB,EAAE;gCACjB,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,2DAA2D;gCACxE,OAAO,EAAE,KAAK;6BACf;4BACD,eAAe,EAAE;gCACf,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,0DAA0D;gCACvE,OAAO,EAAE,IAAI;6BACd;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;aACF;SACF,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC;gBACH,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,QAAQ;wBACX,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAA6B,CAAC,CAAC;oBAEhE,KAAK,mBAAmB;wBACtB,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAA4B,CAAC,CAAC;oBAExE,KAAK,kBAAkB;wBACrB,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAqC,CAAC,CAAC;oBAEhF,KAAK,oBAAoB;wBACvB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAoD,CAAC,CAAC;oBAElG,KAAK,cAAc;wBACjB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAkC,CAAC,CAAC;oBAE1E,KAAK,oBAAoB;wBACvB,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAA6I,CAAC,CAAC;oBAE3L,KAAK,YAAY;wBACf,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,IAAqD,CAAC,CAAC;oBAE3F,KAAK,eAAe;wBAClB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAgG,CAAC,CAAC;oBAEzI,KAAK,wBAAwB;wBAC3B,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAwC,CAAC,CAAC;oBAEtF;wBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,QAAQ;oBAAE,MAAM,KAAK,CAAC;gBAE3C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBACzE;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,gBAAgB;IAChB,2EAA2E;IAEnE,KAAK,CAAC,YAAY,CAAC,IAAgB;QACzC,iBAAiB;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,KAAM,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;QAE/C,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,aAAa,KAAK,cAAc,WAAW,GAAG,CAAC,CAAC;QAExF,iBAAiB;QACjB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,2BAA2B;qBAChE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,eAAe;QACf,IAAI,aAAa,CAAC;QAClB,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAClC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,IAAI,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,aAAa,CAAC,MAAM,iBAAiB,KAAK,UAAU,QAAQ,CAAC,QAAQ,QAAQ,SAAS,EAAE;iBACxG;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,IAAe;QACjD,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAEtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,iBAAiB,YAAY,oBAAoB,CAAC,CAAC;QAEhG,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,IAAI,EACJ,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAC7D,CAAC,CACF,CAAC;QAEF,iBAAiB;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YAElC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,EAAE,CAAC;gBACf,MAAM,IAAI,gBAAgB,MAAM,CAAC,SAAS,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC;gBACxF,IAAI,MAAM,CAAC,KAAK;oBAAE,MAAM,IAAI,YAAY,MAAM,CAAC,KAAK,IAAI,CAAC;gBACzD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACnG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,eAAe,MAAM,EAAE,KAAK,IAAI,eAAe,IAAI,CAAC;YAChE,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,iBAAiB,YAAY,IAAI,IAAI,CAAC,MAAM,cAAc,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO,GAAG,MAAM;iBACvB;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAwB;QACzD,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEnE,iBAAiB;QACjB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,KAAM,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvC,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,qBAAqB,IAAI,GAAG,CAAC,CAAC;QAE3E,iBAAiB;QACjB,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,KAAK,GAAG;qBACxC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5E,sDAAsD;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEjD,MAAM,YAAY,GAAG,MAAM,6BAA6B,CACtD,OAAO,EACP,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACrD,CAAC,CACF,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC9D,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,kBAAkB,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/D,aAAa,GAAG,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAChF,CAAC;QAED,gBAAgB;QAChB,IAAI,MAAM,GAAG,0BAA0B,KAAK,OAAO,CAAC;QAEpD,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,IAAI,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;YAC3C,MAAM,IAAI,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,QAAQ,IAAI,CAAC;YAC7E,MAAM,IAAI,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC;YAElC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,mBAAmB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,gBAAgB,CAAC;gBAC7E,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI;oBAAE,MAAM,IAAI,OAAO,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC;YAC1C,CAAC;YACD,MAAM,IAAI,WAAW,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAuC;QAC3E,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,MAAM,CAAC,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;qBACxI;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM,CAAC,MAAM;wBACnB,QAAQ,EAAE,WAAW;qBACtB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE;iBAC7F;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAqB;QACnD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,MAAM,CAAC,MAAM,CAAC,MAAM,yDAAyD;qBACxH;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE;iBAC1F;aACF;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAgI;QACpK,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAa,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU;qBAC9G;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,mBAAmB,EAAE;iBACxD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAwC;QACpE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE9B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,UAAU,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CACzE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0CAA0C,MAAM,EAAE;qBACzD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,kBAAkB,EAAE;iBACvD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAmF;QAClH,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,GAAG,iCAAiC,CAAC;YAE/C,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,OAAO,OAAO,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACzF,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC1D,MAAM,IAAI,aAAa,OAAO,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC;gBACtD,CAAC;gBACD,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;qBACpB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,IAAI,mBAAmB,EAAE;iBACxD;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAA2B;QAC/D,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEzF,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,WAAW,QAAQ,GAAG,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE;YAC7C,QAAQ;YACR,iBAAiB;YACjB,eAAe;YACf,oBAAoB,EAAE,IAAI;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,QAAQ,GAAG,gCAAgC,CAAC;YAChD,QAAQ,IAAI,cAAc,MAAM,CAAC,KAAK,IAAI,CAAC;YAC3C,IAAI,MAAM,CAAC,SAAS;gBAAE,QAAQ,IAAI,aAAa,MAAM,CAAC,SAAS,IAAI,CAAC;YACpE,IAAI,MAAM,CAAC,OAAO;gBAAE,QAAQ,IAAI,iBAAiB,MAAM,CAAC,OAAO,IAAI,CAAC;YACpE,IAAI,MAAM,CAAC,WAAW;gBAAE,QAAQ,IAAI,aAAa,MAAM,CAAC,WAAW,MAAM,CAAC;YAE1E,0BAA0B;YAC1B,QAAQ,IAAI,sBAAsB,CAAC;YACnC,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;gBACvC,QAAQ,IAAI,0CAA0C,CAAC;gBACvD,QAAQ,IAAI,+CAA+C,CAAC;gBAC5D,QAAQ,IAAI,qDAAqD,CAAC;YACpE,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBAClD,QAAQ,IAAI,qDAAqD,CAAC;gBAClE,QAAQ,IAAI,gCAAgC,CAAC;YAC/C,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,EAAE,CAAC;gBAC9C,QAAQ,IAAI,0DAA0D,CAAC;gBACvE,QAAQ,IAAI,mCAAmC,CAAC;gBAChD,QAAQ,IAAI,uCAAuC,CAAC;YACtD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC3C,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,GAAG,+BAA+B,CAAC;QAE7C,mBAAmB;QACnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,MAAM,CAAC,UAAU,IAAI,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,6CAA6C,MAAM,CAAC,OAAO,IAAI,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,IAAI,oBAAoB,MAAM,CAAC,iBAAiB,IAAI,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,iBAAiB,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;YAC/D,IAAI,MAAM,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC;YAChF,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,oBAAoB,MAAM,CAAC,YAAY,EAAE,CAAC;YACpD,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,mBAAmB,QAAQ,GAAG,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,qBAAqB,MAAM,CAAC,WAAW,MAAM,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,WAAW,CAAC;QAEtB,qBAAqB;QACrB,IAAI,iBAAiB,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,oBAAoB,MAAM,CAAC,eAAe,CAAC,MAAM,mBAAmB,CAAC;YAC/E,MAAM,IAAI,8BAA8B,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,yBAAyB,MAAM,CAAC,UAAU,EAAE,CAAC;QACzD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,aAAa;IACb,2EAA2E;IAE3E,KAAK,CAAC,GAAG;QACP,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1D,CAAC;CACF;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACrC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ export interface TranscriptLine {
2
+ start: number;
3
+ duration: number;
4
+ text: string;
5
+ }
6
+ export interface TranscriptResult {
7
+ success: boolean;
8
+ videoId?: string;
9
+ videoTitle?: string;
10
+ videoUrl?: string;
11
+ transcript?: string;
12
+ transcriptLines?: TranscriptLine[];
13
+ language?: string;
14
+ languageUsed?: string;
15
+ wordCount?: number;
16
+ charCount?: number;
17
+ durationSec?: number;
18
+ durationFormatted?: string;
19
+ error?: string;
20
+ errorCode?: string;
21
+ provider?: string;
22
+ fetchTimeMs?: number;
23
+ }
24
+ export declare function extractVideoId(url: string): string | null;
25
+ export declare function checkYtDlpInstalled(): Promise<{
26
+ installed: boolean;
27
+ version?: string;
28
+ error?: string;
29
+ }>;
30
+ export declare function getYouTubeTranscript(url: string, options?: {
31
+ language?: string;
32
+ includeTimestamps?: boolean;
33
+ includeMetadata?: boolean;
34
+ timeout?: number;
35
+ tryFallbackLanguages?: boolean;
36
+ }): Promise<TranscriptResult>;
37
+ export declare function formatTranscriptWithTimestamps(lines: TranscriptLine[]): string;
38
+ export declare function getAvailableLanguages(url: string): Promise<{
39
+ success: boolean;
40
+ languages?: string[];
41
+ error?: string;
42
+ }>;
43
+ //# sourceMappingURL=youtube-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube-transcript.d.ts","sourceRoot":"","sources":["../src/youtube-transcript.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2BD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmCzD;AAqED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB7G;AA2CD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GACA,OAAO,CAAC,gBAAgB,CAAC,CA8L3B;AAGD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAc9E;AAGD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB5H"}
@@ -0,0 +1,393 @@
1
+ // YouTube Transcript Extractor using yt-dlp (MOST ROBUST)
2
+ // Production-grade implementation with retry logic, fallbacks, and deduplication
3
+ import { exec } from 'child_process';
4
+ import { promisify } from 'util';
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import * as os from 'os';
8
+ const execAsync = promisify(exec);
9
+ // Constants
10
+ const DEFAULT_TIMEOUT = 45000; // 45 seconds
11
+ const MAX_RETRIES = 2;
12
+ const RETRY_DELAY = 1000; // 1 second
13
+ const FALLBACK_LANGUAGES = ['en', 'en-US', 'en-GB', 'a.en']; // Auto-generated English
14
+ // Utility: Sleep for retry delays
15
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
16
+ // Utility: Format duration in HH:MM:SS or MM:SS
17
+ function formatDuration(seconds) {
18
+ const hrs = Math.floor(seconds / 3600);
19
+ const mins = Math.floor((seconds % 3600) / 60);
20
+ const secs = Math.floor(seconds % 60);
21
+ if (hrs > 0) {
22
+ return `${hrs}:${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
23
+ }
24
+ return `${mins}:${secs.toString().padStart(2, '0')}`;
25
+ }
26
+ // Utility: Safe cleanup of temp directory
27
+ async function safeCleanup(tempDir) {
28
+ try {
29
+ await fs.rm(tempDir, { recursive: true, force: true });
30
+ }
31
+ catch (e) {
32
+ console.error('[YouTube Transcript] Cleanup warning:', e);
33
+ }
34
+ }
35
+ // Extract video ID from various YouTube URL formats
36
+ export function extractVideoId(url) {
37
+ // Trim and clean input
38
+ url = url.trim();
39
+ // Handle direct video ID (11 chars, alphanumeric with - and _)
40
+ if (url.length === 11 && /^[a-zA-Z0-9_-]{11}$/.test(url)) {
41
+ return url;
42
+ }
43
+ // Comprehensive URL patterns - all require exactly 11 char video ID
44
+ const patterns = [
45
+ // Standard watch URLs
46
+ /(?:youtube\.com\/watch\?(?:.*&)?v=)([a-zA-Z0-9_-]{11})(?:[&?#]|$)/,
47
+ // Short URLs
48
+ /youtu\.be\/([a-zA-Z0-9_-]{11})(?:[?#]|$)/,
49
+ // Embed URLs
50
+ /youtube\.com\/embed\/([a-zA-Z0-9_-]{11})(?:[?#]|$)/,
51
+ // Shorts
52
+ /youtube\.com\/shorts\/([a-zA-Z0-9_-]{11})(?:[?#]|$)/,
53
+ // Live
54
+ /youtube\.com\/live\/([a-zA-Z0-9_-]{11})(?:[?#]|$)/,
55
+ // Attribution links
56
+ /youtube\.com\/attribution_link\?.*v%3D([a-zA-Z0-9_-]{11})/,
57
+ // V parameter anywhere in URL (stricter)
58
+ /[?&]v=([a-zA-Z0-9_-]{11})(?:[&?#]|$)/,
59
+ // Music YouTube
60
+ /music\.youtube\.com\/watch\?(?:.*&)?v=([a-zA-Z0-9_-]{11})(?:[&?#]|$)/,
61
+ ];
62
+ for (const pattern of patterns) {
63
+ const match = url.match(pattern);
64
+ if (match && match[1] && match[1].length === 11)
65
+ return match[1];
66
+ }
67
+ return null;
68
+ }
69
+ // Parse VTT subtitle format with deduplication
70
+ function parseVTT(vttContent) {
71
+ const lines = [];
72
+ const seenTexts = new Set(); // For deduplication
73
+ const blocks = vttContent.split('\n\n').filter(block => block.trim());
74
+ for (const block of blocks) {
75
+ const blockLines = block.split('\n');
76
+ // VTT format: timestamp line + text lines
77
+ const timestampLine = blockLines.find(line => line.includes('-->'));
78
+ if (!timestampLine)
79
+ continue;
80
+ // Parse "00:00:00.000 --> 00:00:05.000" (may have position info after)
81
+ const timestampMatch = timestampLine.match(/(\d{1,2}:)?(\d{2}):(\d{2})[.,](\d{3})\s*-->\s*(\d{1,2}:)?(\d{2}):(\d{2})[.,](\d{3})/);
82
+ if (!timestampMatch)
83
+ continue;
84
+ const [startStr, endStr] = timestampLine.split('-->').map(s => s.trim().split(' ')[0]);
85
+ const start = parseTimestamp(startStr);
86
+ const end = parseTimestamp(endStr);
87
+ // Get text (skip timestamp line and cue numbers)
88
+ const text = blockLines
89
+ .filter(line => !line.includes('-->') && !line.match(/^\d+$/) && !line.startsWith('WEBVTT'))
90
+ .join(' ')
91
+ .replace(/<[^>]+>/g, '') // Remove HTML/VTT tags like <c>, </c>, <00:00:01.234>
92
+ .replace(/&nbsp;/g, ' ')
93
+ .replace(/&amp;/g, '&')
94
+ .replace(/&lt;/g, '<')
95
+ .replace(/&gt;/g, '>')
96
+ .replace(/\s+/g, ' ') // Normalize whitespace
97
+ .trim();
98
+ // Skip empty or duplicate consecutive lines (common in auto-captions)
99
+ if (text && !seenTexts.has(text)) {
100
+ seenTexts.add(text);
101
+ lines.push({
102
+ start,
103
+ duration: end - start,
104
+ text
105
+ });
106
+ }
107
+ }
108
+ return lines;
109
+ }
110
+ // Parse timestamp "00:01:23.456" to seconds
111
+ function parseTimestamp(timestamp) {
112
+ const parts = timestamp.split(':');
113
+ let seconds = 0;
114
+ if (parts.length === 3) {
115
+ // HH:MM:SS.mmm
116
+ seconds = parseInt(parts[0]) * 3600 + parseInt(parts[1]) * 60 + parseFloat(parts[2]);
117
+ }
118
+ else if (parts.length === 2) {
119
+ // MM:SS.mmm
120
+ seconds = parseInt(parts[0]) * 60 + parseFloat(parts[1]);
121
+ }
122
+ else {
123
+ // SS.mmm
124
+ seconds = parseFloat(parts[0]);
125
+ }
126
+ return seconds;
127
+ }
128
+ // Check if yt-dlp is installed
129
+ export async function checkYtDlpInstalled() {
130
+ try {
131
+ const { stdout } = await execAsync('yt-dlp --version', { timeout: 5000 });
132
+ return {
133
+ installed: true,
134
+ version: stdout.trim()
135
+ };
136
+ }
137
+ catch (error) {
138
+ // Try common install paths
139
+ const paths = ['/opt/homebrew/bin/yt-dlp', '/usr/local/bin/yt-dlp', '/usr/bin/yt-dlp'];
140
+ for (const ytPath of paths) {
141
+ try {
142
+ const { stdout } = await execAsync(`"${ytPath}" --version`, { timeout: 5000 });
143
+ return { installed: true, version: stdout.trim() };
144
+ }
145
+ catch {
146
+ continue;
147
+ }
148
+ }
149
+ return {
150
+ installed: false,
151
+ error: 'yt-dlp not found in PATH. Install: brew install yt-dlp (macOS) or pip install yt-dlp'
152
+ };
153
+ }
154
+ }
155
+ // Internal: Execute yt-dlp with retry
156
+ async function executeYtDlp(videoUrl, subtitlePath, language, timeout) {
157
+ const command = `yt-dlp --write-auto-sub --write-sub --sub-lang ${language} --skip-download --sub-format vtt --print-json -o "${subtitlePath}" "${videoUrl}"`;
158
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
159
+ try {
160
+ console.error(`[YouTube Transcript] Attempt ${attempt}/${MAX_RETRIES}: ${language}`);
161
+ const { stdout, stderr } = await execAsync(command, {
162
+ timeout,
163
+ maxBuffer: 15 * 1024 * 1024, // 15MB buffer
164
+ env: { ...process.env, PYTHONIOENCODING: 'utf-8' }
165
+ });
166
+ return { stdout, stderr, success: true };
167
+ }
168
+ catch (error) {
169
+ const errMsg = error?.message || String(error);
170
+ console.error(`[YouTube Transcript] Attempt ${attempt} failed: ${errMsg.substring(0, 100)}`);
171
+ // Don't retry on certain errors
172
+ if (errMsg.includes('Video unavailable') ||
173
+ errMsg.includes('Private video') ||
174
+ errMsg.includes('Sign in to confirm')) {
175
+ return { stdout: '', stderr: errMsg, success: false, error: errMsg };
176
+ }
177
+ if (attempt < MAX_RETRIES) {
178
+ await sleep(RETRY_DELAY * attempt);
179
+ }
180
+ else {
181
+ return { stdout: '', stderr: errMsg, success: false, error: errMsg };
182
+ }
183
+ }
184
+ }
185
+ return { stdout: '', stderr: 'Max retries exceeded', success: false, error: 'Max retries exceeded' };
186
+ }
187
+ // Get YouTube transcript using yt-dlp
188
+ export async function getYouTubeTranscript(url, options) {
189
+ const startTime = Date.now();
190
+ const { language = 'en', includeTimestamps = false, includeMetadata = true, timeout = DEFAULT_TIMEOUT, tryFallbackLanguages = true } = options || {};
191
+ let tempDir = null;
192
+ try {
193
+ // Validate and extract video ID
194
+ const videoId = extractVideoId(url);
195
+ if (!videoId) {
196
+ return {
197
+ success: false,
198
+ error: 'Invalid YouTube URL. Supported formats: youtube.com/watch?v=ID, youtu.be/ID, youtube.com/shorts/ID',
199
+ errorCode: 'INVALID_URL'
200
+ };
201
+ }
202
+ // Check yt-dlp installation
203
+ const ytdlpCheck = await checkYtDlpInstalled();
204
+ if (!ytdlpCheck.installed) {
205
+ return {
206
+ success: false,
207
+ error: ytdlpCheck.error || 'yt-dlp not installed',
208
+ errorCode: 'YTDLP_NOT_FOUND'
209
+ };
210
+ }
211
+ // Create temp directory
212
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'yt-transcript-'));
213
+ const subtitlePath = path.join(tempDir, `${videoId}.%(ext)s`);
214
+ const videoUrl = `https://www.youtube.com/watch?v=${videoId}`;
215
+ console.error(`[YouTube Transcript] Fetching: ${videoId} (lang: ${language})`);
216
+ // Build language list: requested + fallbacks
217
+ const languagesToTry = [language];
218
+ if (tryFallbackLanguages && !FALLBACK_LANGUAGES.includes(language)) {
219
+ languagesToTry.push(...FALLBACK_LANGUAGES);
220
+ }
221
+ let execResult = null;
222
+ let languageUsed = language;
223
+ // Try each language until we get captions
224
+ for (const lang of languagesToTry) {
225
+ execResult = await executeYtDlp(videoUrl, subtitlePath, lang, timeout);
226
+ if (execResult.success) {
227
+ // Check if subtitle file was created
228
+ const files = await fs.readdir(tempDir);
229
+ const vttFile = files.find(f => f.endsWith('.vtt'));
230
+ if (vttFile) {
231
+ languageUsed = lang;
232
+ break;
233
+ }
234
+ }
235
+ // Clean temp for next attempt
236
+ const files = await fs.readdir(tempDir);
237
+ for (const file of files) {
238
+ await fs.unlink(path.join(tempDir, file)).catch(() => { });
239
+ }
240
+ }
241
+ if (!execResult?.success) {
242
+ await safeCleanup(tempDir);
243
+ return {
244
+ success: false,
245
+ videoId,
246
+ videoUrl,
247
+ error: execResult?.error || 'Failed to fetch transcript',
248
+ errorCode: 'FETCH_FAILED',
249
+ fetchTimeMs: Date.now() - startTime
250
+ };
251
+ }
252
+ // Parse metadata from JSON output
253
+ let videoTitle = '';
254
+ let durationSec = 0;
255
+ if (includeMetadata && execResult.stdout.trim()) {
256
+ try {
257
+ // Handle potential multiple JSON objects (yt-dlp can output multiple)
258
+ const jsonLines = execResult.stdout.trim().split('\n');
259
+ for (const line of jsonLines) {
260
+ try {
261
+ const metadata = JSON.parse(line);
262
+ if (metadata.title)
263
+ videoTitle = metadata.title;
264
+ if (metadata.duration)
265
+ durationSec = metadata.duration;
266
+ break; // Use first valid JSON
267
+ }
268
+ catch {
269
+ continue;
270
+ }
271
+ }
272
+ }
273
+ catch (e) {
274
+ console.error('[YouTube Transcript] Metadata parse warning:', e);
275
+ }
276
+ }
277
+ // Find the downloaded subtitle file
278
+ const files = await fs.readdir(tempDir);
279
+ const vttFile = files.find(f => f.endsWith('.vtt'));
280
+ if (!vttFile) {
281
+ await safeCleanup(tempDir);
282
+ return {
283
+ success: false,
284
+ videoId,
285
+ videoUrl,
286
+ videoTitle: videoTitle || undefined,
287
+ error: `No captions available. Video may not have subtitles in: ${languagesToTry.join(', ')}`,
288
+ errorCode: 'NO_CAPTIONS',
289
+ fetchTimeMs: Date.now() - startTime
290
+ };
291
+ }
292
+ // Read and parse VTT file
293
+ const vttPath = path.join(tempDir, vttFile);
294
+ const vttContent = await fs.readFile(vttPath, 'utf-8');
295
+ // Parse VTT with deduplication
296
+ const transcriptLines = parseVTT(vttContent);
297
+ if (transcriptLines.length === 0) {
298
+ await safeCleanup(tempDir);
299
+ return {
300
+ success: false,
301
+ videoId,
302
+ videoUrl,
303
+ videoTitle: videoTitle || undefined,
304
+ error: 'Caption file was empty or could not be parsed',
305
+ errorCode: 'PARSE_FAILED',
306
+ fetchTimeMs: Date.now() - startTime
307
+ };
308
+ }
309
+ // Generate clean transcript text
310
+ const transcript = transcriptLines.map(line => line.text).join(' ');
311
+ const wordCount = transcript.split(/\s+/).filter(w => w.length > 0).length;
312
+ const charCount = transcript.length;
313
+ // Cleanup temp directory
314
+ await safeCleanup(tempDir);
315
+ const fetchTimeMs = Date.now() - startTime;
316
+ console.error(`[YouTube Transcript] Success: ${wordCount} words in ${fetchTimeMs}ms`);
317
+ return {
318
+ success: true,
319
+ videoId,
320
+ videoUrl,
321
+ videoTitle: videoTitle || undefined,
322
+ transcript,
323
+ transcriptLines: includeTimestamps ? transcriptLines : undefined,
324
+ language,
325
+ languageUsed,
326
+ wordCount,
327
+ charCount,
328
+ durationSec: durationSec || undefined,
329
+ durationFormatted: durationSec ? formatDuration(durationSec) : undefined,
330
+ provider: 'yt-dlp',
331
+ fetchTimeMs
332
+ };
333
+ }
334
+ catch (error) {
335
+ // Ensure cleanup on any error
336
+ if (tempDir)
337
+ await safeCleanup(tempDir);
338
+ const errMsg = error?.message || String(error);
339
+ console.error('[YouTube Transcript] Error:', errMsg);
340
+ // Categorize error
341
+ let errorCode = 'UNKNOWN_ERROR';
342
+ if (errMsg.includes('ETIMEDOUT') || errMsg.includes('timeout')) {
343
+ errorCode = 'TIMEOUT';
344
+ }
345
+ else if (errMsg.includes('ENOTFOUND') || errMsg.includes('network')) {
346
+ errorCode = 'NETWORK_ERROR';
347
+ }
348
+ return {
349
+ success: false,
350
+ error: errMsg,
351
+ errorCode,
352
+ fetchTimeMs: Date.now() - (Date.now() - 1) // Approximate
353
+ };
354
+ }
355
+ }
356
+ // Format transcript with timestamps
357
+ export function formatTranscriptWithTimestamps(lines) {
358
+ return lines.map(line => {
359
+ const hours = Math.floor(line.start / 3600);
360
+ const minutes = Math.floor((line.start % 3600) / 60);
361
+ const seconds = Math.floor(line.start % 60);
362
+ let timestamp;
363
+ if (hours > 0) {
364
+ timestamp = `[${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}]`;
365
+ }
366
+ else {
367
+ timestamp = `[${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}]`;
368
+ }
369
+ return `${timestamp} ${line.text}`;
370
+ }).join('\n');
371
+ }
372
+ // Get available caption languages for a video (useful for debugging)
373
+ export async function getAvailableLanguages(url) {
374
+ const videoId = extractVideoId(url);
375
+ if (!videoId) {
376
+ return { success: false, error: 'Invalid YouTube URL' };
377
+ }
378
+ try {
379
+ const { stdout } = await execAsync(`yt-dlp --list-subs --skip-download "https://www.youtube.com/watch?v=${videoId}"`, { timeout: 15000 });
380
+ const languages = [];
381
+ const lines = stdout.split('\n');
382
+ for (const line of lines) {
383
+ const match = line.match(/^([a-z]{2}(-[A-Z]{2})?)\s/);
384
+ if (match)
385
+ languages.push(match[1]);
386
+ }
387
+ return { success: true, languages: [...new Set(languages)] };
388
+ }
389
+ catch (error) {
390
+ return { success: false, error: error?.message || String(error) };
391
+ }
392
+ }
393
+ //# sourceMappingURL=youtube-transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtube-transcript.js","sourceRoot":"","sources":["../src/youtube-transcript.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ignidor/web-search-mcp",
3
- "version": "1.0.1",
4
- "description": "Local, unlimited web-search MCP server with BM25 ranking and Playwright crawling. No Docker, no API keys, no rate limits.",
3
+ "version": "1.1.0",
4
+ "description": "Local, unlimited web-search MCP server with BM25 ranking, Playwright crawling, and YouTube transcripts (yt-dlp). No Docker, no API keys, no rate limits.",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "bin": {
9
- "ignidor-web-search-mcp": "./bin/web-search-mcp.js"
9
+ "web-search-mcp": "./bin/web-search-mcp.js"
10
10
  },
11
11
  "files": [
12
12
  "dist",
@@ -39,7 +39,11 @@
39
39
  "duckduckgo",
40
40
  "unlimited",
41
41
  "free",
42
- "no-api-key"
42
+ "no-api-key",
43
+ "youtube",
44
+ "transcript",
45
+ "yt-dlp",
46
+ "video-captions"
43
47
  ],
44
48
  "author": "Ignidor Team",
45
49
  "license": "MIT",