@lmcc-dev/mult-fetch-mcp-server 1.0.2 → 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.
Files changed (115) hide show
  1. package/README.md +14 -2
  2. package/README.zh.md +3 -2
  3. package/dist/src/client.d.ts +6 -0
  4. package/dist/src/client.js +26 -28
  5. package/dist/src/client.js.map +1 -0
  6. package/dist/src/index.d.ts +15 -0
  7. package/dist/src/index.js.map +1 -0
  8. package/dist/src/lib/BrowserFetcher.d.ts +175 -0
  9. package/dist/src/lib/BrowserFetcher.js +99 -65
  10. package/dist/src/lib/BrowserFetcher.js.map +1 -0
  11. package/dist/src/lib/NodeFetcher.d.ts +92 -0
  12. package/dist/src/lib/NodeFetcher.js +150 -86
  13. package/dist/src/lib/NodeFetcher.js.map +1 -0
  14. package/dist/src/lib/i18n/index.js.map +1 -0
  15. package/dist/src/lib/i18n/keys.js +135 -0
  16. package/dist/src/lib/i18n/locales/en/browser.d.ts +61 -0
  17. package/dist/src/lib/i18n/locales/en/browser.js +68 -45
  18. package/dist/src/lib/i18n/locales/en/browser.js.map +1 -0
  19. package/dist/src/lib/i18n/locales/en/client.d.ts +39 -0
  20. package/dist/src/lib/i18n/locales/en/client.js.map +1 -0
  21. package/dist/src/lib/i18n/locales/en/errors.d.ts +17 -0
  22. package/dist/src/lib/i18n/locales/en/errors.js.map +1 -0
  23. package/dist/src/lib/i18n/locales/en/fetcher.d.ts +66 -0
  24. package/dist/src/lib/i18n/locales/en/fetcher.js +60 -59
  25. package/dist/src/lib/i18n/locales/en/fetcher.js.map +1 -0
  26. package/dist/src/lib/i18n/locales/en/index.d.ts +344 -0
  27. package/dist/src/lib/i18n/locales/en/index.js +1 -1
  28. package/dist/src/lib/i18n/locales/en/index.js.map +1 -0
  29. package/dist/src/lib/i18n/locales/en/node.d.ts +41 -0
  30. package/dist/src/lib/i18n/locales/en/node.js.map +1 -0
  31. package/dist/src/lib/i18n/locales/en/prompts.d.ts +65 -0
  32. package/dist/src/lib/i18n/locales/en/prompts.js.map +1 -0
  33. package/dist/src/lib/i18n/locales/en/resources.d.ts +41 -0
  34. package/dist/src/lib/i18n/locales/en/resources.js +30 -15
  35. package/dist/src/lib/i18n/locales/en/resources.js.map +1 -0
  36. package/dist/src/lib/i18n/locales/en/server.d.ts +30 -0
  37. package/dist/src/lib/i18n/locales/en/server.js.map +1 -0
  38. package/dist/src/lib/i18n/locales/en/tools.d.ts +24 -0
  39. package/dist/src/lib/i18n/locales/en/tools.js.map +1 -0
  40. package/dist/src/lib/i18n/locales/zh/browser.d.ts +61 -0
  41. package/dist/src/lib/i18n/locales/zh/browser.js +68 -45
  42. package/dist/src/lib/i18n/locales/zh/browser.js.map +1 -0
  43. package/dist/src/lib/i18n/locales/zh/client.d.ts +38 -0
  44. package/dist/src/lib/i18n/locales/zh/client.js.map +1 -0
  45. package/dist/src/lib/i18n/locales/zh/errors.d.ts +17 -0
  46. package/dist/src/lib/i18n/locales/zh/errors.js.map +1 -0
  47. package/dist/src/lib/i18n/locales/zh/fetcher.d.ts +66 -0
  48. package/dist/src/lib/i18n/locales/zh/fetcher.js +60 -59
  49. package/dist/src/lib/i18n/locales/zh/fetcher.js.map +1 -0
  50. package/dist/src/lib/i18n/locales/zh/index.d.ts +343 -0
  51. package/dist/src/lib/i18n/locales/zh/index.js +1 -1
  52. package/dist/src/lib/i18n/locales/zh/index.js.map +1 -0
  53. package/dist/src/lib/i18n/locales/zh/node.d.ts +41 -0
  54. package/dist/src/lib/i18n/locales/zh/node.js.map +1 -0
  55. package/dist/src/lib/i18n/locales/zh/prompts.d.ts +65 -0
  56. package/dist/src/lib/i18n/locales/zh/prompts.js.map +1 -0
  57. package/dist/src/lib/i18n/locales/zh/resources.d.ts +41 -0
  58. package/dist/src/lib/i18n/locales/zh/resources.js +28 -13
  59. package/dist/src/lib/i18n/locales/zh/resources.js.map +1 -0
  60. package/dist/src/lib/i18n/locales/zh/server.d.ts +30 -0
  61. package/dist/src/lib/i18n/locales/zh/server.js.map +1 -0
  62. package/dist/src/lib/i18n/locales/zh/tools.d.ts +24 -0
  63. package/dist/src/lib/i18n/locales/zh/tools.js.map +1 -0
  64. package/dist/src/lib/i18n/logger.d.ts +38 -0
  65. package/dist/src/lib/i18n/logger.js.map +1 -0
  66. package/dist/src/lib/logger.d.ts +32 -0
  67. package/dist/src/lib/logger.js.map +1 -0
  68. package/dist/src/lib/server/browser.d.ts +34 -0
  69. package/dist/src/lib/server/browser.js +10 -16
  70. package/dist/src/lib/server/browser.js.map +1 -0
  71. package/dist/src/lib/server/fetcher.d.ts +20 -0
  72. package/dist/src/lib/server/fetcher.js.map +1 -0
  73. package/dist/src/lib/server/index.d.ts +10 -0
  74. package/dist/src/lib/server/index.js.map +1 -0
  75. package/dist/src/lib/server/prompts.d.ts +11 -0
  76. package/dist/src/lib/server/prompts.js +6 -6
  77. package/dist/src/lib/server/prompts.js.map +1 -0
  78. package/dist/src/lib/server/resources.d.ts +11 -0
  79. package/dist/src/lib/server/resources.js.map +1 -0
  80. package/dist/src/lib/server/tools.d.ts +12 -0
  81. package/dist/src/lib/server/tools.js +369 -309
  82. package/dist/src/lib/server/tools.js.map +1 -0
  83. package/dist/src/lib/server/types.d.ts +71 -0
  84. package/dist/src/lib/server/types.js.map +1 -0
  85. package/dist/src/lib/types.d.ts +119 -0
  86. package/dist/src/lib/types.js.map +1 -0
  87. package/dist/src/lib/utils/errorDetection.js +41 -0
  88. package/dist/src/lib/utils/errors.js +279 -0
  89. package/dist/src/mcp-server.d.ts +6 -0
  90. package/dist/src/mcp-server.js.map +1 -0
  91. package/dist/tests/BrowserFetcher.test.js +951 -0
  92. package/dist/tests/NodeFetcher.test.js +263 -0
  93. package/dist/tests/client.test.js +250 -0
  94. package/dist/tests/i18n.test.js +179 -0
  95. package/dist/tests/jest.setup.d.ts +6 -0
  96. package/dist/tests/jest.setup.js +30 -0
  97. package/dist/tests/jest.setup.js.map +1 -0
  98. package/dist/tests/logger.test.js +99 -0
  99. package/dist/tests/mcp-server.test.js +113 -0
  100. package/dist/tests/server/browser.test.js +197 -0
  101. package/dist/tests/server/fetcher.test.js +216 -0
  102. package/dist/tests/server/index.test.js +122 -0
  103. package/dist/tests/server/prompts.test.js +243 -0
  104. package/dist/tests/server/resources.test.js +359 -0
  105. package/dist/tests/server/tools.test.js +222 -0
  106. package/dist/tests/test-direct-client.d.ts +6 -0
  107. package/dist/tests/test-direct-client.js.map +1 -0
  108. package/dist/tests/test-mcp-methods.d.ts +6 -0
  109. package/dist/tests/test-mcp-methods.js.map +1 -0
  110. package/dist/tests/test-mcp.d.ts +6 -0
  111. package/dist/tests/test-mcp.js.map +1 -0
  112. package/dist/tests/test-mini4k.d.ts +6 -0
  113. package/dist/tests/test-mini4k.js.map +1 -0
  114. package/dist/tests/types.test.js +57 -0
  115. package/package.json +12 -3
package/README.md CHANGED
@@ -12,9 +12,13 @@
12
12
  [![npm downloads](https://img.shields.io/badge/downloads-coming%20soon-lightgrey)](https://www.npmjs.com/package/@lmcc-dev/mult-fetch-mcp-server)
13
13
  [![GitHub last commit](https://img.shields.io/github/last-commit/lmcc-dev/mult-fetch-mcp-server)](https://github.com/lmcc-dev/mult-fetch-mcp-server/commits/main)
14
14
  [![GitHub contributors](https://img.shields.io/github/contributors/lmcc-dev/mult-fetch-mcp-server)](https://github.com/lmcc-dev/mult-fetch-mcp-server/graphs/contributors)
15
+ [![smithery badge](https://smithery.ai/badge/@lmcc-dev/mult-fetch-mcp-server)](https://smithery.ai/server/@lmcc-dev/mult-fetch-mcp-server)
16
+ [![codecov](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server/branch/main/graph/badge.svg)](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server)
17
+ [![CodeFactor](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server/badge)](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server)
18
+
19
+
15
20
 
16
21
  <!-- Future badges to consider:
17
- [![codecov](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server/branch/main/graph/badge.svg)](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server)
18
22
  [![CodeFactor](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server/badge)](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server)
19
23
  [![Maintainability](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/maintainability)](https://codeclimate.com/github/lmcc-dev/mult-fetch-mcp-server/maintainability)
20
24
  -->
@@ -76,6 +80,14 @@ This project implements the Standard Input/Output (Stdio) transport method.
76
80
 
77
81
  ## Installation
78
82
 
83
+ ### Installing via Smithery
84
+
85
+ To install Mult Fetch MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@lmcc-dev/mult-fetch-mcp-server):
86
+
87
+ ```bash
88
+ npx -y @smithery/cli install @lmcc-dev/mult-fetch-mcp-server --client claude
89
+ ```
90
+
79
91
  ### Local Installation
80
92
 
81
93
  ```bash
@@ -509,4 +521,4 @@ MIT
509
521
 
510
522
  ---
511
523
 
512
- Updated by lmcc-dev
524
+ Updated by lmcc-dev
package/README.zh.md CHANGED
@@ -12,10 +12,11 @@
12
12
  [![npm 下载量](https://img.shields.io/badge/下载量-即将更新-lightgrey)](https://www.npmjs.com/package/@lmcc-dev/mult-fetch-mcp-server)
13
13
  [![GitHub 最后提交](https://img.shields.io/github/last-commit/lmcc-dev/mult-fetch-mcp-server)](https://github.com/lmcc-dev/mult-fetch-mcp-server/commits/main)
14
14
  [![GitHub 贡献者](https://img.shields.io/github/contributors/lmcc-dev/mult-fetch-mcp-server)](https://github.com/lmcc-dev/mult-fetch-mcp-server/graphs/contributors)
15
-
16
- <!-- 未来可考虑添加的徽章:
17
15
  [![codecov](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server/branch/main/graph/badge.svg)](https://codecov.io/gh/lmcc-dev/mult-fetch-mcp-server)
18
16
  [![CodeFactor](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server/badge)](https://www.codefactor.io/repository/github/lmcc-dev/mult-fetch-mcp-server)
17
+
18
+
19
+ <!-- 未来可考虑添加的徽章:
19
20
  [![Maintainability](https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/maintainability)](https://codeclimate.com/github/lmcc-dev/mult-fetch-mcp-server/maintainability)
20
21
  -->
21
22
 
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Author: Martin <lmccc.dev@gmail.com>
3
+ * Co-Author: AI Assistant (Claude)
4
+ * Description: This code was collaboratively developed by Martin and AI Assistant.
5
+ */
6
+ export {};
@@ -9,6 +9,7 @@ import path from 'path';
9
9
  import { fileURLToPath } from 'url';
10
10
  import { log, COMPONENTS } from './lib/logger.js';
11
11
  import { execSync } from 'child_process';
12
+ import { isAccessDeniedError, isNetworkError } from './lib/utils/errorDetection.js';
12
13
  // 获取当前文件的目录路径 (Get the directory path of the current file)
13
14
  const __filename = fileURLToPath(import.meta.url);
14
15
  const __dirname = path.dirname(__filename);
@@ -25,43 +26,40 @@ const __dirname = path.dirname(__filename);
25
26
  */
26
27
  function responseRequiresBrowser(response, debug = false) {
27
28
  if (response.isError) {
28
- const errorText = response.content[0].text.toLowerCase();
29
+ const errorText = response.content[0].text;
29
30
  if (debug) {
30
- log('fetcher.fetchError', debug, { url: '', error: response.content[0].text }, COMPONENTS.CLIENT);
31
+ log('fetcher.fetchError', debug, { url: '', error: errorText }, COMPONENTS.CLIENT);
31
32
  // 尝试从错误信息中提取HTTP状态码 (Try to extract HTTP status code from error message)
32
- const statusCodeMatch = response.content[0].text.match(/(\b[45]\d\d\b)/);
33
+ const statusCodeMatch = errorText.match(/(\b[45]\d\d\b)/);
33
34
  if (statusCodeMatch) {
34
35
  log('client.statusCodeDetected', debug, { code: statusCodeMatch[0] }, COMPONENTS.CLIENT);
35
36
  }
36
37
  // 尝试解析更详细的错误原因
37
- if (errorText.includes('403') || errorText.includes('forbidden')) {
38
- log('errors.forbidden', debug, {}, COMPONENTS.CLIENT);
39
- }
40
- else if (errorText.includes('cloudflare')) {
41
- log('errors.cloudflareProtection', debug, {}, COMPONENTS.CLIENT);
42
- }
43
- else if (errorText.includes('captcha')) {
44
- log('errors.captchaRequired', debug, {}, COMPONENTS.CLIENT);
45
- }
46
- else if (errorText.includes('timeout')) {
47
- log('errors.timeout', debug, { timeout: '' }, COMPONENTS.CLIENT);
38
+ if (isAccessDeniedError(errorText)) {
39
+ if (errorText.toLowerCase().includes('403') || errorText.toLowerCase().includes('forbidden')) {
40
+ log('errors.forbidden', debug, {}, COMPONENTS.CLIENT);
41
+ }
42
+ else if (errorText.toLowerCase().includes('cloudflare')) {
43
+ log('errors.cloudflareProtection', debug, {}, COMPONENTS.CLIENT);
44
+ }
45
+ else if (errorText.toLowerCase().includes('captcha')) {
46
+ log('errors.captchaRequired', debug, {}, COMPONENTS.CLIENT);
47
+ }
48
48
  }
49
- else if (errorText.includes('socket') || errorText.includes('econnrefused')) {
50
- log('errors.connectionProblem', debug, {}, COMPONENTS.CLIENT);
49
+ else if (isNetworkError(errorText)) {
50
+ if (errorText.toLowerCase().includes('timeout')) {
51
+ log('errors.timeout', debug, { timeout: '' }, COMPONENTS.CLIENT);
52
+ }
53
+ else if (errorText.toLowerCase().includes('socket') || errorText.toLowerCase().includes('econnrefused')) {
54
+ log('errors.connectionProblem', debug, {}, COMPONENTS.CLIENT);
55
+ }
51
56
  }
52
57
  }
53
- return errorText.includes('403') ||
54
- errorText.includes('forbidden') ||
55
- errorText.includes('access denied') ||
56
- errorText.includes('cloudflare') ||
57
- errorText.includes('captcha') ||
58
- errorText.includes('javascript required') ||
59
- errorText.includes('timeout') ||
60
- errorText.includes('connect timeout') ||
61
- errorText.includes('socket') ||
62
- errorText.includes('econnrefused') ||
63
- errorText.includes('und_err_connect_timeout') ||
64
- errorText.includes('fetch failed');
58
+ return isAccessDeniedError(errorText) ||
59
+ isNetworkError(errorText) ||
60
+ errorText.toLowerCase().includes('javascript required') ||
61
+ errorText.toLowerCase().includes('und_err_connect_timeout') ||
62
+ errorText.toLowerCase().includes('fetch failed');
65
63
  }
66
64
  return false;
67
65
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Author: Martin <lmccc.dev@gmail.com>
4
+ * Co-Author: AI Assistant (Claude)
5
+ * Description: This code was collaboratively developed by Martin and AI Assistant.
6
+ *
7
+ * MCP 服务器启动入口 (MCP Server Entry Point)
8
+ *
9
+ * 这个文件是 MCP 服务器的主入口点,它导入并启动 mcp-server.ts 中定义的服务器。
10
+ * (This file is the main entry point of the MCP server, it imports and starts the server defined in mcp-server.ts.)
11
+ *
12
+ * 使用方法 (Usage):
13
+ * node dist/index.js
14
+ */
15
+ import './mcp-server.js';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,gCAAgC;AAChC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,iCAAiC;AACjC,OAAO,iBAAiB,CAAC;AAEzB,uCAAuC;AACvC,sFAAsF;AACtF,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Author: Martin <lmccc.dev@gmail.com>
3
+ * Co-Author: AI Assistant (Claude)
4
+ * Description: This code was collaboratively developed by Martin and AI Assistant.
5
+ */
6
+ import { RequestPayload } from './types.js';
7
+ /**
8
+ * 定义响应接口 (Define response interface)
9
+ * 包含内容和错误状态 (Contains content and error status)
10
+ */
11
+ interface FetchResponse {
12
+ content: Array<{
13
+ type: string;
14
+ text: string;
15
+ }>;
16
+ isError: boolean;
17
+ }
18
+ /**
19
+ * 浏览器模式获取器类 (Browser mode fetcher class)
20
+ * 使用Puppeteer实现浏览器模式的网页获取 (Implements webpage fetching in browser mode using Puppeteer)
21
+ */
22
+ export declare class BrowserFetcher {
23
+ /**
24
+ * 浏览器实例 (Browser instance)
25
+ * 静态单例,避免重复创建 (Static singleton to avoid repeated creation)
26
+ */
27
+ private static browser;
28
+ /**
29
+ * 浏览器启动状态标志 (Browser startup status flag)
30
+ * 防止并发启动多个浏览器实例 (Prevents concurrent startup of multiple browser instances)
31
+ */
32
+ private static browserStarting;
33
+ /**
34
+ * 浏览器启动Promise (Browser startup Promise)
35
+ * 用于等待浏览器启动完成 (Used to wait for browser startup completion)
36
+ */
37
+ private static browserStartPromise;
38
+ /**
39
+ * Cookie存储 (Cookie storage)
40
+ * 存储不同域名的Cookie (Store cookies for different domains)
41
+ */
42
+ private static cookieStore;
43
+ /**
44
+ * 上次内存检查时间 (Last memory check time)
45
+ */
46
+ private static lastMemoryCheck;
47
+ /**
48
+ * 内存检查间隔(毫秒) (Memory check interval in milliseconds)
49
+ */
50
+ private static memoryCheckInterval;
51
+ /**
52
+ * 常用浏览器的User-Agent列表 (List of common browser User-Agents)
53
+ * 用于模拟不同浏览器的请求 (Used to simulate requests from different browsers)
54
+ */
55
+ private static userAgents;
56
+ /**
57
+ * 获取随机User-Agent (Get random User-Agent)
58
+ * @returns 随机的User-Agent字符串 (Random User-Agent string)
59
+ */
60
+ private static getRandomUserAgent;
61
+ /**
62
+ * 检查内存使用情况 (Check memory usage)
63
+ * 定期监控浏览器内存使用,必要时关闭浏览器释放资源 (Periodically monitor browser memory usage, close browser to release resources when necessary)
64
+ * @param debug 是否启用调试输出 (Whether to enable debug output)
65
+ */
66
+ private static checkMemoryUsage;
67
+ /**
68
+ * 获取系统代理设置 (Get system proxy settings)
69
+ * @param useSystemProxy 是否使用系统代理 (Whether to use system proxy)
70
+ * @returns 系统代理URL或undefined (System proxy URL or undefined)
71
+ */
72
+ private static getSystemProxy;
73
+ /**
74
+ * 获取浏览器实例 (Get browser instance)
75
+ * 如果浏览器未启动,则启动浏览器 (Start browser if not started)
76
+ * @param debug 是否启用调试输出 (Whether to enable debug output)
77
+ * @returns 浏览器实例 (Browser instance)
78
+ */
79
+ private static getBrowser;
80
+ static closeBrowser(debug?: boolean): Promise<void>;
81
+ private static getDomain;
82
+ private static saveCookies;
83
+ private static getCookies;
84
+ private static autoScroll;
85
+ private static handleCloudflareProtection;
86
+ private static simulateHumanBehavior;
87
+ /**
88
+ * 使用Puppeteer获取网页内容 (Get webpage content using Puppeteer)
89
+ * 浏览器模式获取的底层实现方法 (Low-level implementation method for browser mode fetching)
90
+ * @param params 请求参数 (Request parameters)
91
+ * @returns 获取结果 (Fetch result)
92
+ */
93
+ static fetch({ url, headers, proxy, timeout, waitForSelector, waitForTimeout, scrollToBottom, saveCookies, closeBrowser, useSystemProxy, debug, }: RequestPayload): Promise<FetchResponse>;
94
+ /**
95
+ * 使用Puppeteer获取HTML内容 (Get HTML content using Puppeteer)
96
+ * 通过浏览器模式获取网页HTML (Fetch webpage HTML in browser mode)
97
+ * @param requestPayload 请求参数 (Request parameters)
98
+ * @returns 获取结果 (Fetch result)
99
+ */
100
+ static html(requestPayload: RequestPayload & {
101
+ waitForSelector?: string;
102
+ waitForTimeout?: number;
103
+ scrollToBottom?: boolean;
104
+ saveCookies?: boolean;
105
+ closeBrowser?: boolean;
106
+ useSystemProxy?: boolean;
107
+ }): Promise<{
108
+ content: Array<{
109
+ type: string;
110
+ text: string;
111
+ }>;
112
+ isError: boolean;
113
+ }>;
114
+ /**
115
+ * 使用Puppeteer获取JSON内容 (Get JSON content using Puppeteer)
116
+ * 通过浏览器模式获取JSON数据 (Fetch JSON data in browser mode)
117
+ * @param requestPayload 请求参数 (Request parameters)
118
+ * @returns 获取结果 (Fetch result)
119
+ */
120
+ static json(requestPayload: RequestPayload & {
121
+ waitForSelector?: string;
122
+ waitForTimeout?: number;
123
+ scrollToBottom?: boolean;
124
+ saveCookies?: boolean;
125
+ closeBrowser?: boolean;
126
+ useSystemProxy?: boolean;
127
+ }): Promise<{
128
+ content: Array<{
129
+ type: string;
130
+ text: string;
131
+ }>;
132
+ isError: boolean;
133
+ }>;
134
+ /**
135
+ * 使用Puppeteer获取纯文本内容 (Get plain text content using Puppeteer)
136
+ * 通过浏览器模式获取网页纯文本 (Fetch webpage plain text in browser mode)
137
+ * @param requestPayload 请求参数 (Request parameters)
138
+ * @returns 获取结果 (Fetch result)
139
+ */
140
+ static txt(requestPayload: RequestPayload & {
141
+ waitForSelector?: string;
142
+ waitForTimeout?: number;
143
+ scrollToBottom?: boolean;
144
+ saveCookies?: boolean;
145
+ closeBrowser?: boolean;
146
+ useSystemProxy?: boolean;
147
+ }): Promise<{
148
+ content: Array<{
149
+ type: string;
150
+ text: string;
151
+ }>;
152
+ isError: boolean;
153
+ }>;
154
+ /**
155
+ * 使用Puppeteer获取Markdown内容 (Get Markdown content using Puppeteer)
156
+ * 通过浏览器模式获取HTML并转换为Markdown (Fetch HTML in browser mode and convert to Markdown)
157
+ * @param requestPayload 请求参数 (Request parameters)
158
+ * @returns 获取结果 (Fetch result)
159
+ */
160
+ static markdown(requestPayload: RequestPayload & {
161
+ waitForSelector?: string;
162
+ waitForTimeout?: number;
163
+ scrollToBottom?: boolean;
164
+ saveCookies?: boolean;
165
+ closeBrowser?: boolean;
166
+ useSystemProxy?: boolean;
167
+ }): Promise<{
168
+ content: Array<{
169
+ type: string;
170
+ text: string;
171
+ }>;
172
+ isError: boolean;
173
+ }>;
174
+ }
175
+ export {};
@@ -46,6 +46,30 @@ export class BrowserFetcher {
46
46
  * 内存检查间隔(毫秒) (Memory check interval in milliseconds)
47
47
  */
48
48
  static memoryCheckInterval = 60000;
49
+ /**
50
+ * 常用浏览器的User-Agent列表 (List of common browser User-Agents)
51
+ * 用于模拟不同浏览器的请求 (Used to simulate requests from different browsers)
52
+ */
53
+ static userAgents = [
54
+ // Chrome
55
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
56
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
57
+ // Firefox
58
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
59
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:89.0) Gecko/20100101 Firefox/89.0',
60
+ // Safari
61
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15',
62
+ // Edge
63
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59'
64
+ ];
65
+ /**
66
+ * 获取随机User-Agent (Get random User-Agent)
67
+ * @returns 随机的User-Agent字符串 (Random User-Agent string)
68
+ */
69
+ static getRandomUserAgent() {
70
+ const index = Math.floor(Math.random() * this.userAgents.length);
71
+ return this.userAgents[index];
72
+ }
49
73
  /**
50
74
  * 检查内存使用情况 (Check memory usage)
51
75
  * 定期监控浏览器内存使用,必要时关闭浏览器释放资源 (Periodically monitor browser memory usage, close browser to release resources when necessary)
@@ -156,88 +180,98 @@ export class BrowserFetcher {
156
180
  }
157
181
  return undefined;
158
182
  }
159
- // 获取或启动浏览器实例
160
- static async getBrowser({ proxy, debug = false, useSystemProxy = true }) {
161
- // 如果浏览器正在启动,等待启动完成
162
- if (this.browserStarting) {
163
- log('browser.waiting', debug, {}, COMPONENTS.BROWSER_FETCH);
164
- return this.browserStartPromise;
165
- }
166
- // 如果浏览器已经启动,直接返回
183
+ /**
184
+ * 获取浏览器实例 (Get browser instance)
185
+ * 如果浏览器未启动,则启动浏览器 (Start browser if not started)
186
+ * @param debug 是否启用调试输出 (Whether to enable debug output)
187
+ * @returns 浏览器实例 (Browser instance)
188
+ */
189
+ static async getBrowser(debug = false) {
190
+ // 检查内存使用情况 (Check memory usage)
191
+ this.checkMemoryUsage(debug);
192
+ // 如果浏览器已经存在,直接返回 (If browser already exists, return directly)
167
193
  if (this.browser) {
168
- log('browser.starting', debug, { debug }, COMPONENTS.BROWSER_FETCH);
194
+ log('browser.reusingExistingBrowser', debug, {}, COMPONENTS.BROWSER_FETCH);
169
195
  return this.browser;
170
196
  }
197
+ // 如果浏览器正在启动中,等待启动完成 (If browser is starting, wait for startup to complete)
198
+ if (this.browserStarting && this.browserStartPromise) {
199
+ log('browser.waitingForBrowserStart', debug, {}, COMPONENTS.BROWSER_FETCH);
200
+ return this.browserStartPromise;
201
+ }
202
+ // 标记浏览器正在启动 (Mark browser as starting)
171
203
  this.browserStarting = true;
172
- this.browserStartPromise = (async () => {
204
+ // 创建启动Promise (Create startup Promise)
205
+ this.browserStartPromise = new Promise(async (resolve, reject) => {
173
206
  try {
174
- // 获取代理设置 - 优先使用用户指定的代理,其次使用系统代理
175
- const proxyServer = proxy || (useSystemProxy ? this.getSystemProxy(useSystemProxy, debug) : undefined);
176
- // 详细记录代理设置情况
177
- if (proxy) {
178
- log('fetcher.usingSpecifiedProxy', debug, { proxy }, COMPONENTS.BROWSER_FETCH);
179
- }
180
- else if (useSystemProxy) {
181
- log('fetcher.attemptingToUseSystemProxy', debug, {}, COMPONENTS.BROWSER_FETCH);
182
- }
183
- else {
184
- log('fetcher.notUsingProxy', debug, {}, COMPONENTS.BROWSER_FETCH);
185
- }
186
- log('fetcher.finalProxyUsed', debug, { proxy: proxyServer || t('fetcher.none') }, COMPONENTS.BROWSER_FETCH);
187
- // 启动浏览器
188
- const args = [
189
- '--no-sandbox',
190
- '--disable-setuid-sandbox',
191
- '--disable-dev-shm-usage',
192
- '--disable-accelerated-2d-canvas',
193
- '--no-first-run',
194
- '--no-zygote',
195
- '--single-process',
196
- '--disable-gpu',
197
- '--disable-infobars',
198
- '--window-position=0,0',
199
- '--ignore-certifcate-errors',
200
- '--ignore-certifcate-errors-spki-list',
201
- '--disable-features=site-per-process',
202
- '--disable-web-security',
203
- '--disable-features=IsolateOrigins,site-per-process',
204
- '--allow-running-insecure-content',
205
- '--disable-blink-features=AutomationControlled',
206
- ];
207
- // 如果有代理,添加代理参数
208
- if (proxyServer) {
209
- args.push(`--proxy-server=${proxyServer}`);
210
- log('browser.usingProxy', debug, { proxy: proxyServer }, COMPONENTS.BROWSER_FETCH);
211
- }
212
- // 启动浏览器
213
- // @ts-ignore - 忽略puppeteer-extra的类型错误
214
- const browser = await puppeteerExtra.launch({
207
+ log('browser.startingBrowser', debug, {}, COMPONENTS.BROWSER_FETCH);
208
+ // 准备浏览器启动参数 (Prepare browser startup parameters)
209
+ const launchOptions = {
215
210
  headless: 'new',
216
- args,
211
+ args: [
212
+ '--no-sandbox',
213
+ '--disable-setuid-sandbox',
214
+ '--disable-dev-shm-usage',
215
+ '--disable-accelerated-2d-canvas',
216
+ '--no-first-run',
217
+ '--no-zygote',
218
+ '--disable-gpu',
219
+ '--disable-infobars',
220
+ '--window-position=0,0',
221
+ '--ignore-certificate-errors',
222
+ '--ignore-certificate-errors-spki-list',
223
+ '--disable-extensions',
224
+ '--disable-default-apps',
225
+ '--enable-features=NetworkService',
226
+ '--disable-features=IsolateOrigins,site-per-process',
227
+ '--disable-web-security',
228
+ '--disable-site-isolation-trials',
229
+ '--disable-features=BlockInsecurePrivateNetworkRequests',
230
+ '--disable-features=IsolateOrigins',
231
+ '--disable-features=site-per-process',
232
+ '--disable-blink-features=AutomationControlled',
233
+ '--user-agent=' + this.getRandomUserAgent()
234
+ ],
217
235
  ignoreHTTPSErrors: true,
218
236
  defaultViewport: {
219
237
  width: 1920,
220
238
  height: 1080
221
239
  }
222
- });
223
- this.browser = browser;
224
- log('browser.startupSuccess', debug, {}, COMPONENTS.BROWSER_FETCH);
225
- // 设置浏览器关闭事件
226
- browser.on('disconnected', () => {
240
+ };
241
+ // 检查是否有环境变量指定的Chrome路径 (Check if there is a Chrome path specified by environment variables)
242
+ const executablePath = process.env.PUPPETEER_EXECUTABLE_PATH;
243
+ if (executablePath) {
244
+ log('browser.usingCustomChromePath', debug, { path: executablePath }, COMPONENTS.BROWSER_FETCH);
245
+ launchOptions.executablePath = executablePath;
246
+ launchOptions.channel = undefined;
247
+ }
248
+ // 启动浏览器 (Launch browser)
249
+ // @ts-ignore - 忽略puppeteer-extra的类型错误
250
+ this.browser = await puppeteerExtra.launch(launchOptions);
251
+ log('browser.browserStarted', debug, {}, COMPONENTS.BROWSER_FETCH);
252
+ // 设置浏览器关闭事件处理 (Set browser close event handling)
253
+ this.browser.on('disconnected', () => {
254
+ log('browser.browserDisconnected', debug, {}, COMPONENTS.BROWSER_FETCH);
227
255
  this.browser = null;
228
- log('browser.closed', debug, {}, COMPONENTS.BROWSER_FETCH);
256
+ this.browserStarting = false;
257
+ this.browserStartPromise = null;
229
258
  });
230
- return browser;
259
+ // 重置标志 (Reset flags)
260
+ this.browserStarting = false;
261
+ // 解析Promise (Resolve Promise)
262
+ resolve(this.browser);
231
263
  }
232
264
  catch (error) {
265
+ // 记录错误 (Log error)
266
+ log('browser.browserStartError', true, { error: String(error) }, COMPONENTS.BROWSER_FETCH);
267
+ // 重置标志 (Reset flags)
233
268
  this.browser = null;
234
- log('browser.startingFailed', debug, { error: String(error) }, COMPONENTS.BROWSER_FETCH);
235
- throw error;
236
- }
237
- finally {
238
269
  this.browserStarting = false;
270
+ this.browserStartPromise = null;
271
+ // 拒绝Promise (Reject Promise)
272
+ reject(error);
239
273
  }
240
- })();
274
+ });
241
275
  return this.browserStartPromise;
242
276
  }
243
277
  // 关闭浏览器
@@ -426,7 +460,7 @@ export class BrowserFetcher {
426
460
  };
427
461
  }
428
462
  // 获取浏览器实例
429
- const browser = await this.getBrowser({ proxy: effectiveProxy, debug, useSystemProxy });
463
+ const browser = await this.getBrowser(debug);
430
464
  // 创建新页面
431
465
  const page = await browser.newPage();
432
466
  // 设置页面超时
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserFetcher.js","sourceRoot":"","sources":["../../../src/lib/BrowserFetcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C,OAAO,eAAe,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,cAAc;AACd,sCAAsC;AACtC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AAWpC;;;GAGG;AACH,MAAM,OAAO,cAAc;IACzB;;;OAGG;IACK,MAAM,CAAC,OAAO,GAAmB,IAAI,CAAC;IAE9C;;;OAGG;IACK,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;IAEvC;;;OAGG;IACK,MAAM,CAAC,mBAAmB,GAA4B,IAAI,CAAC;IAEnE;;;OAGG;IACK,MAAM,CAAC,WAAW,GAA2B,EAAE,CAAC;IAExD;;OAEG;IACK,MAAM,CAAC,eAAe,GAAW,CAAC,CAAC;IAE3C;;OAEG;IACK,MAAM,CAAC,mBAAmB,GAAW,KAAK,CAAC;IAEnD;;;OAGG;IACK,MAAM,CAAC,UAAU,GAAG;QAC1B,SAAS;QACT,qHAAqH;QACrH,2HAA2H;QAC3H,UAAU;QACV,gFAAgF;QAChF,oFAAoF;QACpF,SAAS;QACT,yHAAyH;QACzH,OAAO;QACP,qIAAqI;KACtI,CAAC;IAEF;;;OAGG;IACK,MAAM,CAAC,kBAAkB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,gBAAgB,CAAC,QAAiB,KAAK;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,mDAAmD;QACnD,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;YAEtD,WAAW;YACX,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAE1F,gBAAgB;YAChB,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAAC,iBAA0B,IAAI,EAAE,QAAiB,KAAK;QAClF,iFAAiF;QACjF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,iEAAiE;QACjE,MAAM,SAAS,GAAG;YAChB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa;YACxD,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU;SACjD,CAAC;QAEF,6EAA6E;QAC7E,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACrE,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE;gBAChC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;aACnD,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QAED,uCAAuC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;YACjD,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;YACjD,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAEhE,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACtF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC;YACH,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,4EAA4E;gBAC5E,IAAI,CAAC;oBACH,WAAW,GAAG,QAAQ,CAAC,qEAAqE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtH,CAAC;gBAAC,OAAO,QAAQ,EAAE,CAAC;oBAClB,GAAG,CAAC,oCAAoC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sEAAsE;gBACtE,IAAI,CAAC;oBACH,gDAAgD;oBAChD,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACpD,kBAAkB;oBAClB,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;yBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;yBACpD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,GAAG,CAAC,iCAAiC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC3G,CAAC;YACH,CAAC;YAED,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,GAAG,CAAC,oCAAoC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAE3G,eAAe;gBACf,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACpG,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBACrC,GAAG,CAAC,+BAA+B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBACjG,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,mCAAmC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACzG,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7D,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAiB,KAAK;QACpD,gCAAgC;QAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7B,8DAA8D;QAC9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,CAAC,gCAAgC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,GAAG,CAAC,gCAAgC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,uCAAuC;QACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,IAAI,CAAC;gBACH,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEpE,iDAAiD;gBACjD,MAAM,aAAa,GAAQ;oBACzB,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE;wBACJ,cAAc;wBACd,0BAA0B;wBAC1B,yBAAyB;wBACzB,iCAAiC;wBACjC,gBAAgB;wBAChB,aAAa;wBACb,eAAe;wBACf,oBAAoB;wBACpB,uBAAuB;wBACvB,6BAA6B;wBAC7B,uCAAuC;wBACvC,sBAAsB;wBACtB,wBAAwB;wBACxB,kCAAkC;wBAClC,oDAAoD;wBACpD,wBAAwB;wBACxB,iCAAiC;wBACjC,wDAAwD;wBACxD,mCAAmC;wBACnC,qCAAqC;wBACrC,+CAA+C;wBAC/C,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;qBAC5C;oBACD,iBAAiB,EAAE,IAAI;oBACvB,eAAe,EAAE;wBACf,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC;gBAEF,4FAA4F;gBAC5F,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;gBAC7D,IAAI,cAAc,EAAE,CAAC;oBACnB,GAAG,CAAC,+BAA+B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBAChG,aAAa,CAAC,cAAc,GAAG,cAAc,CAAC;oBAC9C,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC;gBACpC,CAAC;gBAED,yBAAyB;gBACzB,sCAAsC;gBACtC,IAAI,CAAC,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAE1D,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEnE,iDAAiD;gBACjD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;oBACnC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBACxE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;oBAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAClC,CAAC,CAAC,CAAC;gBAEH,qBAAqB;gBACrB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAE7B,8BAA8B;gBAC9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mBAAmB;gBACnB,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAE3F,qBAAqB;gBACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAEhC,6BAA6B;gBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,QAAQ;IACD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAiB,KAAK;QACrD,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,YAAY;IACJ,MAAM,CAAC,SAAS,CAAC,GAAW;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,cAAc;IACN,MAAM,CAAC,WAAW,CAAC,GAAW,EAAE,OAAe;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;QACrC,CAAC;IACH,CAAC;IAED,cAAc;IACN,MAAM,CAAC,UAAU,CAAC,GAAW;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,YAAY;IACJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAU,EAAE,KAAc;QACxD,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,IAAI,WAAW,GAAG,CAAC,CAAC;oBACpB,MAAM,QAAQ,GAAG,GAAG,CAAC;oBACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;wBAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;wBAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAC7B,WAAW,IAAI,QAAQ,CAAC;wBAExB,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;4BAChC,aAAa,CAAC,KAAK,CAAC,CAAC;4BACrB,OAAO,EAAE,CAAC;wBACZ,CAAC;oBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAiB;QACnB,CAAC;IACH,CAAC;IAED,0BAA0B;IAClB,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAU,EAAE,GAAW,EAAE,KAAc;QACrF,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAChD,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACzC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,uBAAuB,CAAC;oBAC5D,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC;oBAClD,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,IAAI,gBAAgB,EAAE,CAAC;gBACrB,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAE9E,wBAAwB;gBACxB,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAE9C,WAAW;gBACX,MAAM,IAAI,CAAC,iBAAiB,CAAC;oBAC3B,SAAS,EAAE,cAAc;oBACzB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAEnB,uBAAuB;gBACvB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACjD,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;wBACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;wBACzC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,uBAAuB,CAAC;wBAC5D,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBAEH,IAAI,iBAAiB,EAAE,CAAC;oBACtB,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBAE7E,aAAa;oBACb,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBACpE,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAE9C,WAAW;oBACX,MAAM,IAAI,CAAC,iBAAiB,CAAC;wBAC3B,SAAS,EAAE,cAAc;wBACzB,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBAEnB,OAAO;oBACP,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;wBAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;4BACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;4BACzC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,uBAAuB,CAAC;4BAC5D,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;oBAC5D,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE,CAAC;wBACjB,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;wBACxE,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wBAAwB;IAChB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAU,EAAE,KAAc;QACnE,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,SAAS;YACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,SAAS;YACT,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAEzF,OAAO;YACP,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,SAAS;YACT,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,8BAA8B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACjB,GAAG,EACH,OAAO,GAAG,EAAE,EACZ,KAAK,EACL,OAAO,GAAG,KAAK,EACf,eAAe,GAAG,MAAM,EACxB,cAAc,GAAG,IAAI,EACrB,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,IAAI,EAClB,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,IAAI,EACrB,KAAK,GAAG,KAAK,GACE;QACf,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE;YACjC,GAAG;YACH,eAAe;YACf,cAAc;YACd,cAAc;YACd,WAAW;YACX,YAAY;YACZ,cAAc;SACf,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAE7B,WAAW;QACX,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7B,gCAAgC;QAChC,MAAM,cAAc,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE1G,aAAa;QACb,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,GAAG,CAAC,oCAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACpE,CAAC;QAED,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAE/G,IAAI,CAAC;YACH,qBAAqB;YACrB,IAAI,GAAG,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;oBAChE,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YAED,UAAU;YACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE7C,QAAQ;YACR,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAErC,SAAS;YACT,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEhC,SAAS;YACT,MAAM,IAAI,CAAC,YAAY,CAAC,qHAAqH,CAAC,CAAC;YAE/I,QAAQ;YACR,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAExC,qBAAqB;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;gBACjC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpG,MAAM,IAAI,CAAC,mBAAmB,CAAC;oBAC7B,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,cAAc;YACd,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACxF,CAAC;YAED,SAAS;YACT,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YAEH,mBAAmB;YACnB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACnF,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,GAAG,CAAC,iCAAiC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACrF,CAAC;YAED,QAAQ;YACR,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACzG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;gBAC1C,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnB,SAAS;YACT,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACtG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAElE,YAAY;YACZ,IAAI,cAAc,EAAE,CAAC;gBACnB,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACrE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,SAAS;YACT,GAAG,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAErC,gBAAgB;YAChB,IAAI,WAAW,EAAE,CAAC;gBAChB,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,SAAS;YACT,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YACrC,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEhG,aAAa;YACb,IAAI,YAAY,GAAG,OAAO,CAAC;YAC3B,IAAI,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO;gBAC7C,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBACtD,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO;YACP,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEtE,YAAY;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAC/C,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAErF,YAAY;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,KAAK,KAAK,EAAE,EAAE,CAAC;gBACpE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAOjB;QACC,MAAM,EACJ,GAAG,EACH,KAAK,GAAG,KAAK,EACb,YAAY,GAAG,KAAK,EACrB,GAAG,cAAc,CAAC;QAEnB,qBAAqB;QACrB,IAAI,GAAG,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;YAC1C,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC3E,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;gBAChE,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,cAAc,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAiF,EAAE;YAC7H,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAE7H,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;oBAC5B,qBAAqB;oBACrB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACxC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBAEhF,YAAY;oBACZ,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC3D,OAAO,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,gBAAgB;gBAChB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,UAAU,UAAU,GAAG,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,EAAE,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,YAAY;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAOjB;QACC,MAAM,EACJ,GAAG,EACH,KAAK,GAAG,KAAK,EACb,YAAY,GAAG,KAAK,EACrB,GAAG,cAAc,CAAC;QAEnB,qBAAqB;QACrB,IAAI,GAAG,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;YAC1C,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;gBAChE,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,cAAc,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAiF,EAAE;YAC7H,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEjI,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAEhD,kBAAkB;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxC,WAAW;wBACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACrB,gBAAgB;wBAChB,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,WAAW;wBACX,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;wBAC5F,OAAO;4BACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,KAAK,KAAK,EAAE,EAAE,CAAC;4BAC7E,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,+BAA+B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEtJ,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;oBAC5B,qBAAqB;oBACrB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACxC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBAEhF,YAAY;oBACZ,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC3D,OAAO,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,gBAAgB;gBAChB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,GAAG,UAAU,UAAU,GAAG,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC/G,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,EAAE,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,YAAY;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAOhB;QACC,MAAM,EACJ,GAAG,EACH,KAAK,GAAG,KAAK,EACb,YAAY,GAAG,KAAK,EACrB,GAAG,cAAc,CAAC;QAEnB,qBAAqB;QACrB,IAAI,GAAG,KAAK,aAAa,IAAI,YAAY,EAAE,CAAC;YAC1C,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;gBAChE,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,CAAC,CAAC;QAErB,MAAM,cAAc,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAiF,EAAE;YAC7H,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEjI,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAEhD,eAAe;gBACf,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAE3C,eAAe;oBACf,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;oBAE/D,eAAe;oBACf,MAAM,WAAW,GAAG,WAAW;yBAC5B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;yBACpB,IAAI,EAAE,CAAC;oBAEV,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;wBAC9C,OAAO,EAAE,KAAK;qBACf,CAAC;gBACJ,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,+BAA+B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBAEtJ,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;oBAC5B,qBAAqB;oBACrB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACxC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;oBAEhF,YAAY;oBACZ,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC3D,OAAO,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,gBAAgB;gBAChB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,GAAG,UAAU,UAAU,GAAG,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC/G,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,cAAc,EAAE,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,YAAY;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,GAAG,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpE,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAOrB;QACC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,cAAc,CAAC;QAE9C,GAAG,CAAC,yCAAyC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAEzF,IAAI,CAAC;YACH,WAAW;YACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEnD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,mBAAmB;YACnB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;gBAC1C,YAAY,EAAE,KAAK;gBACnB,cAAc,EAAE,QAAQ;gBACxB,gBAAgB,EAAE,GAAG;aACtB,CAAC,CAAC;YAEH,SAAS;YACT,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,WAAW,EAAE,UAAS,OAAO,EAAE,IAAI;oBACjC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;oBACpC,OAAO,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;gBACxC,CAAC;aACF,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEtE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,wCAAwC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAEzG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yCAAyC,GAAG,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC3F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC"}