@resolveio/server-lib 22.3.219 → 22.3.221
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/.nodemon.json +5 -0
- package/.vscode/settings.json +21 -0
- package/AGENTS.md +195 -0
- package/README.md +22 -0
- package/build_package.sh +5 -0
- package/compileDTS.pl +64 -0
- package/docs/ai-assistant-nightly-eval.md +65 -0
- package/docs/ai-assistant-preflight-checklist.md +23 -0
- package/docs/ai-assistant-report-builder-bridge-playbook.md +115 -0
- package/eslint-plugin-custom/index.js +7 -0
- package/eslint-plugin-custom/rules/no-filter-zero-index.js +44 -0
- package/eslint.config.js +103 -0
- package/gulpfile.js +216 -0
- package/methodAndPublicationListGenerator.py +375 -0
- package/mongodbensurers.js +2 -0
- package/mongostop.js +3 -0
- package/package.json +1 -1
- package/scripts/cleanup-bypassed-callmethod-logs.js +616 -0
- package/settings.development.json +25 -0
- package/settings.development.redacted.json +25 -0
- package/src/.env +12 -0
- package/src/ai/assistant-core-heuristics.ts +379 -0
- package/src/ai/resolveio-platform-intelligence-memory-corpus.ts +185 -0
- package/src/ai/resolveio-platform-intelligence-memory.ts +325 -0
- package/{ai/resolveio-platform-intelligence-types.d.ts → src/ai/resolveio-platform-intelligence-types.ts} +20 -15
- package/src/ai/resolveio-platform-intelligence.ts +462 -0
- package/src/client-server-app.ts +12 -0
- package/src/collections/ai-run.collection.ts +117 -0
- package/src/collections/ai-terminal-conversation.collection.ts +91 -0
- package/src/collections/ai-terminal-issue-report.collection.ts +99 -0
- package/src/collections/ai-terminal-message.collection.ts +77 -0
- package/src/collections/app-setting.collection.ts +104 -0
- package/src/collections/app-status.collection.ts +58 -0
- package/src/collections/communication-metric.collection.ts +84 -0
- package/src/collections/counter.collection.ts +56 -0
- package/src/collections/cron-job-history.collection.ts +94 -0
- package/src/collections/cron-job.collection.ts +92 -0
- package/src/collections/customer-notification.collection.ts +131 -0
- package/src/collections/customer-portal-password.collection.ts +76 -0
- package/src/collections/email-history.collection.ts +134 -0
- package/src/collections/email-verified.collection.ts +62 -0
- package/src/collections/file.collection.ts +74 -0
- package/src/collections/flag-update.collection.ts +57 -0
- package/src/collections/flag.collection.ts +57 -0
- package/src/collections/log-method-latency.collection.ts +77 -0
- package/src/collections/log-subscription.collection.ts +80 -0
- package/src/collections/log.collection.ts +93 -0
- package/src/collections/logged-in-users.collection.ts +67 -0
- package/src/collections/monitor-cpu.collection.ts +65 -0
- package/src/collections/monitor-function.collection.ts +74 -0
- package/src/collections/monitor-memory.collection.ts +77 -0
- package/src/collections/monitor-mongo.collection.ts +71 -0
- package/src/collections/notification.collection.ts +57 -0
- package/src/collections/openai-usage-ledger.collection.ts +131 -0
- package/src/collections/report-builder-dashboard-builder.collection.ts +109 -0
- package/src/collections/report-builder-library.collection.ts +89 -0
- package/src/collections/report-builder-report.collection.ts +184 -0
- package/src/collections/user-group.collection.ts +89 -0
- package/src/collections/user-guide.collection.ts +57 -0
- package/src/collections/user.collection.ts +181 -0
- package/src/cron/cron.ts +117 -0
- package/src/fixtures/cron-jobs.ts +95 -0
- package/src/fixtures/init.ts +35 -0
- package/src/http/auth.ts +818 -0
- package/src/http/health.ts +7 -0
- package/src/http/home.ts +90 -0
- package/src/http/slow-query-publication.ts +49 -0
- package/src/index.ts +1 -0
- package/src/managers/ai-assistant-codex-manager.manager.ts +1131 -0
- package/src/managers/ai-run-evidence.manager.ts +264 -0
- package/src/managers/communication-metric.manager.ts +82 -0
- package/src/managers/cron.manager.ts +333 -0
- package/src/managers/customer-notification-content.manager.ts +236 -0
- package/src/managers/diagnostic-manager-bootstrap.ts +165 -0
- package/src/managers/error-auto-fix.manager.ts +2767 -0
- package/src/managers/local-log.manager.ts +113 -0
- package/src/managers/method.manager.ts +1857 -0
- package/src/managers/mongo.manager.ts +4575 -0
- package/src/managers/monitor.manager.ts +507 -0
- package/src/managers/openai-usage-ledger.manager.ts +112 -0
- package/src/managers/slow-query-verifier.manager.ts +3590 -0
- package/src/managers/slow-query.manager.ts +519 -0
- package/src/managers/subscription.manager.ts +3128 -0
- package/src/managers/websocket.manager.ts +746 -0
- package/src/managers/worker-dispatcher.manager.ts +1360 -0
- package/src/managers/worker-server.manager.ts +536 -0
- package/src/methods/accounts.ts +532 -0
- package/src/methods/ai-terminal.ts +29070 -0
- package/src/methods/app-settings.ts +114 -0
- package/src/methods/aws.ts +649 -0
- package/src/methods/collections.ts +641 -0
- package/src/methods/counters.ts +69 -0
- package/src/methods/cron-jobs.ts +2614 -0
- package/src/methods/customer-notifications.ts +458 -0
- package/src/methods/diagnostics.ts +616 -0
- package/src/methods/flag-updates.ts +7 -0
- package/src/methods/flags.ts +7 -0
- package/src/methods/logs.ts +657 -0
- package/src/methods/mongo-explorer.ts +1880 -0
- package/src/methods/monitor.ts +540 -0
- package/src/methods/pdf.ts +1236 -0
- package/src/methods/publications.ts +129 -0
- package/src/methods/report-builder.ts +3300 -0
- package/src/methods/support.ts +335 -0
- package/src/models/ai-run.model.ts +27 -0
- package/src/models/ai-terminal-conversation.model.ts +19 -0
- package/src/models/ai-terminal-issue-report.model.ts +21 -0
- package/src/models/ai-terminal-message.model.ts +24 -0
- package/src/models/app-setting.model.ts +17 -0
- package/{models/app-status.model.d.ts → src/models/app-status.model.ts} +3 -2
- package/{models/billing-logged-in-users.model.d.ts → src/models/billing-logged-in-users.model.ts} +5 -4
- package/src/models/collection-document.model.ts +24 -0
- package/src/models/communication-metric.model.ts +23 -0
- package/{models/counter.model.d.ts → src/models/counter.model.ts} +4 -3
- package/src/models/cron-job-history.model.ts +16 -0
- package/src/models/cron-job.model.ts +15 -0
- package/src/models/customer-notification.model.ts +28 -0
- package/src/models/customer-portal-password.model.ts +12 -0
- package/src/models/dialog.model.ts +25 -0
- package/{models/email-history.model.js → src/models/email-history.model.ts} +36 -4
- package/{models/email-verified.model.d.ts → src/models/email-verified.model.ts} +6 -5
- package/{models/file.model.d.ts → src/models/file.model.ts} +8 -7
- package/{models/flag-update.model.d.ts → src/models/flag-update.model.ts} +4 -3
- package/{models/flag.model.d.ts → src/models/flag.model.ts} +4 -3
- package/src/models/log-method-latency.model.ts +11 -0
- package/{models/log-subscription.model.d.ts → src/models/log-subscription.model.ts} +11 -9
- package/src/models/log.model.ts +19 -0
- package/{models/logged-in-users.model.d.ts → src/models/logged-in-users.model.ts} +6 -5
- package/{models/method-response.model.d.ts → src/models/method-response.model.ts} +7 -6
- package/src/models/method.model.ts +25 -0
- package/{models/monitor-cpu.model.d.ts → src/models/monitor-cpu.model.ts} +9 -7
- package/src/models/monitor-function.model.ts +16 -0
- package/src/models/monitor-memory.model.ts +17 -0
- package/src/models/monitor-mongo.model.ts +15 -0
- package/{models/notification.model.d.ts → src/models/notification.model.ts} +6 -4
- package/src/models/openai-usage-ledger.model.ts +56 -0
- package/src/models/pagination.model.ts +35 -0
- package/src/models/permission.model.ts +14 -0
- package/src/models/report-builder-dashboard-builder.model.ts +29 -0
- package/src/models/report-builder-library.model.ts +20 -0
- package/src/models/report-builder-report.model.ts +136 -0
- package/src/models/report-builder.model.ts +68 -0
- package/src/models/select-data-label.model.ts +9 -0
- package/src/models/server-message.model.ts +31 -0
- package/src/models/slow-query-report.model.ts +23 -0
- package/src/models/subscription.model.ts +73 -0
- package/src/models/support-ticket.model.ts +104 -0
- package/src/models/user-group.model.ts +24 -0
- package/{models/user-guide.model.d.ts → src/models/user-guide.model.ts} +5 -4
- package/src/models/user.model.ts +96 -0
- package/src/private/images/ResolveIO.png +0 -0
- package/src/publications/ai-terminal.ts +73 -0
- package/src/publications/app-settings.ts +25 -0
- package/src/publications/app-status.ts +13 -0
- package/src/publications/cron-jobs.ts +40 -0
- package/src/publications/customer-notifications.ts +101 -0
- package/src/publications/files.ts +33 -0
- package/src/publications/flags-update.ts +19 -0
- package/src/publications/flags.ts +19 -0
- package/src/publications/logs.ts +163 -0
- package/src/publications/notifications.ts +13 -0
- package/src/publications/report-builder-dashboard-builders.ts +39 -0
- package/src/publications/report-builder-libraries.ts +41 -0
- package/src/publications/report-builder-reports.ts +47 -0
- package/src/publications/super-admin.ts +13 -0
- package/src/publications/user-groups.ts +12 -0
- package/src/publications/user-guides.ts +12 -0
- package/src/resolveio-server-app.ts +617 -0
- package/src/server-app.ts +3354 -0
- package/src/services/codex-client.ts +1231 -0
- package/src/services/openai-client.ts +265 -0
- package/src/types/error-report.ts +26 -0
- package/src/types/js-tiktoken.d.ts +11 -0
- package/src/types/slow-query-report.ts +28 -0
- package/src/util/ai-qa-policy.ts +925 -0
- package/src/util/ai-run-evidence-adapters.ts +8347 -0
- package/src/util/ai-run-evidence-dashboard.ts +323 -0
- package/src/util/ai-run-evidence-eval.ts +1057 -0
- package/src/util/ai-run-evidence.ts +1430 -0
- package/src/util/ai-runner-artifacts.ts +586 -0
- package/src/util/ai-runner-manager-autopilot.ts +961 -0
- package/src/util/ai-runner-manager-policy.ts +5011 -0
- package/src/util/ai-runner-qa-auth.ts +838 -0
- package/src/util/ai-runner-qa-tools.ts +3536 -0
- package/src/util/aicoder-runner-v6.ts +3121 -0
- package/src/util/common.ts +649 -0
- package/src/util/customer-portal-password.ts +183 -0
- package/src/util/error-reporter.ts +332 -0
- package/src/util/error-tracking.ts +79 -0
- package/src/util/openai-usage-cost.ts +114 -0
- package/src/util/report-builder-unwinds.ts +180 -0
- package/src/util/runner-process-janitor.ts +219 -0
- package/src/util/schema-report-builder.ts +448 -0
- package/src/util/slow-query-reporter.ts +216 -0
- package/src/util/subscription-dependency-context.ts +1096 -0
- package/src/util/support-runner-v5.ts +10040 -0
- package/src/util/tokenizer.ts +38 -0
- package/src/workers/codex-runner.worker.ts +142 -0
- package/start_server.sh +5 -0
- package/tests/ai-assistant-corpus-build.ts +484 -0
- package/tests/ai-assistant-corpus-replay-e2e.ts +774 -0
- package/tests/ai-assistant-data-parity-e2e.ts +1989 -0
- package/tests/ai-assistant-eval-triage.ts +831 -0
- package/tests/ai-assistant-openai-e2e.ts +1061 -0
- package/tests/ai-assistant-openai-git-e2e.ts +155 -0
- package/tests/ai-assistant-preflight-matrix.ts +215 -0
- package/tests/ai-assistant-routing-eval.test.ts +585 -0
- package/tests/ai-assistant-snf-live-eval.ts +975 -0
- package/tests/ai-assistant-utils.test.ts +4834 -0
- package/tests/ai-manager-autopilot-snapshot.test.ts +193 -0
- package/tests/ai-manager-recovery-checkpoint.test.ts +1383 -0
- package/tests/ai-run-eval.test.ts +132 -0
- package/tests/ai-run-evidence.test.ts +3773 -0
- package/tests/ai-runner-contract.test.ts +515 -0
- package/tests/aicoder-runner-v6.test.ts +822 -0
- package/tests/error-reporter.test.ts +145 -0
- package/tests/method-publication-generator.test.ts +46 -0
- package/tests/report-builder-linking.test.ts +79 -0
- package/tests/resolveio-platform-intelligence.test.ts +352 -0
- package/tests/server-app-cron-owner.test.ts +127 -0
- package/tests/subscription-connect-race.test.ts +158 -0
- package/tests/subscription-dependency-context.test.ts +324 -0
- package/tests/subscription-manager-collection-tracking.test.ts +86 -0
- package/tests/subscription-manager-invalidation.test.ts +86 -0
- package/tests/support-runner-v5.test.ts +3201 -0
- package/tsconfig.json +34 -0
- package/ai/assistant-core-heuristics.d.ts +0 -11
- package/ai/assistant-core-heuristics.js +0 -356
- package/ai/assistant-core-heuristics.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory-corpus.d.ts +0 -3
- package/ai/resolveio-platform-intelligence-memory-corpus.js +0 -214
- package/ai/resolveio-platform-intelligence-memory-corpus.js.map +0 -1
- package/ai/resolveio-platform-intelligence-memory.d.ts +0 -20
- package/ai/resolveio-platform-intelligence-memory.js +0 -341
- package/ai/resolveio-platform-intelligence-memory.js.map +0 -1
- package/ai/resolveio-platform-intelligence-types.js +0 -4
- package/ai/resolveio-platform-intelligence-types.js.map +0 -1
- package/ai/resolveio-platform-intelligence.d.ts +0 -6
- package/ai/resolveio-platform-intelligence.js +0 -463
- package/ai/resolveio-platform-intelligence.js.map +0 -1
- package/client-server-app.d.ts +0 -1
- package/client-server-app.js +0 -68
- package/client-server-app.js.map +0 -1
- package/collections/ai-run.collection.d.ts +0 -3
- package/collections/ai-run.collection.js +0 -170
- package/collections/ai-run.collection.js.map +0 -1
- package/collections/ai-terminal-conversation.collection.d.ts +0 -2
- package/collections/ai-terminal-conversation.collection.js +0 -140
- package/collections/ai-terminal-conversation.collection.js.map +0 -1
- package/collections/ai-terminal-issue-report.collection.d.ts +0 -2
- package/collections/ai-terminal-issue-report.collection.js +0 -148
- package/collections/ai-terminal-issue-report.collection.js.map +0 -1
- package/collections/ai-terminal-message.collection.d.ts +0 -2
- package/collections/ai-terminal-message.collection.js +0 -121
- package/collections/ai-terminal-message.collection.js.map +0 -1
- package/collections/app-setting.collection.d.ts +0 -3
- package/collections/app-setting.collection.js +0 -103
- package/collections/app-setting.collection.js.map +0 -1
- package/collections/app-status.collection.d.ts +0 -3
- package/collections/app-status.collection.js +0 -57
- package/collections/app-status.collection.js.map +0 -1
- package/collections/communication-metric.collection.d.ts +0 -2
- package/collections/communication-metric.collection.js +0 -133
- package/collections/communication-metric.collection.js.map +0 -1
- package/collections/counter.collection.d.ts +0 -3
- package/collections/counter.collection.js +0 -56
- package/collections/counter.collection.js.map +0 -1
- package/collections/cron-job-history.collection.d.ts +0 -3
- package/collections/cron-job-history.collection.js +0 -137
- package/collections/cron-job-history.collection.js.map +0 -1
- package/collections/cron-job.collection.d.ts +0 -3
- package/collections/cron-job.collection.js +0 -92
- package/collections/cron-job.collection.js.map +0 -1
- package/collections/customer-notification.collection.d.ts +0 -3
- package/collections/customer-notification.collection.js +0 -130
- package/collections/customer-notification.collection.js.map +0 -1
- package/collections/customer-portal-password.collection.d.ts +0 -3
- package/collections/customer-portal-password.collection.js +0 -75
- package/collections/customer-portal-password.collection.js.map +0 -1
- package/collections/email-history.collection.d.ts +0 -3
- package/collections/email-history.collection.js +0 -134
- package/collections/email-history.collection.js.map +0 -1
- package/collections/email-verified.collection.d.ts +0 -3
- package/collections/email-verified.collection.js +0 -62
- package/collections/email-verified.collection.js.map +0 -1
- package/collections/file.collection.d.ts +0 -3
- package/collections/file.collection.js +0 -74
- package/collections/file.collection.js.map +0 -1
- package/collections/flag-update.collection.d.ts +0 -3
- package/collections/flag-update.collection.js +0 -57
- package/collections/flag-update.collection.js.map +0 -1
- package/collections/flag.collection.d.ts +0 -3
- package/collections/flag.collection.js +0 -57
- package/collections/flag.collection.js.map +0 -1
- package/collections/log-method-latency.collection.d.ts +0 -3
- package/collections/log-method-latency.collection.js +0 -77
- package/collections/log-method-latency.collection.js.map +0 -1
- package/collections/log-subscription.collection.d.ts +0 -3
- package/collections/log-subscription.collection.js +0 -80
- package/collections/log-subscription.collection.js.map +0 -1
- package/collections/log.collection.d.ts +0 -3
- package/collections/log.collection.js +0 -93
- package/collections/log.collection.js.map +0 -1
- package/collections/logged-in-users.collection.d.ts +0 -3
- package/collections/logged-in-users.collection.js +0 -67
- package/collections/logged-in-users.collection.js.map +0 -1
- package/collections/monitor-cpu.collection.d.ts +0 -3
- package/collections/monitor-cpu.collection.js +0 -65
- package/collections/monitor-cpu.collection.js.map +0 -1
- package/collections/monitor-function.collection.d.ts +0 -3
- package/collections/monitor-function.collection.js +0 -74
- package/collections/monitor-function.collection.js.map +0 -1
- package/collections/monitor-memory.collection.d.ts +0 -3
- package/collections/monitor-memory.collection.js +0 -77
- package/collections/monitor-memory.collection.js.map +0 -1
- package/collections/monitor-mongo.collection.d.ts +0 -3
- package/collections/monitor-mongo.collection.js +0 -71
- package/collections/monitor-mongo.collection.js.map +0 -1
- package/collections/notification.collection.d.ts +0 -3
- package/collections/notification.collection.js +0 -57
- package/collections/notification.collection.js.map +0 -1
- package/collections/openai-usage-ledger.collection.d.ts +0 -2
- package/collections/openai-usage-ledger.collection.js +0 -188
- package/collections/openai-usage-ledger.collection.js.map +0 -1
- package/collections/report-builder-dashboard-builder.collection.d.ts +0 -3
- package/collections/report-builder-dashboard-builder.collection.js +0 -109
- package/collections/report-builder-dashboard-builder.collection.js.map +0 -1
- package/collections/report-builder-library.collection.d.ts +0 -3
- package/collections/report-builder-library.collection.js +0 -87
- package/collections/report-builder-library.collection.js.map +0 -1
- package/collections/report-builder-report.collection.d.ts +0 -4
- package/collections/report-builder-report.collection.js +0 -184
- package/collections/report-builder-report.collection.js.map +0 -1
- package/collections/user-group.collection.d.ts +0 -4
- package/collections/user-group.collection.js +0 -89
- package/collections/user-group.collection.js.map +0 -1
- package/collections/user-guide.collection.d.ts +0 -3
- package/collections/user-guide.collection.js +0 -57
- package/collections/user-guide.collection.js.map +0 -1
- package/collections/user.collection.d.ts +0 -4
- package/collections/user.collection.js +0 -180
- package/collections/user.collection.js.map +0 -1
- package/cron/cron.d.ts +0 -14
- package/cron/cron.js +0 -216
- package/cron/cron.js.map +0 -1
- package/fixtures/cron-jobs.d.ts +0 -1
- package/fixtures/cron-jobs.js +0 -150
- package/fixtures/cron-jobs.js.map +0 -1
- package/fixtures/init.d.ts +0 -1
- package/fixtures/init.js +0 -91
- package/fixtures/init.js.map +0 -1
- package/http/auth.d.ts +0 -2
- package/http/auth.js +0 -951
- package/http/auth.js.map +0 -1
- package/http/health.d.ts +0 -1
- package/http/health.js +0 -11
- package/http/health.js.map +0 -1
- package/http/home.d.ts +0 -1
- package/http/home.js +0 -134
- package/http/home.js.map +0 -1
- package/http/slow-query-publication.d.ts +0 -2
- package/http/slow-query-publication.js +0 -99
- package/http/slow-query-publication.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -19
- package/index.js.map +0 -1
- package/managers/ai-assistant-codex-manager.manager.d.ts +0 -67
- package/managers/ai-assistant-codex-manager.manager.js +0 -1113
- package/managers/ai-assistant-codex-manager.manager.js.map +0 -1
- package/managers/ai-run-evidence.manager.d.ts +0 -36
- package/managers/ai-run-evidence.manager.js +0 -377
- package/managers/ai-run-evidence.manager.js.map +0 -1
- package/managers/communication-metric.manager.d.ts +0 -16
- package/managers/communication-metric.manager.js +0 -134
- package/managers/communication-metric.manager.js.map +0 -1
- package/managers/cron.manager.d.ts +0 -20
- package/managers/cron.manager.js +0 -534
- package/managers/cron.manager.js.map +0 -1
- package/managers/customer-notification-content.manager.d.ts +0 -55
- package/managers/customer-notification-content.manager.js +0 -158
- package/managers/customer-notification-content.manager.js.map +0 -1
- package/managers/diagnostic-manager-bootstrap.d.ts +0 -9
- package/managers/diagnostic-manager-bootstrap.js +0 -260
- package/managers/diagnostic-manager-bootstrap.js.map +0 -1
- package/managers/error-auto-fix.manager.d.ts +0 -149
- package/managers/error-auto-fix.manager.js +0 -3064
- package/managers/error-auto-fix.manager.js.map +0 -1
- package/managers/local-log.manager.d.ts +0 -18
- package/managers/local-log.manager.js +0 -88
- package/managers/local-log.manager.js.map +0 -1
- package/managers/method.manager.d.ts +0 -84
- package/managers/method.manager.js +0 -1964
- package/managers/method.manager.js.map +0 -1
- package/managers/mongo.manager.d.ts +0 -224
- package/managers/mongo.manager.js +0 -5000
- package/managers/mongo.manager.js.map +0 -1
- package/managers/monitor.manager.d.ts +0 -70
- package/managers/monitor.manager.js +0 -550
- package/managers/monitor.manager.js.map +0 -1
- package/managers/openai-usage-ledger.manager.d.ts +0 -30
- package/managers/openai-usage-ledger.manager.js +0 -142
- package/managers/openai-usage-ledger.manager.js.map +0 -1
- package/managers/slow-query-verifier.manager.d.ts +0 -144
- package/managers/slow-query-verifier.manager.js +0 -3857
- package/managers/slow-query-verifier.manager.js.map +0 -1
- package/managers/slow-query.manager.d.ts +0 -28
- package/managers/slow-query.manager.js +0 -468
- package/managers/slow-query.manager.js.map +0 -1
- package/managers/subscription.manager.d.ts +0 -169
- package/managers/subscription.manager.js +0 -3434
- package/managers/subscription.manager.js.map +0 -1
- package/managers/websocket.manager.d.ts +0 -73
- package/managers/websocket.manager.js +0 -673
- package/managers/websocket.manager.js.map +0 -1
- package/managers/worker-dispatcher.manager.d.ts +0 -120
- package/managers/worker-dispatcher.manager.js +0 -1266
- package/managers/worker-dispatcher.manager.js.map +0 -1
- package/managers/worker-server.manager.d.ts +0 -35
- package/managers/worker-server.manager.js +0 -582
- package/managers/worker-server.manager.js.map +0 -1
- package/methods/accounts.d.ts +0 -2
- package/methods/accounts.js +0 -624
- package/methods/accounts.js.map +0 -1
- package/methods/ai-terminal.d.ts +0 -458
- package/methods/ai-terminal.js +0 -27991
- package/methods/ai-terminal.js.map +0 -1
- package/methods/app-settings.d.ts +0 -2
- package/methods/app-settings.js +0 -169
- package/methods/app-settings.js.map +0 -1
- package/methods/aws.d.ts +0 -2
- package/methods/aws.js +0 -877
- package/methods/aws.js.map +0 -1
- package/methods/collections.d.ts +0 -2
- package/methods/collections.js +0 -719
- package/methods/collections.js.map +0 -1
- package/methods/counters.d.ts +0 -2
- package/methods/counters.js +0 -113
- package/methods/counters.js.map +0 -1
- package/methods/cron-jobs.d.ts +0 -2
- package/methods/cron-jobs.js +0 -2475
- package/methods/cron-jobs.js.map +0 -1
- package/methods/customer-notifications.d.ts +0 -2
- package/methods/customer-notifications.js +0 -528
- package/methods/customer-notifications.js.map +0 -1
- package/methods/diagnostics.d.ts +0 -2
- package/methods/diagnostics.js +0 -703
- package/methods/diagnostics.js.map +0 -1
- package/methods/flag-updates.d.ts +0 -2
- package/methods/flag-updates.js +0 -8
- package/methods/flag-updates.js.map +0 -1
- package/methods/flags.d.ts +0 -2
- package/methods/flags.js +0 -8
- package/methods/flags.js.map +0 -1
- package/methods/logs.d.ts +0 -2
- package/methods/logs.js +0 -751
- package/methods/logs.js.map +0 -1
- package/methods/mongo-explorer.d.ts +0 -2
- package/methods/mongo-explorer.js +0 -1808
- package/methods/mongo-explorer.js.map +0 -1
- package/methods/monitor.d.ts +0 -2
- package/methods/monitor.js +0 -543
- package/methods/monitor.js.map +0 -1
- package/methods/pdf.d.ts +0 -2
- package/methods/pdf.js +0 -1216
- package/methods/pdf.js.map +0 -1
- package/methods/publications.d.ts +0 -1
- package/methods/publications.js +0 -183
- package/methods/publications.js.map +0 -1
- package/methods/report-builder.d.ts +0 -2
- package/methods/report-builder.js +0 -3094
- package/methods/report-builder.js.map +0 -1
- package/methods/support.d.ts +0 -2
- package/methods/support.js +0 -430
- package/methods/support.js.map +0 -1
- package/models/ai-run.model.d.ts +0 -19
- package/models/ai-run.model.js +0 -4
- package/models/ai-run.model.js.map +0 -1
- package/models/ai-terminal-conversation.model.d.ts +0 -17
- package/models/ai-terminal-conversation.model.js +0 -4
- package/models/ai-terminal-conversation.model.js.map +0 -1
- package/models/ai-terminal-issue-report.model.d.ts +0 -19
- package/models/ai-terminal-issue-report.model.js +0 -4
- package/models/ai-terminal-issue-report.model.js.map +0 -1
- package/models/ai-terminal-message.model.d.ts +0 -22
- package/models/ai-terminal-message.model.js +0 -4
- package/models/ai-terminal-message.model.js.map +0 -1
- package/models/app-setting.model.d.ts +0 -16
- package/models/app-setting.model.js +0 -4
- package/models/app-setting.model.js.map +0 -1
- package/models/app-status.model.js +0 -4
- package/models/app-status.model.js.map +0 -1
- package/models/billing-logged-in-users.model.js +0 -4
- package/models/billing-logged-in-users.model.js.map +0 -1
- package/models/collection-document.model.d.ts +0 -21
- package/models/collection-document.model.js +0 -4
- package/models/collection-document.model.js.map +0 -1
- package/models/communication-metric.model.d.ts +0 -20
- package/models/communication-metric.model.js +0 -4
- package/models/communication-metric.model.js.map +0 -1
- package/models/counter.model.js +0 -4
- package/models/counter.model.js.map +0 -1
- package/models/cron-job-history.model.d.ts +0 -15
- package/models/cron-job-history.model.js +0 -4
- package/models/cron-job-history.model.js.map +0 -1
- package/models/cron-job.model.d.ts +0 -14
- package/models/cron-job.model.js +0 -4
- package/models/cron-job.model.js.map +0 -1
- package/models/customer-notification.model.d.ts +0 -26
- package/models/customer-notification.model.js +0 -4
- package/models/customer-notification.model.js.map +0 -1
- package/models/customer-portal-password.model.d.ts +0 -11
- package/models/customer-portal-password.model.js +0 -4
- package/models/customer-portal-password.model.js.map +0 -1
- package/models/dialog.model.d.ts +0 -23
- package/models/dialog.model.js +0 -4
- package/models/dialog.model.js.map +0 -1
- package/models/email-history.model.d.ts +0 -32
- package/models/email-history.model.js.map +0 -1
- package/models/email-verified.model.js +0 -4
- package/models/email-verified.model.js.map +0 -1
- package/models/file.model.js +0 -4
- package/models/file.model.js.map +0 -1
- package/models/flag-update.model.js +0 -4
- package/models/flag-update.model.js.map +0 -1
- package/models/flag.model.js +0 -4
- package/models/flag.model.js.map +0 -1
- package/models/log-method-latency.model.d.ts +0 -10
- package/models/log-method-latency.model.js +0 -4
- package/models/log-method-latency.model.js.map +0 -1
- package/models/log-subscription.model.js +0 -4
- package/models/log-subscription.model.js.map +0 -1
- package/models/log.model.d.ts +0 -17
- package/models/log.model.js +0 -4
- package/models/log.model.js.map +0 -1
- package/models/logged-in-users.model.js +0 -4
- package/models/logged-in-users.model.js.map +0 -1
- package/models/method-response.model.js +0 -4
- package/models/method-response.model.js.map +0 -1
- package/models/method.model.d.ts +0 -26
- package/models/method.model.js +0 -4
- package/models/method.model.js.map +0 -1
- package/models/monitor-cpu.model.js +0 -4
- package/models/monitor-cpu.model.js.map +0 -1
- package/models/monitor-function.model.d.ts +0 -14
- package/models/monitor-function.model.js +0 -4
- package/models/monitor-function.model.js.map +0 -1
- package/models/monitor-memory.model.d.ts +0 -15
- package/models/monitor-memory.model.js +0 -4
- package/models/monitor-memory.model.js.map +0 -1
- package/models/monitor-mongo.model.d.ts +0 -13
- package/models/monitor-mongo.model.js +0 -4
- package/models/monitor-mongo.model.js.map +0 -1
- package/models/notification.model.js +0 -4
- package/models/notification.model.js.map +0 -1
- package/models/openai-usage-ledger.model.d.ts +0 -30
- package/models/openai-usage-ledger.model.js +0 -4
- package/models/openai-usage-ledger.model.js.map +0 -1
- package/models/pagination.model.d.ts +0 -11
- package/models/pagination.model.js +0 -28
- package/models/pagination.model.js.map +0 -1
- package/models/permission.model.d.ts +0 -12
- package/models/permission.model.js +0 -4
- package/models/permission.model.js.map +0 -1
- package/models/report-builder-dashboard-builder.model.d.ts +0 -25
- package/models/report-builder-dashboard-builder.model.js +0 -4
- package/models/report-builder-dashboard-builder.model.js.map +0 -1
- package/models/report-builder-library.model.d.ts +0 -17
- package/models/report-builder-library.model.js +0 -4
- package/models/report-builder-library.model.js.map +0 -1
- package/models/report-builder-report.model.d.ts +0 -121
- package/models/report-builder-report.model.js +0 -4
- package/models/report-builder-report.model.js.map +0 -1
- package/models/report-builder.model.d.ts +0 -61
- package/models/report-builder.model.js +0 -4
- package/models/report-builder.model.js.map +0 -1
- package/models/select-data-label.model.d.ts +0 -9
- package/models/select-data-label.model.js +0 -4
- package/models/select-data-label.model.js.map +0 -1
- package/models/server-message.model.d.ts +0 -32
- package/models/server-message.model.js +0 -4
- package/models/server-message.model.js.map +0 -1
- package/models/slow-query-report.model.d.ts +0 -23
- package/models/slow-query-report.model.js +0 -4
- package/models/slow-query-report.model.js.map +0 -1
- package/models/subscription.model.d.ts +0 -31
- package/models/subscription.model.js +0 -4
- package/models/subscription.model.js.map +0 -1
- package/models/support-ticket.model.d.ts +0 -87
- package/models/support-ticket.model.js +0 -4
- package/models/support-ticket.model.js.map +0 -1
- package/models/user-group.model.d.ts +0 -20
- package/models/user-group.model.js +0 -4
- package/models/user-group.model.js.map +0 -1
- package/models/user-guide.model.js +0 -4
- package/models/user-guide.model.js.map +0 -1
- package/models/user.model.d.ts +0 -84
- package/models/user.model.js +0 -4
- package/models/user.model.js.map +0 -1
- package/private/images/ResolveIO.png +0 -0
- package/public_api.js +0 -127
- package/public_api.js.map +0 -1
- package/publications/ai-terminal.d.ts +0 -1
- package/publications/ai-terminal.js +0 -122
- package/publications/ai-terminal.js.map +0 -1
- package/publications/app-settings.d.ts +0 -2
- package/publications/app-settings.js +0 -28
- package/publications/app-settings.js.map +0 -1
- package/publications/app-status.d.ts +0 -2
- package/publications/app-status.js +0 -16
- package/publications/app-status.js.map +0 -1
- package/publications/cron-jobs.d.ts +0 -2
- package/publications/cron-jobs.js +0 -88
- package/publications/cron-jobs.js.map +0 -1
- package/publications/customer-notifications.d.ts +0 -2
- package/publications/customer-notifications.js +0 -161
- package/publications/customer-notifications.js.map +0 -1
- package/publications/files.d.ts +0 -2
- package/publications/files.js +0 -36
- package/publications/files.js.map +0 -1
- package/publications/flags-update.d.ts +0 -2
- package/publications/flags-update.js +0 -22
- package/publications/flags-update.js.map +0 -1
- package/publications/flags.d.ts +0 -2
- package/publications/flags.js +0 -22
- package/publications/flags.js.map +0 -1
- package/publications/logs.d.ts +0 -2
- package/publications/logs.js +0 -164
- package/publications/logs.js.map +0 -1
- package/publications/notifications.d.ts +0 -2
- package/publications/notifications.js +0 -16
- package/publications/notifications.js.map +0 -1
- package/publications/report-builder-dashboard-builders.d.ts +0 -2
- package/publications/report-builder-dashboard-builders.js +0 -42
- package/publications/report-builder-dashboard-builders.js.map +0 -1
- package/publications/report-builder-libraries.d.ts +0 -2
- package/publications/report-builder-libraries.js +0 -90
- package/publications/report-builder-libraries.js.map +0 -1
- package/publications/report-builder-reports.d.ts +0 -2
- package/publications/report-builder-reports.js +0 -50
- package/publications/report-builder-reports.js.map +0 -1
- package/publications/super-admin.d.ts +0 -2
- package/publications/super-admin.js +0 -16
- package/publications/super-admin.js.map +0 -1
- package/publications/user-groups.d.ts +0 -1
- package/publications/user-groups.js +0 -16
- package/publications/user-groups.js.map +0 -1
- package/publications/user-guides.d.ts +0 -1
- package/publications/user-guides.js +0 -16
- package/publications/user-guides.js.map +0 -1
- package/resolveio-server-app.d.ts +0 -70
- package/resolveio-server-app.js +0 -801
- package/resolveio-server-app.js.map +0 -1
- package/server-app.d.ts +0 -228
- package/server-app.js +0 -3566
- package/server-app.js.map +0 -1
- package/services/codex-client.d.ts +0 -128
- package/services/codex-client.js +0 -1629
- package/services/codex-client.js.map +0 -1
- package/services/openai-client.d.ts +0 -46
- package/services/openai-client.js +0 -318
- package/services/openai-client.js.map +0 -1
- package/types/error-report.d.ts +0 -25
- package/types/error-report.js +0 -4
- package/types/error-report.js.map +0 -1
- package/types/slow-query-report.d.ts +0 -27
- package/types/slow-query-report.js +0 -6
- package/types/slow-query-report.js.map +0 -1
- package/util/ai-qa-policy.d.ts +0 -124
- package/util/ai-qa-policy.js +0 -736
- package/util/ai-qa-policy.js.map +0 -1
- package/util/ai-run-evidence-adapters.d.ts +0 -109
- package/util/ai-run-evidence-adapters.js +0 -7234
- package/util/ai-run-evidence-adapters.js.map +0 -1
- package/util/ai-run-evidence-dashboard.d.ts +0 -88
- package/util/ai-run-evidence-dashboard.js +0 -343
- package/util/ai-run-evidence-dashboard.js.map +0 -1
- package/util/ai-run-evidence-eval.d.ts +0 -86
- package/util/ai-run-evidence-eval.js +0 -1018
- package/util/ai-run-evidence-eval.js.map +0 -1
- package/util/ai-run-evidence.d.ts +0 -244
- package/util/ai-run-evidence.js +0 -1096
- package/util/ai-run-evidence.js.map +0 -1
- package/util/ai-runner-artifacts.d.ts +0 -82
- package/util/ai-runner-artifacts.js +0 -713
- package/util/ai-runner-artifacts.js.map +0 -1
- package/util/ai-runner-manager-autopilot.d.ts +0 -210
- package/util/ai-runner-manager-autopilot.js +0 -642
- package/util/ai-runner-manager-autopilot.js.map +0 -1
- package/util/ai-runner-manager-policy.d.ts +0 -807
- package/util/ai-runner-manager-policy.js +0 -3501
- package/util/ai-runner-manager-policy.js.map +0 -1
- package/util/ai-runner-qa-auth.d.ts +0 -5
- package/util/ai-runner-qa-auth.js +0 -839
- package/util/ai-runner-qa-auth.js.map +0 -1
- package/util/ai-runner-qa-tools.d.ts +0 -26
- package/util/ai-runner-qa-tools.js +0 -3520
- package/util/ai-runner-qa-tools.js.map +0 -1
- package/util/aicoder-runner-v6.d.ts +0 -426
- package/util/aicoder-runner-v6.js +0 -2464
- package/util/aicoder-runner-v6.js.map +0 -1
- package/util/common.d.ts +0 -31
- package/util/common.js +0 -683
- package/util/common.js.map +0 -1
- package/util/customer-portal-password.d.ts +0 -13
- package/util/customer-portal-password.js +0 -209
- package/util/customer-portal-password.js.map +0 -1
- package/util/error-reporter.d.ts +0 -52
- package/util/error-reporter.js +0 -326
- package/util/error-reporter.js.map +0 -1
- package/util/error-tracking.d.ts +0 -13
- package/util/error-tracking.js +0 -120
- package/util/error-tracking.js.map +0 -1
- package/util/openai-usage-cost.d.ts +0 -6
- package/util/openai-usage-cost.js +0 -103
- package/util/openai-usage-cost.js.map +0 -1
- package/util/report-builder-unwinds.d.ts +0 -15
- package/util/report-builder-unwinds.js +0 -156
- package/util/report-builder-unwinds.js.map +0 -1
- package/util/runner-process-janitor.d.ts +0 -27
- package/util/runner-process-janitor.js +0 -208
- package/util/runner-process-janitor.js.map +0 -1
- package/util/schema-report-builder.d.ts +0 -6
- package/util/schema-report-builder.js +0 -481
- package/util/schema-report-builder.js.map +0 -1
- package/util/slow-query-reporter.d.ts +0 -28
- package/util/slow-query-reporter.js +0 -226
- package/util/slow-query-reporter.js.map +0 -1
- package/util/subscription-dependency-context.d.ts +0 -34
- package/util/subscription-dependency-context.js +0 -1283
- package/util/subscription-dependency-context.js.map +0 -1
- package/util/support-runner-v5.d.ts +0 -1426
- package/util/support-runner-v5.js +0 -7624
- package/util/support-runner-v5.js.map +0 -1
- package/util/tokenizer.d.ts +0 -5
- package/util/tokenizer.js +0 -41
- package/util/tokenizer.js.map +0 -1
- package/workers/codex-runner.worker.d.ts +0 -1
- package/workers/codex-runner.worker.js +0 -192
- package/workers/codex-runner.worker.js.map +0 -1
- /package/{private → src/private}/email-templates/enrollment.html +0 -0
- /package/{private → src/private}/email-templates/forgot-password.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-deleted.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket-modified.html +0 -0
- /package/{private → src/private}/email-templates/support-ticket.html +0 -0
- /package/{public_api.d.ts → src/public_api.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/subscription.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sCAAwC;AACxC,qCAAwC;AACxC,8BAAgC;AAChC,kEAAuD;AACvD,wFAA0E;AAI1E,yDAAuE;AACvE,6DAA2E;AAC3E,2DAAyE;AACzE,uDAAoE;AACpE,iFAA8F;AAC9F,+CAA6D;AAC7D,+CAA8D;AAC9D,6DAA2E;AAC3E,6CAA2D;AAC3D,+DAA6E;AAC7E,uGAAkH;AAClH,qFAAgG;AAChG,iFAA6F;AAC7F,2DAAyE;AACzE,2DAAwE;AACxE,2DAAwE;AACxE,gEAA0D;AAC1D,yCAAoE;AACpE,yDAAuD;AACvD,yDAAoE;AACpE,2FAA0K;AAG1K,IAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,SAAS,qBAAqB;IAC7B,IAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACrC,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,CAAC;AACV,CAAC;AAmCD,wCAAwC;AACxC,gBAAgB;AAChB,qBAAqB;AACrB,wBAAwB;AACxB,4BAA4B;AAC5B,qBAAqB;AACrB,mBAAmB;AACnB,qBAAqB;AACrB,mBAAmB;AACnB,IAAI;AAEJ;IAqFC;QAnFQ,kBAAa,GAAsB,EAAE,CAAC;QACtC,mBAAc,GAA8B,EAAE,CAAC;QAE/C,mBAAc,GAAwB,EAAE,CAAC;QACzC,uBAAkB,GAAG,IAAI,GAAG,EAA6C,CAAC;QAE1E,gBAAW,GAAsB,EAAE,CAAC;QACpC,kBAAa,GAAG,CAAC,CAAC;QAGlB,eAAU,GAAuC,MAAM,CAAC;QACxD,mBAAc,GAAG,KAAK,CAAC;QACvB,gCAA2B,GAAG,CAAC,CAAC;QAChC,2BAAsB,GAAmB,IAAI,CAAC;QAG9C,aAAQ,GAAG,CAAC,CAAC;QAEb,cAAS,GAAG,qBAAqB,EAAE,CAAC;QAOpC,iBAAY,GAAG,KAAK,CAAC;QACrB,2BAAsB,GAAG,KAAK,CAAC;QAC/B,kBAAa,GAAG,KAAK,CAAC;QACtB,2BAAsB,GAAG,EAAE,CAAC;QAC5B,oBAAe,GAAG,CAAC,CAAC;QACpB,yBAAoB,GAAG,EAAE,CAAC;QAC1B,kBAAa,GAAG,CAAC,CAAC;QAClB,oBAAe,GAAG,CAAC,CAAC;QACpB,uBAAkB,GAAG,CAAC,CAAC;QACvB,yBAAoB,GAAG,CAAC,CAAC;QACzB,gCAA2B,GAAG,EAAE,CAAC;QACjC,wBAAmB,GAAG,CAAC,CAAC;QACxB,0BAAqB,GAAG,CAAC,CAAC;QAC1B,kBAAa,GAAG,KAAK,CAAC;QACtB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,2BAAsB,GAAG,CAAC,CAAC;QAC3B,qBAAgB,GAAG,CAAC,CAAC;QACrB,0BAAqB,GAAG,CAAC,CAAC;QAC1B,mBAAc,GAAG,KAAK,CAAC;QACvB,yBAAoB,GAAG,KAAK,CAAC;QAC7B,iBAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,qBAAgB,GAAG,CAAC,CAAC;QACrB,qBAAgB,GAAgB,IAAI,CAAC;QACrC,2BAAsB,GAAG,CAAC,CAAC;QAC3B,4BAAuB,GAAkB,IAAI,CAAC;QAC9C,iCAA4B,GAAG,KAAK,CAAC;QACrC,uBAAkB,GAAkB,IAAI,CAAC;QAChC,4BAAuB,GAAG,oCAAoC,CAAC;QAC/D,kCAA6B,GAAG,IAAI,CAAC;QACrC,2CAAsC,GAAG,CAAC,CAAC;QAE5D,4DAA4D;QACpD,kBAAa,GAAG,IAAI,GAAG,EAAiD,CAAC;QACzE,4BAAuB,GAAG,KAAK,CAAC;QAChC,yBAAoB,GAAG,KAAK,CAAC;QAErC,+CAA+C;QAC9B,4BAAuB,GAAG,KAAK,CAAC;QAEjD,wEAAwE;QACvD,gCAA2B,GAAG,KAAK,CAAC;QACpC,+BAA0B,GAAG,IAAI,CAAC;QAClC,mCAA8B,GAAG,GAAG,CAAC;QAEtD,sEAAsE;QACtE,qCAAqC;QACrC,6BAA6B;QAErB,gCAA2B,GAAG,IAAI,GAAG,EAA0B,CAAC;QAChE,mCAA8B,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3D,0BAAqB,GAAG,IAAI,GAAG,EAAuD,CAAC;QAC9E,mBAAc,GAAG,GAAG,CAAC,CAAC,wBAAwB;QAC9C,kBAAa,GAAG,GAAG,CAAC,CAAE,sBAAsB;QAErD,iCAA4B,GAAG,CAAC,CAAC;IAG1B,CAAC;IAET,6CAAyB,GAAhC,UAAiC,YAAa;QAC7C,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtD,mBAAmB,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;QAChE,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAEM,0BAAM,GAAb,UAAc,GAAqB,EAAE,YAAY,EAAE,sBAA8C;QAAjG,iBAMC;QALA,IAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtD,YAAY,CAAC;;;4BACZ,qBAAM,mBAAmB,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,sBAAsB,CAAC,EAAA;;wBAA/E,SAA+E,CAAC;;;;aAChF,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IAEO,2DAA6B,GAArC,UAAsC,YAAY;QACjD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,CAAC;QACtE,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACjC,CAAC;IAEa,wCAAU,GAAxB,UAAyB,GAAqB,EAAE,YAAY,EAAE,sBAA8C;;;;;;;wBAC3G,IAAI,CAAC,iBAAiB,GAAG,sCAAe,CAAC,aAAa,EAAE,CAAC,mBAAmB,EAAE,CAAC;wBAC/E,IAAI,CAAC,uBAAuB,GAAG,sBAAsB,CAAC;wBAEtD,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAE,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAE,CAAC;wBAEjE,WAAW,CAAC,cAAM,OAAA,KAAI,CAAC,4BAA4B,EAAE,EAAnC,CAAmC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;wBAErF,qBAAqB;wBACrB,iDAAiD;wBAEjD,+FAA+F;wBAE/F,+CAA+C;wBAC/C,wEAAwE;wBACxE,OAAO;wBAEP,gDAAgD;wBAChD,6EAA6E;wBAC7E,OAAO;wBACP,YAAY;wBAEZ,sBAAsB;wBACtB,mCAAmC;wBACnC,sEAAsE;wBACtE,uCAAuC;wBACvC,aAAa;wBAEb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;wBACjC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;wBAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;wBAC1D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;wBAClE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBACtD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;wBAChE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACjF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;wBAE9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC1C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;wBAE5E,IAAI,CAAC,wBAAwB,EAAE,CAAC;6BAE5B,CAAA,IAAI,CAAC,UAAU,KAAK,OAAO,CAAA,EAA3B,wBAA2B;wBAC9B,qBAAM,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAA;;wBAA7C,SAA6C,CAAC;;4BAG1B,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA1C,WAAW,GAAG,SAA4B;wBAChD,qBAAM,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;;;wBAGhD,WAAW,CAAC;4BACX,KAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;wBAC3B,CAAC,EAAE,KAAK,CAAC,CAAC;wBAEV,WAAW,CAAC;4BACX,IAAI,KAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gCAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gCACtF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gCAC/E,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAI,CAAC,oBAAoB,CAAC,CAAC;gCACtF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAtF,CAAsF,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gCACpO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,KAAI,CAAC,eAAe,CAAC,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAxE,CAAwE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC3M,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAI,CAAC,mBAAmB,CAAC,CAAC;gCACpF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,KAAI,CAAC,aAAa,CAAC,CAAC;gCACvE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAA1C,CAA0C,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gCACzK,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,KAAI,CAAC,eAAe,CAAC,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAI,CAAC,kBAAkB,CAAC,CAAC;gCAClF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAI,CAAC,qBAAqB,CAAC,CAAC;4BAC1F,CAAC;4BAED,KAAI,CAAC,eAAe,GAAG,CAAC,CAAC;4BACzB,KAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;4BACjC,KAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;4BAC/B,KAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;4BAC9B,KAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;4BACtC,KAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;4BAC7B,KAAI,CAAC,aAAa,GAAG,CAAC,CAAC;4BACvB,KAAI,CAAC,eAAe,GAAG,CAAC,CAAC;4BACzB,KAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;4BAC5B,KAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;wBAChC,CAAC,EAAE,KAAK,CAAC,CAAC;wBAEV,WAAW,CAAC;;;;;wCACX,KAAA,IAAI,CAAA;wCAAkB,qBAAM,0CAAa,CAAC,IAAI,EAAE,EAAA;;wCAAhD,GAAK,cAAc,GAAG,SAA0B,CAAC;wCAE7C,QAAQ,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC;4DACpC,CAAC;;;;;wDACL,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;6DAE3B,CAAA,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAA,EAAvE,wBAAuE;6DACtE,OAAK,iBAAiB,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,EAAvD,wBAAuD;wDAC1D,IAAI,OAAK,cAAc,EAAE,EAAE,CAAC;4DAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAK,iBAAiB,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,OAAK,iBAAiB,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;wDAC9L,CAAC;wDACD,qBAAM,OAAK,cAAc,CAAC,OAAK,iBAAiB,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAA;;wDAAlF,SAAkF,CAAC;;;wDAGnF,OAAK,cAAc,CAAC,OAAO,CAAC,UAAA,GAAG;4DAC9B,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gEAClD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gEAE5B,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;oEAC7C,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gEAC1B,CAAC;4DACF,CAAC;wDACF,CAAC,CAAC,CAAC;wDAEH,qBAAM,0CAAa,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,YAAY,CAAC,GAAG,EAAC,CAAC,EAAA;;wDAAtD,SAAsD,CAAC;wDAEvD,IAAI,OAAK,cAAc,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,EAA1B,CAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;4DACzE,OAAK,cAAc,CAAC,MAAM,CAAC,OAAK,cAAc,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,EAA1B,CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;wDAC/F,CAAC;;;;;;;wCAzBK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;;;6CAAE,CAAA,CAAC,IAAI,CAAC,CAAA;sEAA1C,CAAC;;;;;wCAA2C,CAAC,EAAE,CAAA;;;wCA8BxD,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4CACjD,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gEAExB,CAAC;gDACT,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gDAE5B,IAAI,CAAC,OAAK,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,SAAS,EAA5B,CAA4B,CAAC,EAAE,CAAC;oDAClE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gDAC1B,CAAC;;;4CALF,KAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;wDAAvC,CAAC;6CAMT;wCACF,CAAC;;;;6BACD,EAAE,KAAK,CAAC,CAAC;wBAEC,qBAAM,uBAAK,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,EAAA;;wBAAlD,IAAI,GAAG,SAA2C;wBACjC,qBAAM,uBAAK,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,yBAAyB,EAAC,CAAC,EAAA;;wBAAvE,cAAc,GAAG,SAAsD;wBAE3E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBAC1B,CAAC;6BACI,CAAC;4BACL,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC3B,CAAC;wBAED,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;4BAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;wBACpC,CAAC;6BACI,CAAC;4BACL,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;wBAC9E,CAAC;wBAED,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;;;;;KACnC;IAEO,sDAAwB,GAAhC;QACC,IAAA,wCAA0B,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,wCAA0B,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC;QAChC,IAAA,0CAA2B,EAAC,IAAI,CAAC,CAAC;QAClC,IAAA,0BAAmB,EAAC,IAAI,CAAC,CAAC;QAC1B,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QAC3B,IAAA,mCAAuB,EAAC,IAAI,CAAC,CAAC;QAC9B,IAAA,0CAA2B,EAAC,IAAI,CAAC,CAAC;QAClC,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;QAC5B,IAAA,4CAA4B,EAAC,IAAI,CAAC,CAAC;QACnC,IAAA,6DAAoC,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAA,4DAAmC,EAAC,IAAI,CAAC,CAAC;QAC1C,IAAA,+DAAoC,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAA,uCAAyB,EAAC,IAAI,CAAC,CAAC;QAChC,IAAA,uCAAyB,EAAC,IAAI,CAAC,CAAC;QAChC,IAAA,iFAA6C,EAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,2CAAa,GAArB;QACC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACxC,CAAC;aACI,CAAC;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,6BAA6B;QACtE,CAAC;IACF,CAAC;IAEO,yDAA2B,GAAnC;;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACpJ,CAAC;IAEO,0CAAY,GAApB,UAAqB,KAAU;QAC9B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,KAAK,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,yCAAW,GAAnB,UAAoB,KAAa,EAAE,GAAW,EAAE,GAAW;QAC1D,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEY,iDAAmB,GAAhC,UAAiC,UAAkB,EAAE,IAAY,EAAE,UAAgB,EAAE,QAAc;;;;;;;wBAC9F,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;4BACZ,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;4BACvB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;wBACnD,CAAC;wBACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,MAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBAE5C,WAAW,GAAG,UAAU,CAAC;wBACzB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAGjB,qBAAqB,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;wBAC1F,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;wBAE5E,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;4BACvD,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;wBACjE,CAAC;wBAGK,aAAa,GAAG,CAAC,GAAG,GAAG,qBAAqB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;6BAEtE,aAAa,EAAb,wBAAa;wBAChB,2BAA2B;wBAC3B,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBACxD,qBAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAA;;wBAA3C,SAA2C,CAAC;;;wBAE5C,uBAAuB;wBACvB,IAAI,CAAC,2BAA2B,CAAC,GAAG,CACnC,WAAW,EACX,UAAU,CAAC;;;;wCACV,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wCACxD,qBAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAA;;wCAA3C,SAA2C,CAAC;;;;6BAC5C,EAAE,IAAI,CAAC,cAAc,CAAC,CACvB,CAAC;;;;;;KAEH;IAEa,kDAAoB,GAAlC,UAAmC,UAAkB;;;;;;;;wBACpD,0CAA0C;wBAC1C,IAAI,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4BACtD,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;4BAC/D,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBACrD,CAAC;wBAEK,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC1D,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBAE9C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;4BACtC,sBAAO;wBACR,CAAC;wBAEK,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;wBAE7B,8BAA8B;wBAC9B,sCAAe,CAAC,eAAe,EAAE,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBAEnE,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,gCAAgC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAtD,CAAsD,CAAC,CAAC;;;;wBAEzF,aAAA,SAAA,QAAQ,CAAA;;;;wBAAf,GAAG;wBACb,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACvF,CAAC;wBAEK,qBAAM,IAAI,CAAC,qCAAqC,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAA;;wBAA/E,IAAI,CAAC,CAAC,SAAyE,CAAC,EAAE,CAAC;4BAClF,yBAAS;wBACV,CAAC;wBAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACjB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACpB,IAAI,CAAC,eAAe,CAAC,qCAAqC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BAChJ,yBAAS;wBACV,CAAC;wBAEK,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,EAAV,CAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BAE/F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,aAAa,EAAjD,yBAAiD;wBACpD,IAAI,CAAC,eAAe,CAAC,uCAAuC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;;;;wBAChK,oBAAA,SAAA,GAAG,CAAC,OAAO,CAAA,CAAA;;;;wBAArB,MAAM;wBACR,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;6BAC7D,CAAA,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,MAAK,SAAS,CAAC,IAAI,CAAA,EAAjC,wBAAiC;;;;wBAEnC,qBAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAA;;wBAAnF,SAAmF,CAAC;;;;;;;;;;;;;;;;;;;;;wBASvF,IAAI,CAAC,eAAe,CAAC,mCAAmC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;wBAC/K,qBAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAA;;wBAA7D,SAA6D,CAAC;;;;;;;;;;;;;;;;;;;;KAGhE;IAEO,8DAAgC,GAAxC,UAAyC,GAA4B,EAAE,UAAkB;;QACxF,IAAI,MAAA,GAAG,CAAC,WAAW,0CAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAErC,IAAM,aAAa,GAAG,MAAA,GAAG,CAAC,sBAAsB,0CAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAM,OAAO,GAAG,MAAA,GAAG,CAAC,iBAAiB,0CAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,MAAA,GAAG,CAAC,mBAAmB,0CAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEa,mCAAK,GAAnB,UAAoB,EAAU;;;gBAC7B,gDAAgD;gBAChD,sBAAO,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAvB,CAAuB,CAAC,EAAC;;;KACvD;IAEO,8CAAgB,GAAxB,UAAyB,WAAgB;QACxC,IAAI,WAAW,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAClE,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACxE,IAAM,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,EAAa,EAAE,YAAoB,EAAE,WAAgB;QAChF,IAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACzD,IAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,SAAS,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,+CAA+C,EAAE;gBACrE,QAAQ,UAAA;gBACR,YAAY,cAAA;gBACZ,aAAa,eAAA;gBACb,SAAS,EAAE,SAAS,CAAC,KAAK;gBAC1B,eAAe,EAAE,SAAS,CAAC,MAAM;aACjC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACtF,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,4DAA8B,GAAtC;QACC,IAAM,UAAU,GAAG,sCAAe,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,UAAU,IAAI,OAAO,UAAU,CAAC,0BAA0B,KAAK,UAAU;YAC/E,CAAC,CAAC,UAAU,CAAC,0BAA0B,EAAE;YACzC,CAAC,CAAC,IAAI,CAAC;IACT,CAAC;IAEO,yDAA2B,GAAnC;QACC,IAAM,UAAU,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACzD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/G,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,4BAA4B,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBAC9D,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEa,qDAAuB,GAArC,UAAsC,GAA4B,EAAE,MAAe;;;;;;wBAClF,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;4BACzC,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAEK,UAAU,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;wBACzD,IAAI,CAAC,UAAU,EAAE,CAAC;4BACjB,sBAAO,IAAI,EAAC;wBACb,CAAC;;;;wBAGiB,qBAAM,UAAU,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;gCAC1E,GAAG,CAAC,WAAW;gCACf,GAAG,CAAC,gBAAgB;gCACpB,MAAM;6BACN,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACjC,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,KAAI,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;wBACjE,CAAC;wBAED,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;4BAC5B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;wBAC5D,CAAC;wBAEK,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;wBAC3B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,+DAA6B,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBAE1F,sBAAO;gCACN,YAAY,EAAE,QAAQ,CAAC,YAAY;gCACnC,QAAQ,UAAA;gCACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS;gCACzD,UAAU,EAAE,IAAI;6BAChB,EAAC;;;wBAGF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,yCAAyC,EAAE,GAAG,CAAC,WAAW,EAAE,CAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,KAAI,OAAK,CAAC,CAAC;wBAC7H,CAAC;wBACD,sBAAO,IAAI,EAAC;;;;;KAEb;IAEa,mDAAqB,GAAnC,UAAoC,GAA4B,EAAE,MAAe;;;;;;wBAC1E,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBAChD,IAAI,CAAC,GAAG,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,iCAA0B,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC;wBAC9D,CAAC;wBAEK,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;wBACjE,QAAQ,GAAuB;4BACpC,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;yBACtC,CAAC;6BAEgB,GAAG,CAAC,aAAa,EAAjB,wBAAiB;wBAChC,qBAAM,IAAA,wDAAsB,EAAC;;gCAAM,OAAA,CAAA,KAAA,GAAG,CAAC,QAAQ,CAAA,CAAC,IAAI,0BAAC,OAAO,EAAE,MAAM,IAAI,EAAE,UAAK,GAAG,CAAC,gBAAgB;4BAAhE,CAAiE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC,EAAA;;wBAA9I,KAAA,SAA8I,CAAA;;4BAC9I,qBAAM,IAAA,wDAAsB,EAAC;;4BAAM,OAAA,CAAA,KAAA,GAAG,CAAC,QAAQ,CAAA,CAAC,IAAI,0BAAC,OAAO,UAAK,GAAG,CAAC,gBAAgB;wBAAlD,CAAmD,EAAE,QAAQ,CAAC,EAAA;;wBAAjG,KAAA,SAAiG,CAAA;;;wBAF9F,SAAS,KAEqF;wBAEpG,sBAAO;gCACN,MAAM,EAAE,SAAS,CAAC,MAAM;gCACxB,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;gCACrD,QAAQ,EAAE,SAAS,CAAC,QAAQ;gCAC5B,QAAQ,EAAE,SAAS;gCACnB,UAAU,EAAE,KAAK;6BACjB,EAAC;;;;KACF;IAEa,qDAAuB,GAArC,UAAsC,GAA4B,EAAE,MAAe;;;;;;wBAC5E,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBAChD,IAAI,CAAC,GAAG,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,iCAA0B,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC;wBAC9D,CAAC;wBAEK,eAAe,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;wBACvC,qBAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,eAAe,CAAC,EAAA;;wBAA1E,eAAe,GAAG,SAAwD;wBAChF,IAAI,eAAe,EAAE,CAAC;4BACrB,sBAAO,eAAe,EAAC;wBACxB,CAAC;wBAED,sBAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,eAAe,CAAC,EAAC;;;;KACxD;IAEa,oDAAsB,GAApC,UAAqC,GAA4B,EAAE,UAAkB,EAAE,IAAY;;;;;wBAClG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;;;wBAGlB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,2BAA2B,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;wBACvE,CAAC;wBAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACrB,qBAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAA;;wBAA/C,SAA+C,CAAC;wBAEhD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAClF,CAAC;6BAEG,GAAG,CAAC,QAAQ,EAAZ,wBAAY;wBACf,qBAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAArB,SAAqB,CAAC,CAAC,0BAA0B;;;4BAE1C,GAAG,CAAC,QAAQ;;;wBAErB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;;;;;KACpB;IAEa,oDAAsB,GAApC,UAAqC,EAAa,EAAE,SAAiB,EAAE,GAA4B,EAAE,UAAkB,EAAE,IAAY;;;;;wBACpI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;;;wBAGlB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,2BAA2B,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;wBACvE,CAAC;wBAED,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACrB,qBAAM,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAA;;wBAA9D,SAA8D,CAAC;wBAE/D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAClF,CAAC;6BAEG,GAAG,CAAC,QAAQ,EAAZ,wBAAY;wBACf,qBAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAA;;wBAArB,SAAqB,CAAC,CAAC,0BAA0B;;;4BAE1C,GAAG,CAAC,QAAQ;;;wBACrB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;;;;;KACpB;IAED,+CAA+C;IACxC,0CAAY,GAAnB,UAAoB,MAAyB;QAC5C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAEM,4CAAc,GAArB,UAAsB,WAAmB;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAEM,6CAAe,GAAtB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,qCAAqC;IAC9B,6CAAe,GAAtB,UAAuB,EAAa;QACnC,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjC,IAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,QAAQ,EAApB,CAAoB,CAAC,CAAC;QAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEvD,kGAAkG;QAClG,IACC,CAAC,aAAa;YACd,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,2BAA2B,CAAC;YACxF,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAE,yCAAyC;UAC9F,CAAC;YACF,8BAA8B;YAC9B,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAED,mDAAmD;IACrC,0DAA4B,GAA1C;;;;;;;;wBACC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;4BAAE,sBAAO,CAAC,sBAAsB;wBACjE,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;4BACjC,sBAAO;wBACR,CAAC;wBAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;wBAE9B,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;wBAChE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;wBACrB,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,UAAC,EAAgC;gCAAhC,KAAA,aAAgC,EAA/B,KAAK,QAAA,EAAE,UAAuB,EAArB,OAAO,aAAA,EAAE,UAAU,gBAAA;4BAAQ,OAAA,CAAC;gCACzE,SAAS,EAAE;oCACV,MAAM,EAAE,EAAE,KAAK,OAAA,EAAE;oCACjB,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,SAAA,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;iCAC/C;6BACD,CAAC;wBALuE,CAKvE,CAAC,CAAC;;;;wBAGH,qBAAM,0CAAa,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAA;;wBAA1D,SAA0D,CAAC;wBAE3D,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;4BAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,2CAA2C,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;wBACrG,CAAC;;;;;4BAGD,KAA+B,mBAAA,SAAA,cAAc,CAAA,wHAAE,CAAC;gCAArC,KAAA,mCAAgB,EAAf,KAAK,QAAA,EAAE,OAAO,QAAA;gCACnB,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gCAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;oCACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gCACxC,CAAC;4BACF,CAAC;;;;;;;;;wBACD,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,uCAAuC,EAAE,OAAK,CAAC,CAAC;;;wBAIzF,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;wBACrC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC/B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;4BAClC,YAAY,CAAC,cAAM,OAAA,KAAI,CAAC,4BAA4B,EAAE,EAAnC,CAAmC,CAAC,CAAC;wBACzD,CAAC;;;;;;KAEF;IAED,2BAA2B;IACd,uCAAS,GAAtB,UAAuB,YAAoB,EAAE,WAAiB,EAAE,EAAa,EAAE,SAAiB,EAAE,WAAmB,EAAE,gBAAuB;;;;;;;;wBAC7I,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;wBACxB,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE;4BACtC,WAAW,aAAA;4BACX,YAAY,cAAA;4BACZ,SAAS,WAAA;4BACT,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;4BACtC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;4BAC5B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBACnE,CAAC,CAAC;wBAEH,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,WAAW,EAA7B,CAA6B,CAAC,EAAE,CAAC;4BACzE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gCAC9B,WAAW,EAAE,WAAW;gCACxB,IAAI,EAAE,CAAC;6BACP,CAAC,CAAC;wBACJ,CAAC;6BACI,CAAC;4BACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,WAAW,EAA7B,CAA6B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;wBAC9E,CAAC;wBAEG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;6BAEtC,CAAC,GAAG,EAAJ,wBAAI;wBACP,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,kBAAkB,GAAG,WAAW,CAAC,CAAC;wBAC5D,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,WAAW,aAAA,EAAE,YAAY,cAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;wBACnF,sBAAO;;wBAGP,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gCAChB,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,4BAA4B,GAAG,WAAW,CAAC,CAAC;gCACtE,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,EAAE,WAAW,aAAA,EAAE,YAAY,cAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;gCAC7F,sBAAO;4BACR,CAAC;iCACI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gCAC7B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,0BAA0B,GAAG,WAAW,CAAC,CAAC;gCACpE,IAAI,CAAC,YAAY,CAAC,sCAAsC,EAAE,EAAE,WAAW,aAAA,EAAE,YAAY,cAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;gCACpG,sBAAO;4BACR,CAAC;iCACI,CAAC;gCACD,MAAM,GAAG,EAAE,CAAC;gCACZ,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCAEzC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAC;gCAErD,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gCAC3C,CAAC;gCAED,IAAI,CAAC;oCACJ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gCAC5B,CAAC;gCACD,OAAO,MAAM,EAAE,CAAC;oCACf,IAAI,MAAM,EAAE,CAAC;wCACZ,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,sBAAsB,GAAG,WAAW,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;wCAC9E,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE;4CAC7C,WAAW,aAAA;4CACX,YAAY,cAAA;4CACZ,SAAS,WAAA;4CACT,IAAI,EAAE,gBAAgB,CAAC,MAAM;4CAC7B,MAAM,QAAA;4CACN,KAAK,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,KAAI,MAAM;yCAChC,CAAC,CAAC;wCACH,sBAAO;oCACR,CAAC;gCACF,CAAC;4BACF,CAAC;wBACF,CAAC;wBAEK,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;wBAClF,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACzE,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAClC,cAAY,EAAE,CAAC;4BACf,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BAEzB,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gCACvB,WAAS,GAAG,GAAG,CAAC;gCAChB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BACtB,CAAC;4BAED,WAAS,IAAI,OAAO,CAAC;4BAErB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACxB,WAAS,IAAI,GAAG,CAAC;4BAClB,CAAC;4BAEG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,KAAK,GAAG,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,WAAS,CAAC,EAApK,CAAoK,CAAC,EAAzL,CAAyL,CAAC,CAAC;4BAEhP,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gCAC3B,8WAA8W;gCAE9W,cAAc,CAAC,OAAO,CAAC,UAAA,QAAQ;oCAC9B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,EAA/B,CAA+B,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;wCAC3E,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oCAC1H,CAAC,CAAC,CAAC;gCACJ,CAAC,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;wBAEK,0BAA0B,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrF,oBAAkB,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;wBAC/D,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,iBAAe,EAAtE,CAAsE,CAAC,CAAC;wBAC1G,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;wBACpD,SAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACnC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAE3C,yEAAyE;wBACzE,IAAI,GAAG,EAAE,CAAC;4BACT,IAAI,eAAe,IAAI,MAAI,EAAE,CAAC;gCACvB,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,MAAI,EAApB,CAAoB,CAAC,CAAC;gCACvE,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;oCAClB,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oCAClD,KAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wCAClD,IAAI,CAAC,KAAK,aAAa,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,MAAI,EAAE,CAAC;4CAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wCAC1B,CAAC;oCACF,CAAC;oCACD,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC;oCAClC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;oCACrC,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;gCAC5C,CAAC;qCACI,CAAC;oCACL,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wCAChB,OAAO,EAAE,QAAQ;wCACjB,SAAS,EAAE,SAAS;wCACpB,SAAS,EAAE,MAAI;wCACf,YAAY,EAAE,YAAY;qCAC1B,CAAC,CAAC;gCACJ,CAAC;4BACF,CAAC;iCACI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAA5D,CAA4D,CAAC,EAAE,CAAC;gCAC/F,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oCAChB,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;oCACtB,SAAS,EAAE,SAAS;oCACpB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;oCAC1B,YAAY,EAAE,YAAY;iCAC1B,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;wBACD,mCAAmC;6BAC9B,CAAC;4BACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gCACxB,WAAW,EAAE,WAAW;gCACxB,eAAe,EAAE,iBAAe;gCAChC,gBAAgB,EAAE,0BAA0B;gCAC5C,WAAW,EAAE,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;gCACxD,OAAO,EAAE,CAAC;wCACT,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;wCACtB,SAAS,EAAE,SAAS;wCACpB,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;wCAC1B,YAAY,EAAE,YAAY;qCAC1B,CAAC;gCACH,OAAO,EAAE,CAAC;gCACV,OAAO,EAAE,KAAK;gCACd,QAAQ,EAAE,KAAK;gCACf,sBAAsB,EAAE,IAAI,GAAG,EAAE;gCACjC,iBAAiB,EAAE,IAAI,GAAG,EAAE;gCAC5B,mBAAmB,EAAE,IAAI,GAAG,EAAE;gCAC9B,mBAAmB,EAAE,IAAI,GAAG,EAAE;6BAC9B,CAAC,CAAC;wBACJ,CAAC;wBAEA,IAAI,CAAC,GAAG,EAAE,CAAC;4BACV,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,iBAAe,EAAtE,CAAsE,CAAC,CAAC;wBAC7G,CAAC;wBACD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;4BAClC,WAAW,aAAA;4BACX,eAAe,mBAAA;4BACf,SAAS,WAAA;4BACT,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;4BACtC,YAAY,cAAA;4BACZ,OAAO,EAAE,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,MAAM,KAAI,CAAC;4BAClC,gBAAgB,EAAE,0BAA0B;yBAC5C,CAAC,CAAC;wBAEH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBACpG,CAAC;wBAED,0CAA0C;wBAC1C,qBAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,EAAA;;wBADlD,0CAA0C;wBAC1C,SAAkD,CAAC;;;;;;KAEpD;IAEY,gDAAkB,GAA/B,UAAgC,KAAa;;;;;;wBACxC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;6BAEhD,EAAE,EAAF,wBAAE;wBACD,IAAI,GAAG;4BACV,GAAG,EAAE,IAAA,0BAAiB,GAAE;4BACxB,GAAG,EAAE,CAAC;4BACN,IAAI,EAAE,IAAI,IAAI,EAAE;4BAChB,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC;4BACtB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC;4BAChB,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC;yBACtB,CAAC;wBAEF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/B,qBAAM,0CAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBAAnC,SAAmC,CAAC;wBAEpC,sBAAO,IAAI,EAAC;4BAGZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;;;;KAE1D;IAED,gCAAgC;IACzB,yCAAW,GAAlB,UAAmB,YAAoB,EAAE,WAAiB,EAAE,EAAa,EAAE,SAAiB,EAAE,WAAmB,EAAE,gBAAuB;QACzI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,WAAW,CAAC,CAAC;YAC9C,OAAO;QACR,CAAC;aACI,CAAC;YACL,IAAM,0BAA0B,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,IAAM,iBAAe,GAAG,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACnE,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,iBAAe,EAAtE,CAAsE,CAAC,CAAC;YAEhH,IAAI,GAAG,EAAE,CAAC;gBACT,IAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC1D,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,IAAI,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;wBACrE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,CAAC;yBACI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC7I,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,CAAC;gBACF,CAAC;gBAED,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;oBACpC,WAAW,aAAA;oBACX,eAAe,mBAAA;oBACf,SAAS,WAAA;oBACT,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;oBACtC,YAAY,cAAA;oBACZ,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;oBAC3B,gBAAgB,EAAE,0BAA0B;iBAC5C,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClG,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAGD,+BAA+B;IAClB,4CAAc,GAA3B,UAA4B,EAAa;;;;;;wBACxC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;6BAEzB,EAAE,EAAF,wBAAE;wBACL,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;4BACrB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;wBACjD,CAAC;wBAED,mDAAmD;wBACnD,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;4BAC1B,sBAAO,CAAC,+BAA+B;wBACxC,CAAC;wBAED,8DAA8D;wBAC9D,EAAE,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;wBAE5B,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;4BACzE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC/F,CAAC;wBAED,qBAAM,0CAAa,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAA;;wBAAzD,SAAyD,CAAC;wBAEtD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,EAA9D,CAA8D,CAAC,EAAnF,CAAmF,CAAC,CAAC;wBAEpI,KAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC3C,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAEtB,KAAS,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gCAClD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;oCAClD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gCAC1B,CAAC;4BACF,CAAC;wBACF,CAAC;wBAED,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;;;;;;KAE5C;IAEM,oDAAsB,GAA7B;QACC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,6BAA6B;IACrB,uDAAyB,GAAjC,UAAkC,WAAmB;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;IACpD,CAAC;IAEO,iDAAmB,GAA3B;QACC,IAAM,YAAY,GAAG,sCAAe,CAAC,eAAe,EAAE,CAAC;QACvD,IAAM,gBAAgB,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,mBAAmB,EAAE,KAAI,EAAE,CAAC;QAEnE,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO,gBAAgB,CAAC;QACzB,CAAC;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,CAAC;QACtE,IAAM,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1F,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IAEO,8CAAgB,GAAxB;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QAEvI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC;QACf,CAAC;QAED,IAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChF,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACpG,OAAO,eAAe,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,+DAAiC,GAAzC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB;eAC5C,OAAO,CAAC,GAAG,CAAC,4BAA4B;eACxC,MAAM,CAAC,0BAA0B,CAAC;eAClC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,wDAA0B,GAAlC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B;eACjD,OAAO,CAAC,GAAG,CAAC,0CAA0C;eACtD,MAAM,CAAC,+BAA+B,CAAC;eACvC,MAAM,CAAC,4CAA4C,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,iDAAmB,GAA3B;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;eACpC,OAAO,CAAC,GAAG,CAAC,aAAa;eACzB,MAAM,CAAC,kBAAkB,CAAC;eAC1B,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,iDAAmB,GAA3B;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc;eAClC,OAAO,CAAC,GAAG,CAAC,uBAAuB;eACnC,MAAM,CAAC,gBAAgB,CAAC;eACxB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,sDAAwB,GAAhC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB;eACxC,OAAO,CAAC,GAAG,CAAC,6BAA6B;eACzC,MAAM,CAAC,sBAAsB,CAAC;eAC9B,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAE5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,0DAA4B,GAApC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB;eAC7C,OAAO,CAAC,GAAG,CAAC,kCAAkC;eAC9C,MAAM,CAAC,2BAA2B,CAAC;eACnC,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,oDAAsB,GAA9B;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB;eACtC,OAAO,CAAC,GAAG,CAAC,2BAA2B;eACvC,MAAM,CAAC,oBAAoB,CAAC;eAC5B,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,yDAA2B,GAAnC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB;eAC5C,OAAO,CAAC,GAAG,CAAC,iCAAiC;eAC7C,MAAM,CAAC,0BAA0B,CAAC;eAClC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9D,CAAC;IAEO,wDAA0B,GAAlC;QACC,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,sCAAe,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB;eAC1C,OAAO,CAAC,GAAG,CAAC,qBAAqB;eACjC,MAAM,CAAC,wBAAwB,CAAC;eAChC,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAGO,4CAAc,GAAtB,UAAuB,KAAU;QAChC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,KAAK,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,KAAU;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACtD,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,MAAM,CAAC;YACf,CAAC;QACF,CAAC;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAEO,6CAAe,GAAvB,UAAwB,KAAU,EAAE,QAAgB;QACnD,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,MAAM,CAAC;QACf,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,8CAAgB,GAAxB,UAAyB,UAAkB,EAAE,YAA2B;QACvE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,UAAU,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjG,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,wCAAU,GAAlB,UAAmB,GAA4B,EAAE,OAA+G;QAC/J,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACtE,OAAO;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YACpD,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;SAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6CAAe,GAAvB,UAAwB,WAAmB;QAC1C,OAAO,WAAW,KAAK,oBAAoB,IAAI,WAAW,KAAK,yBAAyB,CAAC;IAC1F,CAAC;IAEO,0CAAY,GAApB,UAAqB,OAYpB;;QACA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC;YACnE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,KAAK;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oDAAsB,GAA9B,UAA+B,KAAsB,EAAE,OAQtD;QACA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAChC,OAAO;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QACD,IAAM,IAAI,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QAC5C,IAAM,GAAG,GAAG,UAAG,KAAK,cAAI,IAAI,cAAI,OAAO,CAAC,WAAW,cAAI,OAAO,CAAC,eAAe,CAAE,CAAC;QACjF,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,yBAAkB,KAAK,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC;YACjE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,SAAA;YACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,0CAAY,GAApB,UAAqB,OAAe,EAAE,OAAiC;QACtE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,CAAC;aACI,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,KAAU;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACtD,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,MAAM,CAAC;YACf,CAAC;QACF,CAAC;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAEO,uDAAyB,GAAjC,UAAkC,KAAU;QAC3C,IAAM,IAAI,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,IAAM,QAAQ,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,IAAM,OAAO,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3F,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,kDAAoB,GAA5B,UAA6B,KAAU;QACtC,IAAM,IAAI,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,IAAM,QAAQ,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,IAAM,OAAO,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtF,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClB,0BAA0B;YAC1B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC3B,EAAE,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,4DAA8B,GAAtC,UAAuC,KAAU;QAChD,IAAM,IAAI,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,IAAM,QAAQ,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,IAAM,OAAO,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEa,sDAAwB,GAAtC,UAAuC,MAAc,EAAE,KAAW;;;;;;;wBACjE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACzB,sBAAO;wBACR,CAAC;wBAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;wBAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;6BAEtB,CAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,EAApC,wBAAoC;;;;wBAEtC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBAClC,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;;;;;;wBAK5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;;wBAGf,OAAO,GAAG,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,WAAI,OAAO,MAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAEzF,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;wBAE/C,IAAI,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAC1E,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC;gCACzC,KAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;4BAC7C,CAAC,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;wBACtC,CAAC;;;;;KACD;IAEM,8CAAgB,GAAvB;QACC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAEY,kDAAoB,GAAjC,UAAkC,MAAc;;;;;;wBAC/C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACzB,IAAI,CAAC,eAAe,CAAC,0BAAmB,MAAM,CAAE,CAAC,CAAC;4BAClD,sBAAO;wBACR,CAAC;;;;wBAGoB,KAAA,IAAI,CAAC,gBAAgB,CAAA;gCAArB,wBAAqB;wBAAI,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;8BAA5B,SAA4B;;;wBAAnE,WAAW,KAAwD;wBACzE,qBAAM,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;;;;wBAG/C,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,2CAA2C,EAAE,MAAM,EAAE,OAAK,CAAC,CAAC;;;wBAGpG,IAAI,CAAC,eAAe,CAAC,0BAAmB,MAAM,CAAE,CAAC,CAAC;;;;;KAClD;IAEM,8CAAgB,GAAvB,UAAwB,UAAkB,EAAE,IAAe;QAA3D,iBAaC;QAb2C,qBAAA,EAAA,eAAe;QAC1D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,YAAY,CAAC;;;;;;wBAEX,qBAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,EAAA;;wBAAhD,SAAgD,CAAC;;;;;;;;aAKlD,CAAC,CAAC;IACJ,CAAC;IAEO,iDAAmB,GAA3B;QACC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACnC,OAAO,gBAAS,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAE,CAAC;QACjD,CAAC;QAED,8EAA8E;QAC9E,OAAO,gBAAS,OAAO,CAAC,GAAG,CAAE,CAAC;IAC/B,CAAC;IAEa,6CAAe,GAA7B;;;;;;;;wBAEQ,OAAK,sCAAe,CAAC,SAAS,EAAE,CAAC;wBACvC,IAAI,CAAC,IAAE,EAAE,CAAC;4BACT,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAEK,SAAS,GAAG;;;;;wCACX,UAAU,GAAG,IAAE,CAAC,UAAU,CAA2B,IAAI,CAAC,uBAAuB,CAAC,CAAC;wCAC7E,qBAAM,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAA;;wCAAnE,GAAG,GAAG,SAA6D;wCACnE,KAAK,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,KAAI,IAAI,CAAC;wCAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;4CACZ,sBAAO,IAAI,EAAC;wCACb,CAAC;wCAEK,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;6CAC/C,CAAA,QAAQ,GAAG,CAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,aAAY,IAAI,CAAA,EAA9C,wBAA8C;wCAC3C,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;6CAC/C,CAAA,KAAK,GAAG,QAAQ,CAAA,EAAhB,wBAAgB;wCACnB,qBAAM,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAA;;wCAA/D,SAA+D,CAAC;wCAChE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,gCAAgC,EAAE,IAAA,cAAK,EAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;wCACnG,sBAAO,IAAI,EAAC;4CAId,sBAAO,KAAK,EAAC;;;6BACb,CAAC;wBAEI,YAAY,GAAG,sCAAe,CAAC,eAAe,EAAE,CAAC;6BAChD,YAAY,EAAZ,wBAAY;wBAAG,qBAAM,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAA;;wBAA/C,KAAA,SAA+C,CAAA;;4BAAG,qBAAM,SAAS,EAAE,EAAA;;wBAAjB,KAAA,SAAiB,CAAA;;4BAAzF,0BAA0F;;;wBAG1F,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,mCAAmC,EAAE,OAAK,CAAC,CAAC;wBACnF,sBAAO,IAAI,EAAC;;;;;KAEb;IAEa,6CAAe,GAA7B,UAA8B,KAAkB;;;;;;;wBAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;4BACZ,sBAAO;wBACR,CAAC;;;;wBAGM,OAAK,sCAAe,CAAC,SAAS,EAAE,CAAC;wBACvC,IAAI,CAAC,IAAE,EAAE,CAAC;4BACT,sBAAO;wBACR,CAAC;wBAEK,SAAS,GAAG;;;4CACjB,qBAAM,IAAE,CAAC,UAAU,CAA2B,IAAI,CAAC,uBAAuB,CAAC,CAAC,SAAS,CACpF,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,EACnC,EAAE,IAAI,EAAE,EAAE,KAAK,OAAA,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAC1C,EAAE,MAAM,EAAE,IAAI,EAAE,CAChB,EAAA;;wCAJD,SAIC,CAAC;;;;6BACF,CAAC;wBAEI,YAAY,GAAG,sCAAe,CAAC,eAAe,EAAE,CAAC;6BACnD,YAAY,EAAZ,wBAAY;wBACf,qBAAM,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAA;;wBAA/C,SAA+C,CAAC;;4BAGhD,qBAAM,SAAS,EAAE,EAAA;;wBAAjB,SAAiB,CAAC;;;;;wBAInB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,sCAAsC,EAAE,OAAK,CAAC,CAAC;;;;;;KAEvF;IAEa,8CAAgB,GAA9B;;;;;;;;wBAEQ,OAAK,sCAAe,CAAC,SAAS,EAAE,CAAC;wBACvC,IAAI,CAAC,IAAE,EAAE,CAAC;4BACT,sBAAO;wBACR,CAAC;wBAEK,UAAU,GAAG;;;4CAClB,qBAAM,IAAE,CAAC,UAAU,CAA2B,IAAI,CAAC,uBAAuB,CAAC;6CACzE,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAA;;wCADhD,SACgD,CAAC;;;;6BACjD,CAAC;wBAEI,YAAY,GAAG,sCAAe,CAAC,eAAe,EAAE,CAAC;6BACnD,YAAY,EAAZ,wBAAY;wBACf,qBAAM,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAA;;wBAAhD,SAAgD,CAAC;;4BAGjD,qBAAM,UAAU,EAAE,EAAA;;wBAAlB,SAAkB,CAAC;;;;;wBAIpB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,oCAAoC,EAAE,OAAK,CAAC,CAAC;;;;;;KAErF;IAEO,kDAAoB,GAA5B,UAA6B,KAAkB,EAAE,OAA6B;QAA9E,iBAoCC;QAnCA,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO;QACR,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAM,UAAU,GAAG,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,CAAC,6BAA6B,CAAC;QAEjH,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;YAC3C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YAC1C,CAAC;YACD,OAAO;QACR,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;QAClC,IAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE1C,IAAI,CAAC,uBAAuB,GAAG,CAAC;;;;;wBAE9B,qBAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAA;;wBAAvC,SAAuC,CAAC;;;wBAGxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;wBACpC,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;4BACvC,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;4BAC1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBACnE,CAAC;;;;;aAEF,CAAC,EAAE,CAAC;IACN,CAAC;IAEO,6CAAe,GAAvB,UAAwB,MAAc;QAAtC,iBAaC;QAZA,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO;QACR,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,CAAC;;;;;wBAEzB,qBAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;wBAG3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;;;;aAEhC,CAAC,EAAE,CAAC;IACN,CAAC;IAEa,qDAAuB,GAArC,UAAsC,MAAc;;;;;;;;;wBAElD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wBACxG,CAAC;wBAED,IAAI,CAAC;4BACJ,MAAA,MAAA,sCAAe,CAAC,eAAe,EAAE,0CAAE,eAAe,mDAAG,MAAM,CAAC,CAAC;wBAC9D,CAAC;wBACD,WAAM,CAAC;4BACN,4BAA4B;wBAC7B,CAAC;wBAED,IAAI,CAAC;4BACJ,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,kDAAI,CAAC;wBAC/B,CAAC;wBACD,WAAM,CAAC;4BACN,4BAA4B;wBAC7B,CAAC;wBAEK,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;;;;wBAEvB,SAAA,SAAA,IAAI,CAAA;;;;wBAAX,GAAG;wBACb,IAAI,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,MAAM,CAAA,EAAE,CAAC;4BAC3B,yBAAS;wBACV,CAAC;wBAEK,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBAChD,IAAI,CAAC,GAAG,EAAE,CAAC;4BACV,yBAAS;wBACV,CAAC;wBAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACjB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACpB,yBAAS;wBACV,CAAC;6BAEG,GAAG,CAAC,aAAa,EAAjB,yBAAiB;;;;wBACC,oBAAA,SAAA,GAAG,CAAC,OAAO,CAAA,CAAA;;;;wBAArB,MAAM;wBACV,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;6BAC7D,CAAA,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,MAAK,SAAS,CAAC,IAAI,CAAA,EAAjC,wBAAiC;;;;wBAEnC,qBAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAA;;wBAAxE,SAAwE,CAAC;;;;;;;;;;;;;;;;;;;;6BAS5E,qBAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAA;;wBAAlD,SAAkD,CAAC;;;;;;;;;;;;;;;;;;;wBAKrD,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAK,CAAC,CAAC;;;;;;KAE7E;IAED,kHAAkH;IACpG,uCAAS,GAAvB,UAAwB,WAAyB;;;;;;;wBAChD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACzB,sBAAO;wBACR,CAAC;6BAEG,CAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,EAApC,wBAAoC;wBACvC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBAClC,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;wBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;;oBAGrB,gDAAgD;oBAChD,qBAAM,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAzB,CAAyB,CAAC,EAAA;;wBADvD,gDAAgD;wBAChD,SAAuD,CAAC;6BAEpD,CAAA,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,EAApC,yBAAoC;wBACvC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;wBAE3B,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,KAAK,CAAC,4GAA4G,CAAC,CAAC;4BAC5H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACjB,CAAC;wBAEK,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC5C,QAAQ,GAAG;4BAChB;gCACC,MAAM,EAAE;oCACP,IAAI,yCACA,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wCACxE,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE;oDACnB,sBAAsB;oDACtB,mBAAmB;oDACnB,MAAM;oDACN,UAAU;oDACV,oBAAoB;oDACpB,iBAAiB;oDACjB,2BAA2B;oDAC3B,2BAA2B;oDAC3B,kBAAkB;oDAClB,iBAAiB;oDACjB,IAAI,CAAC,uBAAuB;iDAC5B,EAAE,EAAC;wCACJ,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAC;wCACtC,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAC;6CAClC;iCACD;6BACD;yBACA,CAAC;wBAGE,2BAAyB,KAAK,CAAC;wBAC/B,mBAAiB,KAAK,CAAC;wBACvB,2BAAyB,KAAK,CAAC;wBAC7B,sBAAoB,IAAI,CAAC,GAAG,EAAE,CAAC;6BAEjC,WAAW,EAAX,yBAAW;wBACd,iBAAe,GAAG,WAAW,CAAC;;;;wBAE7B,IAAI,CAAC,OAAO,GAAG,sCAAe,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;wBAChI,wBAAsB,GAAG,IAAI,CAAC;;;;6BAG1B,IAAI,CAAC,yBAAyB,CAAC,OAAK,CAAC,EAArC,wBAAqC;wBACxC,qBAAM,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,OAAK,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;wBACxE,sBAAO;;6BAEJ,IAAI,CAAC,8BAA8B,CAAC,OAAK,CAAC,EAA1C,yBAA0C;wBAC7C,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAC9B,iBAAe,GAAG,IAAI,CAAC;wBACvB,IAAI,CAAC,eAAe,CAAC,wCAAwC,CAAC,CAAC;wBAC/D,qBAAM,IAAI,CAAC,wBAAwB,CAAC,kCAAkC,EAAE,OAAK,CAAC,EAAA;;wBAA9E,SAA8E,CAAC;wBAC/E,sBAAO;;6BAGJ,IAAI,CAAC,OAAO,EAAZ,yBAAY;wBACf,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBAClC,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wBAA1B,SAA0B,CAAC;wBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;6BAGrB,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wBAA7B,SAA6B,CAAC;wBAC9B,iBAAe,GAAG,IAAI,CAAC;wBAEvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,0CAA0C,EAAE,OAAK,CAAC,CAAC;;;;wBAG1E,IAAI,CAAC,OAAO,GAAG,sCAAe,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;wBACtG,wBAAsB,GAAG,KAAK,CAAC;;;;6BAG3B,IAAI,CAAC,yBAAyB,CAAC,YAAU,CAAC,EAA1C,yBAA0C;wBAC7C,qBAAM,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,YAAU,CAAC,EAAA;;wBAA5E,SAA4E,CAAC;wBAC7E,sBAAO;6BAGR,MAAM,YAAU,CAAC;;wBAGlB,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;;;;;wBAKhD,IAAI,CAAC,OAAO,GAAG,sCAAe,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;;;;6BAGlG,IAAI,CAAC,yBAAyB,CAAC,OAAK,CAAC,EAArC,yBAAqC;wBACxC,qBAAM,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,OAAK,CAAC,EAAA;;wBAAvE,SAAuE,CAAC;wBACxE,sBAAO;;6BAEJ,IAAI,CAAC,8BAA8B,CAAC,OAAK,CAAC,EAA1C,yBAA0C;wBAC7C,qBAAM,IAAI,CAAC,wBAAwB,CAAC,kCAAkC,EAAE,OAAK,CAAC,EAAA;;wBAA9E,SAA8E,CAAC;wBAC/E,sBAAO;6BAGR,MAAM,OAAK,CAAC;;wBAIf,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,eAAe,EAAE,wBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAEzF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAO,GAAuH;;;;;wCACvJ,gBAAc,GAAG,IAAI,CAAC;wCACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;6CAEtB,GAAG,CAAC,EAAE,EAAN,yBAAM;wCACT,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4CACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;wCAC9C,CAAC;wCAEG,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;wCAE7B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,aAAa,EAA5D,CAA4D,CAAC,EAAE,CAAC;4CAC1G,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gDAChC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI;gDACvB,IAAI,EAAE,GAAG,CAAC,aAAa;gDACvB,IAAI,EAAE,CAAC;6CACP,CAAC,CAAC;wCACJ,CAAC;6CACI,CAAC;4CACL,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,aAAa,EAA5D,CAA4D,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;wCAC/G,CAAC;6CAEG,UAAU,EAAV,yBAAU;wCACb,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;wCACpB,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;wCACnC,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;6CAE9K,CAAA,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAA,EAA9B,wBAA8B;6CAC7B,CAAA,UAAU,KAAK,iBAAiB,CAAA,EAAhC,wBAAgC;6CAC/B,CAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,uBAAuB,CAAA,EAAzD,wBAAyD;wCAC5D,qBAAM,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,EAAE,wBAAwB,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAA;;wCAA9K,SAA8K,CAAC;wCAC/K,qBAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,EAAA;;wCAAzE,SAAyE,CAAC;;;6CAIxE,CAAA,UAAU,KAAK,kBAAkB,CAAA,EAAjC,wBAAiC;wCACpC,qBAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,EAAA;;wCAAzE,SAAyE,CAAC;;;;6CAGnE,CAAA,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,CAAA,EAAjE,wBAAiE;6CACrE,CAAA,UAAU,KAAK,kBAAkB,CAAA,EAAjC,wBAAiC;wCACpC,qBAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,EAAA;;wCAAzE,SAAyE,CAAC;;;;6CAGnE,CAAA,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAA,EAA9B,yBAA8B;6CAClC,CAAA,UAAU,KAAK,kBAAkB,CAAA,EAAjC,yBAAiC;wCACpC,qBAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAA;;wCAA3D,SAA2D,CAAC;;;6CAK3D,CAAA,UAAU,KAAK,OAAO,CAAA,EAAtB,yBAAsB;wCACd,qBAAM,uBAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAA;;wCAApD,IAAI,GAAG,SAA6C;wCACnC,qBAAM,uBAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,EAAA;;wCAAzE,cAAc,GAAG,SAAwD;wCAE7E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4CACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wCAC1B,CAAC;6CACI,CAAC;4CACL,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wCAC3B,CAAC;wCAED,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;4CAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;wCACpC,CAAC;6CACI,CAAC;4CACL,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;wCAC9E,CAAC;;;wCAGD,iBAAe,GAAG,GAAG,CAAC,GAAG,CAAC;wCAC1B,IAAI,CAAC,oBAAoB,CAAC,iBAAe,CAAC,CAAC;wCAE3C,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;wCAEnN,CAAC;;;;;6BAEH,CAAC,CAAC;wBAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAM,KAAK;;;;wCACnC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;6CAC1C,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAArC,wBAAqC;wCACxC,qBAAM,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,KAAK,CAAC,EAAA;;wCAAvE,SAAuE,CAAC;wCACxE,sBAAO;;6CAEJ,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAA1C,wBAA0C;wCAC7C,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wCAA7B,SAA6B,CAAC;wCAC9B,iBAAe,GAAG,IAAI,CAAC;wCACvB,IAAI,CAAC,eAAe,CAAC,wCAAwC,CAAC,CAAC;wCAC/D,qBAAM,IAAI,CAAC,wBAAwB,CAAC,kCAAkC,EAAE,KAAK,CAAC,EAAA;;wCAA9E,SAA8E,CAAC;wCAC/E,sBAAO;;6CAGJ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAhC,wBAAgC;wCACnC,wBAAsB,GAAG,IAAI,CAAC;wCAC9B,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wCAA7B,SAA6B,CAAC;wCAC9B,iBAAe,GAAG,IAAI,CAAC;wCACvB,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;;4CAGpD,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wCAA1B,SAA0B,CAAC;;;;6BAC3B,CAAC,CAAC;wBAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;;;;wCACtB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;wCACrC,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAA;;wCAA1B,SAA0B,CAAC;;;;6BAC3B,CAAC,CAAC;wBAEF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;;;;;wCACxB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;wCACjC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,sCAAsC,CAAC;wCAC7F,yBAAyB,GAAG,wBAAsB;+CACpD,CAAC,CAAC,iBAAe;+CACjB,CAAC,gBAAc;+CACf,CAAC,wBAAsB,IAAI,qBAAqB,CAAC,CAAC;6CAElD,yBAAyB,EAAzB,wBAAyB;wCAC5B,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wCAA7B,SAA6B,CAAC;wCAC9B,iBAAe,GAAG,IAAI,CAAC;wCACvB,IAAI,CAAC,wBAAsB,EAAE,CAAC;4CAC7B,IAAI,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC;wCACtD,CAAC;wCACD,OAAO,CAAC,GAAG,CACV,IAAI,IAAI,EAAE,EACV,aAAa,EACb,sCAAsC,EACtC,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAiB,EAAE,CACvF,CAAC;;;wCAGH,IAAI,iBAAe,EAAE,CAAC;4CACrB,IAAI,CAAC,oBAAoB,CAAC,iBAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC7D,CAAC;wCACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;wCAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wCACpB,qBAAM,IAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,EAAA;;wCAArC,SAAqC,CAAC;;;;6BACtC,CAAC,CAAC;;;;;;KAEL;IAEO,8CAAgB,GAAxB,UAAyB,IAAS;QACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC;YACJ,IAAM,MAAM,GAAG,IAAA,eAAI,EAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,GAAG,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,GAAQ;QAClC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACJ,OAAO,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,GAAG,EAAE,CAAC;gBACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,GAAG,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACJ,OAAO,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,GAAG,EAAE,CAAC;gBACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,GAAG,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC;gBACJ,OAAO,IAAA,iBAAM,EAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,GAAG,EAAE,CAAC;gBACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,GAAG,CAAC,CAAC;gBAC5E,CAAC;gBACD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,+EAA+E;QAC/E,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,4CAAc,GAAtB,UAAuB,GAAQ;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,GAA4B,EAAE,OAAmC;QAC3F,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAvB,CAAuB,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAxB,CAAwB,CAAC,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,0CAAY,GAApB,UAAqB,CAA6B,EAAE,CAA6B;QAChF,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAM,QAAQ,GAAG,UAAC,KAA0B;YAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACd,CAAC;YACD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;YAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,IAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAkB,CAAC,CAAC;IACxC,CAAC;IAEa,iDAAmB,GAAjC,UAAkC,GAA4B,EAAE,EAAa,EAAE,SAAiB;;;;;;6BAC3F,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,aAAa,EAAlD,wBAAkD;6BACjD,GAAG,CAAC,OAAO,EAAX,wBAAW;;;;wBAEP,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC7C,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBAEnD,IAAI,YAAY,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;4BAC7C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gCACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,6BAA6B,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;4BACzE,CAAC;4BAED,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;4BACvF,IAAI,CAAC,YAAY,CAAC;gCACjB,WAAW,EAAE,GAAG,CAAC,WAAW;gCAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;gCACpC,SAAS,WAAA;gCACT,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;gCAC1B,OAAO,EAAE,CAAC;gCACV,YAAY,EAAE,YAAY,CAAC,UAAU;gCACrC,MAAM,EAAE,IAAI;gCACZ,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,EAAE;gCACd,IAAI,EAAE,OAAO;gCACb,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;6BACtC,CAAC,CAAC;wBACJ,CAAC;6BACI,CAAC;4BACC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;4BACrD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gCACnD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;4BAChC,CAAC;4BAEG,SAAS,GAAwB;gCACpC,SAAS,EAAE,SAAS;gCACpB,QAAQ,EAAE,KAAK;gCACf,IAAI,EAAE,SAAS;6BACf,CAAC;4BAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gCACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,oBAAoB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;4BAChE,CAAC;4BAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;4BAC3B,IAAI,CAAC,YAAY,CAAC;gCACjB,WAAW,EAAE,GAAG,CAAC,WAAW;gCAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;gCACpC,SAAS,WAAA;gCACT,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;gCAC1B,OAAO,EAAE,CAAC;gCACV,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gCAC7E,MAAM,EAAE,KAAK;gCACb,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,EAAE;gCACd,IAAI,EAAE,OAAO;gCACb,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;6BACtC,CAAC,CAAC;wBACJ,CAAC;;;;wBAGD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACjC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wBAEhB,qBAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAA;;wBAApD,SAAoD,CAAC;;;;wBAItD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,0BAA0B,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACnF,CAAC;wBAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACjB,sBAAO;wBACR,CAAC;wBAED,qBAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAA;;wBAApD,SAAoD,CAAC;;;;wBAItD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,mCAAmC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBAC5F,CAAC;wBAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACjB,sBAAO;wBACR,CAAC;wBAED,qBAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAA;;wBAAnE,SAAmE,CAAC;;;;;;KAErE;IAEa,2CAAa,GAA3B,UAA4B,EAAa,EAAE,SAAiB,EAAE,GAA4B,EAAE,UAAkB,EAAE,IAAY;;;;;;;wBAC3H,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;4BAC7C,sBAAO;wBACR,CAAC;wBAEG,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;;;;wBAI3I,qBAAM,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAA;;wBAA9N,SAA8N,CAAC;wBAE7M,qBAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAA;;wBAAlE,SAAS,GAAG,SAAsD;wBACxE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;wBACvB,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC;wBACxC,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;wBACvD,SAAS,GAAG,MAAA,SAAS,CAAC,YAAY,mCAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACjE,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;wBAE7D,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;4BAC5B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACtC,EAAE,EACF,SAAS,EACT,KAAK,EACL,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,QAAQ,IAAI,SAAS,EAC/B,EAAE,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CACvC,CAAC;wBACH,CAAC;6BACI,CAAC;4BACD,SAAS,GAAwB;gCACpC,SAAS,EAAE,SAAS;gCACpB,QAAQ,EAAE,KAAK;gCACf,IAAI,EAAE,GAAG;6BACT,CAAC;4BAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;wBAC5B,CAAC;wBACD,IAAI,CAAC,YAAY,CAAC;4BACjB,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;4BACpC,SAAS,WAAA;4BACT,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;4BAC1B,OAAO,EAAE,CAAC;4BACV,YAAY,cAAA;4BACZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY;4BAChC,QAAQ,EAAE,KAAK;4BACf,UAAU,YAAA;4BACV,IAAI,MAAA;4BACJ,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;yBACtC,CAAC,CAAC;;;;wBAGG,KAA4C,IAAA,2CAA0B,EAAC,KAAG,CAAC,EAAlE,eAAe,WAAA,EAAE,aAAa,mBAAA,CAAqC;wBAE9E,SAAS,GAAwB;4BACpC,SAAS,EAAE,SAAS;4BACpB,QAAQ,EAAE,IAAI;4BACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,aAAa,eAAA,EAAE,CAAC;yBAC3D,CAAC;wBAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;wBAErB,YAAY,GAAG;4BACpB,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;4BACtC,IAAI,MAAA;4BACJ,UAAU,YAAA;4BACV,SAAS,WAAA;4BACT,aAAa,eAAA;4BACb,KAAK,EAAE;gCACN,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI;gCAC3B,OAAO,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO;gCACjC,KAAK,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK;gCAC7B,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI;gCAC3B,QAAQ,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ;6BACnC;yBACD,CAAC;wBAEF,qBAAM,8BAAa,CAAC,MAAM,CAAC;gCAC1B,SAAS,EAAE,sBAAsB;gCACjC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gCACxE,WAAW,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ;gCACxC,UAAU,EAAE,sCAAe,CAAC,aAAa,EAAE;gCAC3C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gCAC5C,KAAK,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK;gCAC7B,OAAO,EAAE,YAAY;gCACrB,QAAQ,EAAE;oCACT,OAAO,EAAE,4BAA4B;oCACrC,WAAW,EAAE,GAAG,CAAC,WAAW;oCAC5B,aAAa,eAAA;iCACb;gCACD,aAAa,eAAA;6BACb,CAAC,EAAA;;wBAdF,SAcE,CAAC;;4BAGH,qBAAM,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAA;;wBAAjE,SAAiE,CAAC;;;;;;KAEnE;IAED,yDAAyD;IAC3C,2CAAa,GAA3B,UAA4B,GAA4B,EAAE,UAAkB,EAAE,IAAY;;;;;;;;wBACnF,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBAC9D,IAAI,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzC,gBAAc,IAAI,GAAG,EAAU,CAAC;4BACtC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM;gCACtC,IAAI,aAAW,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oCACvC,OAAO,KAAK,CAAC;gCACd,CAAC;gCACD,aAAW,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gCAClC,OAAO,IAAI,CAAC;4BACb,CAAC,CAAC,CAAC;wBACJ,CAAC;wBACK,aAAa,GAA+D,EAAE,CAAC;wBACrF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;;gCACxB,KAAqB,KAAA,SAAA,GAAG,CAAC,OAAO,CAAA,4CAAE,CAAC;oCAAxB,MAAM;oCACV,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oCACjE,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;wCAC5C,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,QAAA,EAAE,EAAE,IAAA,EAAE,CAAC,CAAC;oCACpC,CAAC;gCACF,CAAC;;;;;;;;;wBACF,CAAC;6BAEG,CAAC,aAAa,CAAC,MAAM,EAArB,wBAAqB;wBACxB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;4BACjC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;wBACjB,CAAC;wBAEG,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,KAAK,GAAG,CAAC,eAAe,EAA9E,CAA8E,CAAC,CAAC;wBAClI,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;4BACnB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACzC,CAAC;wBAED,sBAAO;;wBAGP,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;4BACjD,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,MAAM,EAAZ,CAAY,CAAC,CAAC;wBACxD,CAAC;wBAEG,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC1H,GAAG,SAAA,CAAC;wBACJ,kBAAkB,SAA2B,CAAC;;;;6BAG7C,CAAA,GAAG,CAAC,WAAW,KAAK,eAAe,IAAI,GAAG,CAAC,WAAW,KAAK,eAAe,CAAA,EAA1E,wBAA0E;wBAC7E,qBAAM,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,sCAAe,CAAC,aAAa,EAAE,CAAC,gBAAgB,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAA;;wBAA9N,SAA8N,CAAC;;4BAG9M,qBAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAA;;wBAAnD,SAAS,GAAG,SAAuC;wBACzD,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;wBACvB,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC;wBACxC,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;wBACvD,SAAS,GAAG,MAAA,SAAS,CAAC,YAAY,mCAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACjE,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;wBACrC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;wBACvD,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBAG5D,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;4BACX,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;4BACrE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;4BAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;gCACP,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gCAC3B,WAAW,GAAG,CAAC,CAAC;;oCACpB,KAAoB,kBAAA,SAAA,aAAa,CAAA,mHAAE,CAAC;wCAAzB,KAAK;wCACP,MAAM,GAAS,KAAK,OAAd,EAAE,EAAE,GAAK,KAAK,GAAV,CAAW;wCAC7B,IAAI,SAAS,EAAE,CAAC;4CACf,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACtC,EAAE,EACF,MAAM,CAAC,SAAS,EAChB,KAAK,EACL,SAAS,EACT,SAAS,CAAC,QAAQ,IAAI,SAAS,EAC/B,EAAE,WAAW,aAAA,EAAE,CACf,CAAC;wCACH,CAAC;6CACI,CAAC;4CACD,SAAS,GAAwB;gDACpC,SAAS,EAAE,MAAM,CAAC,SAAS;gDAC3B,QAAQ,EAAE,KAAK;gDACf,IAAI,EAAE,GAAG;6CACT,CAAC;4CAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;wCAC5B,CAAC;wCACD,IAAI,eAAe,EAAE,CAAC;4CACrB,IAAI,CAAC,YAAY,CAAC;gDACjB,WAAW,EAAE,GAAG,CAAC,WAAW;gDAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;gDACpC,SAAS,EAAE,MAAM,CAAC,SAAS;gDAC3B,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;gDAC1B,OAAO,EAAE,aAAa,CAAC,MAAM;gDAC7B,YAAY,cAAA;gDACZ,MAAM,EAAE,CAAC,CAAC,SAAS;gDACnB,QAAQ,EAAE,KAAK;gDACf,UAAU,YAAA;gDACV,IAAI,MAAA;gDACJ,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;6CACtC,CAAC,CAAC;wCACJ,CAAC;wCACD,WAAW,IAAI,CAAC,CAAC;oCAClB,CAAC;;;;;;;;;gCACD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oCACpB,UAAU,YAAA;oCACV,IAAI,MAAA;oCACJ,OAAO,EAAE,WAAW;oCACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;oCACpC,YAAY,cAAA;iCACZ,CAAC,CAAC;gCAEH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gCAEjC,IAAI,WAAW,EAAE,CAAC;oCACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gCAC7C,CAAC;qCACI,CAAC;oCACL,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;gCACjB,CAAC;4BACF,CAAC;iCACI,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC;gCACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;4BAC7C,CAAC;iCACI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gCACjC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;4BACjB,CAAC;wBACF,CAAC;6BACI,CAAC;4BACC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC3B,WAAW,GAAG,CAAC,CAAC;;gCACpB,KAAoB,kBAAA,SAAA,aAAa,CAAA,mHAAE,CAAC;oCAAzB,KAAK;oCACP,MAAM,GAAS,KAAK,OAAd,EAAE,EAAE,GAAK,KAAK,GAAV,CAAW;oCAC7B,IAAI,SAAS,EAAE,CAAC;wCACf,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CACtC,EAAE,EACF,MAAM,CAAC,SAAS,EAChB,KAAK,EACL,SAAS,EACT,SAAS,CAAC,QAAQ,IAAI,SAAS,EAC/B,EAAE,WAAW,aAAA,EAAE,CACf,CAAC;oCACH,CAAC;yCACI,CAAC;wCACD,SAAS,GAAwB;4CACpC,SAAS,EAAE,MAAM,CAAC,SAAS;4CAC3B,QAAQ,EAAE,KAAK;4CACf,IAAI,EAAE,GAAG;yCACT,CAAC;wCAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oCAC5B,CAAC;oCACD,IAAI,eAAe,EAAE,CAAC;wCACrB,IAAI,CAAC,YAAY,CAAC;4CACjB,WAAW,EAAE,GAAG,CAAC,WAAW;4CAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;4CACpC,SAAS,EAAE,MAAM,CAAC,SAAS;4CAC3B,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC;4CAC1B,OAAO,EAAE,aAAa,CAAC,MAAM;4CAC7B,YAAY,cAAA;4CACZ,MAAM,EAAE,CAAC,CAAC,SAAS;4CACnB,QAAQ,EAAE,KAAK;4CACf,UAAU,YAAA;4CACV,IAAI,MAAA;4CACJ,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;yCACtC,CAAC,CAAC;oCACJ,CAAC;oCACD,WAAW,IAAI,CAAC,CAAC;gCAClB,CAAC;;;;;;;;;4BACD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;gCACpB,UAAU,YAAA;gCACV,IAAI,MAAA;gCACJ,OAAO,EAAE,WAAW;gCACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;gCACpC,YAAY,cAAA;6BACZ,CAAC,CAAC;4BAEH,IAAI,WAAW,EAAE,CAAC;gCACjB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gCAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gCAEtC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;gCAEvD,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oCAEjC,WAAW,GAAG,CAAC,CAAC;oCACd,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAA9B,CAA8B,CAAC,CAAC;oCAE/E,KAAS,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;wCAC3C,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;wCAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;wCACxC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;wCACvB,WAAW,IAAI,CAAC,CAAC;wCACjB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;4CAC/D,MAAM;wCACP,CAAC;oCACF,CAAC;oCAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wCACvB,OAAO,CAAC,GAAG,CACV,aAAa;4CACb,YAAY;4CACZ,GAAG,CAAC,WAAW;4CACf,cAAc;4CACd,WAAW;4CACX,KAAK;4CACL,aAAa,CACb,CAAC;oCACH,CAAC;gCACF,CAAC;4BACF,CAAC;iCACI,CAAC;gCACL,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;4BACjB,CAAC;wBACF,CAAC;;;;wBAGK,KAA4C,IAAA,2CAA0B,EAAC,KAAG,CAAC,EAAlE,eAAe,WAAA,EAAE,aAAa,mBAAA,CAAqC;;4BAElF,KAAmB,KAAA,SAAA,GAAG,CAAC,OAAO,CAAA,4CAAE,CAAC;gCAAxB,MAAM;gCACV,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gCAC/D,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCACxC,SAAS,GAAwB;wCACpC,SAAS,EAAE,MAAM,CAAC,SAAS;wCAC3B,QAAQ,EAAE,IAAI;wCACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,aAAa,eAAA,EAAE,CAAC;qCAC3D,CAAC;oCAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gCAC5B,CAAC;4BACF,CAAC;;;;;;;;;wBAEK,YAAY,GAAG;4BACpB,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;4BACtC,IAAI,MAAA;4BACJ,UAAU,YAAA;4BACV,aAAa,eAAA;4BACb,KAAK,EAAE;gCACN,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI;gCAC3B,OAAO,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO;gCACjC,KAAK,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK;gCAC7B,IAAI,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI;gCAC3B,QAAQ,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ;6BACnC;yBACD,CAAC;wBAEH,qBAAM,8BAAa,CAAC,MAAM,CAAC;gCAC1B,SAAS,EAAE,sBAAsB;gCACjC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gCACxE,WAAW,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ;gCACxC,UAAU,EAAE,sCAAe,CAAC,aAAa,EAAE;gCAC3C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gCAC5C,KAAK,EAAE,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK;gCAC7B,OAAO,EAAE,YAAY;gCACrB,QAAQ,EAAE;oCACT,OAAO,EAAE,4BAA4B;oCACrC,WAAW,EAAE,GAAG,CAAC,WAAW;oCAC5B,aAAa,eAAA;iCACb;gCACD,aAAa,eAAA;6BACb,CAAC,EAAA;;wBAdF,SAcE,CAAC;;4BAGF,qBAAM,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAA;;wBAAjE,SAAiE,CAAC;;;;;;KAGpE;IAEO,wDAA0B,GAAlC,UAAmC,GAA4B;QAC9D,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;YACjC,GAAG,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC5B,GAAG,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC9B,GAAG,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC9B,GAAG,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,CAAC;IACF,CAAC;IAEO,4DAA8B,GAAtC,UAAuC,GAA4B,EAAE,QAAoC;QACxG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,GAAG,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACnC,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC9B,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAChC,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACtF,OAAO;QACR,CAAC;QAED,GAAG,CAAC,sBAAsB,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnD,GAAG,CAAC,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;QACzC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QACvD,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,KAAU;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA,KAAK,UAAU,EAAE,CAAC;YAC3C,IAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;gBACtC,OAAO,GAAG,CAAC;YACZ,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,0DAA4B,GAApC,UAAqC,UAAe;QACnD,IAAM,UAAU,GAAU,EAAE,CAAC;QAE7B,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACrD,OAAO,CAAC,UAAU,CAAC,CAAC;QACrB,CAAC;QAED,IAAM,YAAY,GAAG,UAAA,KAAK;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC3C,OAAO;YACR,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACF,CAAC,CAAC;QAEF,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAClD,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC/C,IAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,GAAG,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;oBACtC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACF,CAAC;QACF,CAAC;aACI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,qDAAuB,GAA/B,UAAgC,MAAW;QAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;YAChC,MAAM;YACN,KAAK;YACL,MAAM;YACN,KAAK;YACL,MAAM;YACN,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;YACN,KAAK;YACL,MAAM;YACN,SAAS;YACT,OAAO;YACP,MAAM;YACN,YAAY;YACZ,QAAQ;YACR,UAAU;SACV,CAAC,CAAC;QAEH,IAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;YACnC,QAAQ;YACR,OAAO;YACP,OAAO;YACP,YAAY;YACZ,gBAAgB;YAChB,OAAO;YACP,aAAa;YACb,aAAa;YACb,MAAM;YACN,OAAO;YACP,aAAa;YACb,eAAe;YACf,aAAa;YACb,eAAe;SACf,CAAC,CAAC;QAEH,IAAM,IAAI,GAAG,UAAC,KAAU;;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,CAAC,EAAV,CAAU,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC;YACb,CAAC;;gBAED,KAA2B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,gBAAA,4BAAE,CAAC;oBAAxC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBACrB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACzB,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAClC,OAAO,KAAK,CAAC;wBACd,CAAC;wBACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChC,OAAO,KAAK,CAAC;wBACd,CAAC;oBACF,CAAC;oBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClB,OAAO,KAAK,CAAC;oBACd,CAAC;gBACF,CAAC;;;;;;;;;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEO,oDAAsB,GAA9B,UAA+B,UAAe,EAAE,QAAc;;QAA9D,iBAyBC;QAxBA,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAM,eAAe,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;aACnE,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,KAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC;aACvC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAM,aAAa,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC;aACpE,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,KAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC;aACvC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElB,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;;YAEtC,KAAwB,IAAA,oBAAA,SAAA,eAAe,CAAA,gDAAA,6EAAE,CAAC;gBAArC,IAAM,SAAS,4BAAA;gBACnB,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;;;;;;;;;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,MAAW,EAAE,QAAc,EAAE,UAAgB;QACvE,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACJ,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,WAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAEa,mDAAqB,GAAnC,UAAoC,UAAkB,EAAE,UAAe,EAAE,MAAW,EAAE,QAAc;;;;;;;;wBAE5F,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;wBAC5E,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;4BAC5B,sBAAO,aAAa,EAAC;wBACtB,CAAC;wBAEK,EAAE,GAAG,sCAAe,CAAC,SAAS,EAAE,CAAC;wBACjC,UAAU,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACpC,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;;;;wBAE7C,iBAAA,SAAA,YAAY,CAAA;;;;wBAAvB,OAAO;wBACX,cAAc,GAAG;4BACtB,IAAI,EAAE;gCACL,EAAE,GAAG,EAAE,OAAO,EAAE;gCAChB,UAAU;6BACV;yBACD,CAAC;wBAEU,qBAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAA;;wBAA7D,GAAG,GAAG,SAAuD;wBACnE,IAAI,GAAG,EAAE,CAAC;4BACT,sBAAO,IAAI,EAAC;wBACb,CAAC;;;;;;;;;;;;;;;;4BAGF,sBAAO,KAAK,EAAC;;;wBAGb,sBAAO,IAAI,EAAC;;;;;KAEb;IAEa,0DAA4B,GAA1C,UAA2C,GAA4B,EAAE,UAAkB,EAAE,IAAY,EAAE,UAAgB,EAAE,QAAc;;;;;;;;wBAC1I,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;wBAE/B,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;wBAC5D,UAAU,GAAG,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBACxD,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAChD,aAAa,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;wBAClD,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC3C,iBAAiB,GACtB,CAAC,CAAA,MAAA,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,0CAAE,IAAI,KAAI,CAAC,CAAC,GAAG,CAAC;4BAC3D,CAAC,CAAA,MAAA,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC,GAAG,CAAC;4BACxD,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAEzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC3B,IAAI,CAAC,eAAe,CAAC,sCAAsC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;4BACjH,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACxB,IAAI,CAAC,eAAe,CAAC,+CAA+C,EAAE;gCACrE,WAAW,EAAE,GAAG,CAAC,WAAW;gCAC5B,UAAU,YAAA;gCACV,IAAI,MAAA;6BACJ,CAAC,CAAC;4BACH,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAED,IAAI,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC7C,IAAI,CAAC,eAAe,CAAC,wCAAwC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;4BACnH,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAED,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;4BACxD,IAAI,CAAC,eAAe,CAAC,8BAA8B,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;4BAC3I,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACvB,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gCAClC,IAAI,CAAC,eAAe,CAAC,qEAAqE,EAAE;oCAC3F,WAAW,EAAE,GAAG,CAAC,WAAW;oCAC5B,UAAU,YAAA;oCACV,IAAI,MAAA;oCACJ,UAAU,EAAE,oBAAoB;iCAChC,CAAC,CAAC;gCACH,sBAAO,IAAI,EAAC;4BACb,CAAC;4BAED,IAAI,CAAC,eAAe,CAAC,4CAA4C,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;4BACzJ,sBAAO,KAAK,EAAC;wBACd,CAAC;wBAED,IAAI,IAAI,KAAK,QAAQ,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;4BACvD,IAAI,CAAC,eAAe,CAAC,qEAAqE,EAAE;gCAC3F,WAAW,EAAE,GAAG,CAAC,WAAW;gCAC5B,UAAU,YAAA;gCACV,IAAI,MAAA;gCACJ,UAAU,EAAE,oBAAoB;6BAChC,CAAC,CAAC;4BACH,sBAAO,IAAI,EAAC;wBACb,CAAC;6BAEG,CAAA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAA,EAAzB,wBAAyB;;;;wBACP,YAAA,SAAA,OAAO,CAAA;;;;wBAAjB,MAAM;wBACZ,qBAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAA;;wBAA9E,IAAI,SAA0E,EAAE,CAAC;4BAChF,IAAI,CAAC,eAAe,CAAC,gCAAgC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;4BACrJ,sBAAO,IAAI,EAAC;wBACb,CAAC;;;;;;;;;;;;;;;;;wBAIH,IAAI,CAAC,eAAe,CAAC,2CAA2C,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;wBACxJ,sBAAO,KAAK,EAAC;;;;KACb;IAEa,mEAAqC,GAAnD,UAAoD,GAA4B,EAAE,UAAkB,EAAE,MAAuC;;;;;;;wBACxI,SAAS,GAAG,KAAK,CAAC;wBAClB,SAAS,GAAG,KAAK,CAAC;;;;wBAEF,WAAA,SAAA,MAAM,CAAA;;;;wBAArB;wBACJ,IAAI,OAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC7B,SAAS,GAAG,IAAI,CAAC;wBAClB,CAAC;6BACI,IAAI,OAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAClC,SAAS,GAAG,IAAI,CAAC;wBAClB,CAAC;wBACG,qBAAM,IAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,UAAU,EAAE,OAAK,CAAC,IAAI,EAAE,OAAK,CAAC,UAAU,EAAE,OAAK,CAAC,QAAQ,CAAC,EAAA;;wBAA1G,IAAI,SAAsG,EAAE,CAAC;4BAC5G,sBAAO,IAAI,EAAC;wBACb,CAAC;;;;;;;;;;;;;;;;;wBAGI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;wBACzD,iBAAiB,GAAG,EAAE,CAAC;wBAC7B,IAAI,SAAS,EAAE,CAAC;4BACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAClC,CAAC;wBACD,IAAI,SAAS,EAAE,CAAC;4BACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAClC,CAAC;wBAED,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,KAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;4BACxD,IAAI,CAAC,eAAe,CAAC,uCAAuC,EAAE;gCAC7D,WAAW,EAAE,GAAG,CAAC,WAAW;gCAC5B,UAAU,YAAA;gCACV,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gCACpC,OAAO,EAAE,iBAAiB;gCAC1B,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;6BACrC,CAAC,CAAC;4BACH,sBAAO,IAAI,EAAC;wBACb,CAAC;wBAED,sBAAO,KAAK,EAAC;;;;KACb;IAEO,+CAAiB,GAAzB,UAA0B,GAA4B,EAAE,UAAkB;;QACzE,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACrC,IAAM,QAAQ,GAAG,MAAA,GAAG,CAAC,mBAAmB,0CAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,IAAI;YACxC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC;YACd,CAAC;YAED,IAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACnE,IAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAChE,OAAO,SAAS,IAAI,QAAQ,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAEO,oCAAM,GAAd,UAAe,EAAa,EAAE,IAAyB;QACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAEM,4CAAc,GAArB;QACC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAEO,6CAAe,GAAvB,UAAwB,OAAe,EAAE,OAAiC;QACzE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClC,OAAO;QACR,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;aACI,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEO,6CAAe,GAAvB,UAAwB,MAAuC;QAA/D,iBAKC;QAJA,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC;YAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;SACtD,CAAC,EAHyB,CAGzB,CAAC,CAAC;IACL,CAAC;IAEO,mDAAqB,GAA7B,UAA8B,GAA4B,EAAE,OAAe;QAC1E,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClC,OAAO;QACR,CAAC;QAED,IAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,EAAqB;gBAArB,KAAA,aAAqB,EAApB,cAAc,QAAA,EAAE,GAAG,QAAA;YACnG,IAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO;gBACN,UAAU,EAAE,cAAc;gBAC1B,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,EAAyB;gBAAzB,KAAA,aAAyB,EAAxB,cAAc,QAAA,EAAE,OAAO,QAAA;YAAM,OAAA,CAAC;gBACrG,UAAU,EAAE,cAAc;gBAC1B,KAAK,EAAE,OAAO,CAAC,MAAM;aACrB,CAAC;QAHmG,CAGnG,CAAC,CAAC;QAEJ,IAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,EAA0B;gBAA1B,KAAA,aAA0B,EAAzB,cAAc,QAAA,EAAE,QAAQ,QAAA;YAAM,OAAA,CAAC;gBAC3G,UAAU,EAAE,cAAc;gBAC1B,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aAC1B,CAAC;QAJyG,CAIzG,CAAC,CAAC;QAEJ,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE;YACnD,OAAO,SAAA;YACP,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,iBAAiB;YAC/B,sBAAsB,EAAE,aAAa;YACrC,mBAAmB,EAAE,gBAAgB;YACrC,QAAQ,UAAA;SACR,CAAC,CAAC;IACJ,CAAC;IAEY,gDAAkB,GAA/B;4DAAgC,WAAmB,EAAE,gBAA4B,EAAE,OAA6B;;YAA3D,iCAAA,EAAA,qBAA4B;;gBAC1E,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,iCAA0B,WAAW,CAAE,CAAC,CAAC;gBAC1D,CAAC;gBAEK,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBACjE,QAAQ,GAAuB;oBACpC,WAAW,aAAA;oBACX,gBAAgB,kBAAA;iBAChB,CAAC;gBAEF,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;oBACvB,sBAAO,IAAA,wDAAsB,EAAC;;4BAAM,OAAA,CAAA,KAAA,GAAG,CAAC,QAAQ,CAAA,CAAC,IAAI,0BAAC,OAAO,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,UAAK,gBAAgB;wBAArE,CAAsE,EAAE,QAAQ,CAAC,EAAC;gBACvH,CAAC;gBAED,sBAAO,IAAA,wDAAsB,EAAC;;wBAAM,OAAA,CAAA,KAAA,GAAG,CAAC,QAAQ,CAAA,CAAC,IAAI,0BAAC,OAAO,UAAK,gBAAgB;oBAA9C,CAA+C,EAAE,QAAQ,CAAC,EAAC;;;KAC/F;IACF,0BAAC;AAAD,CA39FA,AA29FC,IAAA;AA39FY,kDAAmB","file":"subscription.manager.js","sourcesContent":["import { ChangeStream, ChangeStreamDeleteDocument, ChangeStreamInsertDocument, ChangeStreamReplaceDocument, ChangeStreamUpdateDocument, ResumeToken } from 'mongodb';\nimport * as NodeCache from 'node-cache';\nimport { pack, unpack } from 'msgpackr';\nimport * as WebSocket from 'ws';\nimport { Flags } from '../collections/flag.collection';\nimport { LoggedInUsers } from '../collections/logged-in-users.collection';\nimport { LoggedInUserModel } from '../models/logged-in-users.model';\nimport { ServerResponseModel } from '../models/server-message.model';\nimport { ActiveSubscriptionClientModel, ActiveSubscriptionModel, SubscriptionModel, SubscriptionPubModel } from '../models/subscription.model';\nimport { loadAppStatusPublications } from '../publications/app-status';\nimport { loadAppSettingsPublications } from '../publications/app-settings';\nimport { loadAiTerminalPublications } from '../publications/ai-terminal';\nimport { loadCronJobPublications } from '../publications/cron-jobs';\nimport { loadCustomerNotificationPublications } from '../publications/customer-notifications';\nimport { loadFilePublications } from '../publications/files';\nimport { loadFlagsPublications } from '../publications/flags';\nimport { loadFlagsUpdatePublications } from '../publications/flags-update';\nimport { loadLogPublications } from '../publications/logs';\nimport { loadNotificationPublications } from '../publications/notifications';\nimport { loadReportBuilderDashboardBuilderPublications } from '../publications/report-builder-dashboard-builders';\nimport { loadReportBuilderLibraryPublications } from '../publications/report-builder-libraries';\nimport { loadReportBuilderReportPublications } from '../publications/report-builder-reports';\nimport { loadSuperAdminPublications } from '../publications/super-admin';\nimport { loadUserGroupPublications } from '../publications/user-groups';\nimport { loadUserGuidePublications } from '../publications/user-guides';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { deepCopy, objectIdHexString, round } from '../util/common';\nimport { ErrorReporter } from '../util/error-reporter';\nimport { ensureErrorWithCorrelation } from '../util/error-tracking';\nimport { DependencyContextSnapshot, PublicationContext, QueryMeta, deserializeDependencySnapshot, withDependencyTracking } from '../util/subscription-dependency-context';\nimport { MonitorManagerFunction } from './monitor.manager';\nimport { WebSocketManager } from './websocket.manager';\nconst v8 = require('v8');\nconst sift = require('sift');\n\nfunction resolveHeapLimitBytes(): number {\n\tconst stats = v8.getHeapStatistics();\n\tif (stats && typeof stats.heap_size_limit === 'number') {\n\t\treturn stats.heap_size_limit;\n\t}\n\n\tif (stats && typeof stats.total_available_size === 'number') {\n\t\treturn stats.total_available_size;\n\t}\n\n\treturn 0;\n}\n\n// Performance Dependencies\n// import * as path from 'path';\n// import { Worker } from 'worker_threads';\n\ninterface MongoQueueModel {\n\t_id: number,\n\ttype: string;\n\tcollection: string;\n\tsubscription: ActiveSubscriptionModel;\n\trunning: boolean;\n\trun_again: boolean;\n}\n\ninterface OplogResumeTokenDocument {\n\t_id: string;\n\ttoken?: ResumeToken;\n\tupdatedAt?: Date;\n}\n\ninterface SubscriptionInvalidationEvent {\n\ttype: string;\n\tdocumentId?: any;\n\tdocument?: any;\n}\n\ninterface PublicationExecution {\n\tresult?: any;\n\tpackedResult?: Uint8Array | Buffer;\n\tsnapshot?: DependencyContextSnapshot;\n\tencoding?: 'msgpack' | 'json';\n\tworkerUsed?: boolean;\n}\n\n// interface CurrentPerformanceMonitor {\n// \t_id: number;\n// \tfunction: string;\n// \tpublication: string;\n// \tsubscriptionData: any[];\n// \tdate_start: Date;\n// \tdate_end: Date;\n// \tduration: number;\n// \tresult: string;\n// }\n\nexport class SubscriptionManager {\n\tprivate _websocketManager: WebSocketManager;\n\tprivate _publications: SubscriptionModel = {};\n\tprivate _subscriptions: ActiveSubscriptionModel[] = [];\n\tprivate _wss: WebSocket.Server;\n\tprivate _loggedInUsers: LoggedInUserModel[] = [];\n\tprivate _lastRouteBySocket = new Map<string, { route: string, dateMs: number }>();\n\n\tprivate _mongoQueue: MongoQueueModel[] = [];\n\tprivate _mongoQueueId = 0;\n\t\n\tprivate _oplog$: ChangeStream;\n\tprivate _oplogMode: 'auto' | 'change-stream' | 'local' = 'auto';\n\tprivate _useLocalOplog = false;\n\tprivate _localOplogResyncIntervalMs = 0;\n\tprivate _localOplogResyncTimer: NodeJS.Timeout = null;\n\n\tprivate _nodeCache;\n\tprivate _cacheId = 1;\n\n\tprivate _heapSize = resolveHeapLimitBytes();\n\tprivate _heapLimit: number;\n\n\tprivate serverConfig;\n\n\tprivate _monitorManagerFunction: MonitorManagerFunction;\n\n\tprivate _enableDebug = false;\n\tprivate _enableDependencyDebug = false;\n\tprivate _connectDebug = false;\n\tprivate _debugOplogCollections = [];\n\tprivate _debugOplogHits = 0;\n\tprivate _debugSubCollections = [];\n\tprivate _debugSubHits = 0;\n\tprivate _debugUnSubHits = 0;\n\tprivate _debugUnSubAllHits = 0;\n\tprivate _debugMongoQueueHits = 0;\n\tprivate _debugMongoQueueCollections = [];\n\tprivate _debugSendQueueHits = 0;\n\tprivate _debugRemoveCacheHits = 0;\n\tprivate _subSendDebug = false;\n\tprivate _subSendLogEnabled = false;\n\tprivate _subSendLogThresholdMs = 0;\n\tprivate _subSendLogBytes = 0;\n\tprivate _subSendLogSampleRate = 1;\n\tprivate _aiWorkerDebug = false;\n\tprivate _aiSubscriptionDebug = false;\n\tprivate _aiSubLastAt = new Map<string, number>();\n\n\tprivate _oplogRetryCount = 0;\n\tprivate _lastResumeToken: ResumeToken = null;\n\tprivate _lastResumeTokenSaveMs = 0;\n\tprivate _resumeTokenSavePromise: Promise<void> = null;\n\tprivate _resumeTokenSaveForcePending = false;\n\tprivate _fullResyncPromise: Promise<void> = null;\n\tprivate readonly RESUME_TOKEN_COLLECTION = 'subscription-manager-resume-tokens';\n\tprivate readonly RESUME_TOKEN_SAVE_INTERVAL_MS = 5000;\n\tprivate readonly RESUME_TOKEN_AUTO_HEAL_RETRY_THRESHOLD = 2;\n\n\t// Buffer to store throttled latency updates with timestamps\n\tprivate latencyBuffer = new Map<string, { latency: number, lastUpdate: Date }>();\n\tprivate _latencyFlushInProgress = false;\n\tprivate _latencyFlushPending = false;\n\n\t// Interval to flush latency updates in MongoDB\n\tprivate readonly LATENCY_UPDATE_INTERVAL = 60000;\n\n\t// Minimum time difference between two latency updates for the same user\n\tprivate readonly LATENCY_UPDATE_THRESHOLD_MS = 30000;\n\tprivate readonly LATENCY_DEBUG_THRESHOLD_MS = 1000;\n\tprivate readonly PUBLICATION_DEBUG_THRESHOLD_MS = 300;\n\n\t// private currentPerfomanceMonitor: CurrentPerformanceMonitor[] = [];\n\t// private idPerformance: number = 0;\n\t// private performanceThread;\n\n\tprivate _invalidationDebounceTimers = new Map<string, NodeJS.Timeout>();\n\tprivate _invalidationPendingTimestamps = new Map<string, number>();\n\tprivate _pendingInvalidations = new Map<string, { events: SubscriptionInvalidationEvent[] }>();\n\tprivate readonly DEBOUNCE_DELAY = 100; // 100ms debounce window\n\tprivate readonly MAX_WAIT_TIME = 500; // 500ms maximum delay\n\n\tprivate _publicationWorkerQueueLimit = 0;\n\n\n\tconstructor() {}\n\n\tstatic createPublicationRegistry(serverConfig?) {\n\t\tconst subscriptionManager = new SubscriptionManager();\n\t\tsubscriptionManager.initializePublicationRegistry(serverConfig);\n\t\treturn subscriptionManager;\n\t}\n\n\tstatic create(wss: WebSocket.Server, serverConfig, monitorManagerFunction: MonitorManagerFunction) {\n\t\tconst subscriptionManager = new SubscriptionManager();\n\t\tsetImmediate(async () => {\n\t\t\tawait subscriptionManager.initialize(wss, serverConfig, monitorManagerFunction);\n\t\t});\n\t\treturn subscriptionManager;\n\t}\n\t\n\tprivate initializePublicationRegistry(serverConfig) {\n\t\tthis.serverConfig = serverConfig || ResolveIOServer.getServerConfig();\n\t\tthis.registerCorePublications();\n\t}\n\n\tprivate async initialize(wss: WebSocket.Server, serverConfig, monitorManagerFunction: MonitorManagerFunction) {\n\t\tthis._websocketManager = ResolveIOServer.getMainServer().getWebSocketManager();\n\t\tthis._monitorManagerFunction = monitorManagerFunction;\n\n\t\tthis._nodeCache = new NodeCache( { stdTTL: 0, checkperiod: 0 } );\n\n\t\tsetInterval(() => this.flushThrottledLatencyUpdates(), this.LATENCY_UPDATE_INTERVAL);\n\n\t\t// setTimeout(() => {\n\t\t// \tconsole.log('Setting up performance thread');\n\n\t\t// \tthis.performanceThread = new Worker(path.join(__dirname, './subscription.performance.js'));\n\n\t\t// \tthis.performanceThread.on('exit', code => {\n\t\t// \t\tconsole.error(new Date(), 'THREAD EXITED!!!!!!!!!!!!!!!!!!', code);\n\t\t// \t});\n\n\t\t// \tthis.performanceThread.on('error', code => {\n\t\t// \t\tconsole.error(new Date(), 'THREAD RECV ERROR !!!!!!!!!!!!!!!!!!', code);\n\t\t// \t});\n\t\t// }, 5000);\n\n\t\t// setInterval(() => {\n\t\t// \tconsole.log('Post thread msg');\n\t\t// \tthis.performanceThread.postMessage(this.currentPerfomanceMonitor);\n\t\t// \tthis.currentPerfomanceMonitor = [];\n\t\t// }, 10000);\n\n\t\tthis.serverConfig = serverConfig;\n\t\tthis._wss = wss;\n\t\tthis._connectDebug = this.resolveConnectDebug();\n\t\tthis._subSendDebug = this.resolveSubSendDebug();\n\t\tthis._subSendLogEnabled = this.resolveSubSendLogEnabled();\n\t\tthis._subSendLogThresholdMs = this.resolveSubSendLogThresholdMs();\n\t\tthis._subSendLogBytes = this.resolveSubSendLogBytes();\n\t\tthis._subSendLogSampleRate = this.resolveSubSendLogSampleRate();\n\t\tthis._aiWorkerDebug = this.parseDebugFlag(process.env.AI_ASSISTANT_WORKER_DEBUG);\n\t\tthis._aiSubscriptionDebug = this.resolveAiSubscriptionDebug();\n\n\t\tthis._oplogMode = this.resolveOplogMode();\n\t\tthis._localOplogResyncIntervalMs = this.resolveLocalOplogResyncIntervalMs();\n\n\t\tthis.registerCorePublications();\n\n\t\tif (this._oplogMode === 'local') {\n\t\t\tawait this.enableLocalOplogFallback('config');\n\t\t}\n\t\telse {\n\t\t\tconst resumeToken = await this.loadResumeToken();\n\t\t\tawait this.tailOpLog(resumeToken || undefined);\n\t\t}\n\n\t\tsetInterval(() => {\n\t\t\tthis._oplogRetryCount = 0;\n\t\t}, 15000);\n\n\t\tsetInterval(() => {\n\t\t\tif (this.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Subs', this._subscriptions.length);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Logged In Users', this._loggedInUsers.length);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Mongo Queue', this._mongoQueue.length);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Mongo Queue Hits', this._debugMongoQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Mongo Queue Collections', JSON.stringify(this._debugMongoQueueCollections.sort((a, b) => a.collection.localeCompare(b.collection) || a.publication.localeCompare(b.publication)), null, 2));\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Oplog Hits', this._debugOplogHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Oplog Collections', JSON.stringify(this._debugOplogCollections.sort((a, b) => a.collection.localeCompare(b.collection) || a.type.localeCompare(b.type)), null, 2));\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Send Queue Hits', this._debugSendQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Sub Hits', this._debugSubHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Sub Collections', JSON.stringify(this._debugSubCollections.sort((a, b) => a.publication.localeCompare(b.publication)), null, 2));\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Unsub Hits', this._debugUnSubHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Unsub All Hits', this._debugUnSubAllHits);\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Cache Cleanup Hits', this._debugRemoveCacheHits);\n\t\t\t}\n\t\t\t\n\t\t\tthis._debugOplogHits = 0;\n\t\t\tthis._debugOplogCollections = [];\n\t\t\tthis._debugSubCollections = [];\n\t\t\tthis._debugMongoQueueHits = 0;\n\t\t\tthis._debugMongoQueueCollections = [];\n\t\t\tthis._debugSendQueueHits = 0;\n\t\t\tthis._debugSubHits = 0;\n\t\t\tthis._debugUnSubHits = 0;\n\t\t\tthis._debugUnSubAllHits = 0;\n\t\t\tthis._debugRemoveCacheHits = 0;\n\t\t}, 60000);\n\n\t\tsetInterval(async () => {\n\t\t\tthis._loggedInUsers = await LoggedInUsers.find();\n\t\n\t\t\tlet userCopy = deepCopy(this._loggedInUsers);\n\t\t\tfor (let i = this._loggedInUsers.length - 1; i >= 0; i--) {\n\t\t\t\tlet loggedInUser = userCopy[i];\n\n\t\t\t\tif (!loggedInUser.date || Date.now() - loggedInUser.date.getTime() > 120000) {\n\t\t\t\t\tif (this._websocketManager.getWebSocket(loggedInUser.id_ws)) {\n\t\t\t\t\t\tif (this.getEnableDebug()) {\n\t\t\t\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Unsub WS', this._websocketManager.getWebSocket(loggedInUser.id_ws)['user'], this._websocketManager.getWebSocket(loggedInUser.id_ws)['id_socket'], 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait this.unsubscribeAll(this._websocketManager.getWebSocket(loggedInUser.id_ws));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._subscriptions.forEach(sub => {\n\t\t\t\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\t\t\t\tif (client.id_socket === loggedInUser.id_ws) {\n\t\t\t\t\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tawait LoggedInUsers.deleteOne({_id: loggedInUser._id});\n\n\t\t\t\t\t\tif (this._loggedInUsers.findIndex(a => a._id === loggedInUser._id) >= 0) {\n\t\t\t\t\t\t\tthis._loggedInUsers.splice(this._loggedInUsers.findIndex(a => a._id === loggedInUser._id), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < this._subscriptions.length; i++) {\n\t\t\t\tlet sub = this._subscriptions[i];\n\n\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\tif (!this._loggedInUsers.some(a => a.id_ws === client.id_socket)) {\n\t\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 30000);\n\n\t\tlet flag = await Flags.findOne({type: 'Enable Debug'});\n\t\tlet dependencyFlag = await Flags.findOne({type: 'Enable Dependency Debug'});\n\n\t\tif (flag && flag.value) {\n\t\t\tthis._enableDebug = true;\n\t\t}\n\t\telse {\n\t\t\tthis._enableDebug = false;\n\t\t}\n\n\t\tif (dependencyFlag && dependencyFlag.value) {\n\t\t\tthis._enableDependencyDebug = true;\n\t\t}\n\t\telse {\n\t\t\tthis._enableDependencyDebug = process.env.ENABLE_DEPENDENCY_DEBUG === 'true';\n\t\t}\n\n\t\tthis.setCacheLimit();\n\t\tthis.configurePublicationWorkers();\n\t}\n\n\tprivate registerCorePublications() {\n\t\tloadSuperAdminPublications(this);\n\t\tloadAiTerminalPublications(this);\n\t\tloadAppStatusPublications(this);\n\t\tloadAppSettingsPublications(this);\n\t\tloadLogPublications(this);\n\t\tloadFilePublications(this);\n\t\tloadCronJobPublications(this);\n\t\tloadFlagsUpdatePublications(this);\n\t\tloadFlagsPublications(this);\n\t\tloadNotificationPublications(this);\n\t\tloadCustomerNotificationPublications(this);\n\t\tloadReportBuilderReportPublications(this);\n\t\tloadReportBuilderLibraryPublications(this);\n\t\tloadUserGroupPublications(this);\n\t\tloadUserGuidePublications(this);\n\t\tloadReportBuilderDashboardBuilderPublications(this);\n\t}\n\n\tprivate setCacheLimit() {\t\n\t\tif (process.env.IS_WORKERS_ENABLED === 'true') {\n\t\t\tthis._heapLimit = this._heapSize * 0.4;\n\t\t}\n\t\telse {\n\t\t\tthis._heapLimit = this._heapSize * 0.3; // Use 50% of total heap size\n\t\t}\n\t}\n\n\tprivate configurePublicationWorkers() {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tthis._publicationWorkerQueueLimit = this.parsePositiveNumber(process.env.SUBSCRIPTION_WORKER_QUEUE_MAX ?? config['SUBSCRIPTION_WORKER_QUEUE_MAX']);\n\t}\n\n\tprivate parseBoolean(value: any): boolean {\n\t\tif (value === true) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === false || value === null || value === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof value === 'number') {\n\t\t\treturn value === 1;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\treturn ['1', 'true', 'yes', 'y', 'on'].includes(normalized);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate clampNumber(value: number, min: number, max: number): number {\n\t\tif (value < min) {\n\t\t\treturn min;\n\t\t}\n\n\t\tif (value > max) {\n\t\t\treturn max;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tpublic async invalidatePubsCache(collection: string, type: string, documentId?: any, document?: any) {\n\t\tlet queue = this._pendingInvalidations.get(collection);\n\t\tif (!queue) {\n\t\t\tqueue = { events: [] };\n\t\t\tthis._pendingInvalidations.set(collection, queue);\n\t\t}\n\t\tqueue.events.push({ type, documentId, document });\n\n\t\tconst debounceKey = collection;\n\t\tconst now = Date.now();\n\t\n\t\t// Initialize or get existing timestamp\n\t\tconst firstInvalidationTime = this._invalidationPendingTimestamps.get(debounceKey) || now;\n\t\tthis._invalidationPendingTimestamps.set(debounceKey, firstInvalidationTime);\n\t\n\t\t// Clear any existing timer\n\t\tif (this._invalidationDebounceTimers.has(debounceKey)) {\n\t\t\tclearTimeout(this._invalidationDebounceTimers.get(debounceKey));\n\t\t}\n\t\n\t\t// Check if we've waited too long\n\t\tconst waitedTooLong = (now - firstInvalidationTime) >= this.MAX_WAIT_TIME;\n\t\t\n\t\tif (waitedTooLong) {\n\t\t\t// Immediate execution path\n\t\t\tthis._invalidationPendingTimestamps.delete(debounceKey);\n\t\t\tawait this._executeInvalidation(collection);\n\t\t} else {\n\t\t\t// Normal debounce path\n\t\t\tthis._invalidationDebounceTimers.set(\n\t\t\t\tdebounceKey,\n\t\t\t\tsetTimeout(async () => {\n\t\t\t\t\tthis._invalidationPendingTimestamps.delete(debounceKey);\n\t\t\t\t\tawait this._executeInvalidation(collection);\n\t\t\t\t}, this.DEBOUNCE_DELAY)\n\t\t\t);\n\t\t}\n\t}\n\t\n\tprivate async _executeInvalidation(collection: string) {\n\t\t// Clean up any existing timer (defensive)\n\t\tif (this._invalidationDebounceTimers.has(collection)) {\n\t\t\tclearTimeout(this._invalidationDebounceTimers.get(collection));\n\t\t\tthis._invalidationDebounceTimers.delete(collection);\n\t\t}\n\n\t\tconst queued = this._pendingInvalidations.get(collection);\n\t\tthis._pendingInvalidations.delete(collection);\n\n\t\tif (!queued || !queued.events.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst events = queued.events;\n\t\n\t\t// Original invalidation logic\n\t\tResolveIOServer.getMongoManager().invalidateQueryCache(collection, true);\n\t\n\t\tconst collSubs = this._subscriptions.filter(sub => this.subscriptionReferencesCollection(sub, collection));\n\t\n\t\tfor (const sub of collSubs) {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Invalidate Sub', sub.publication, sub.running, sub.runAgain);\n\t\t\t}\n\n\t\t\tif (!(await this.shouldInvalidateSubscriptionForEvents(sub, collection, events))) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tif (sub.running) {\n\t\t\t\tsub.runAgain = true;\n\t\t\t\tthis.dependencyDebug('Subscription busy, scheduling rerun', { publication: sub.publication, collection, events: this.summarizeEvents(events) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tconst batchType = events.length === 1 ? events[0].type : events.map(event => event.type).join(',');\n\n\t\t\tif (this._publications[sub.publication].user_specific) {\n\t\t\t\tthis.dependencyDebug('Triggering user-specific invalidation', { publication: sub.publication, collection, events: this.summarizeEvents(events), clientCount: sub.clients.length });\n\t\t\t\tfor (let client of sub.clients) {\n\t\t\t\t\tconst ws = this._websocketManager.getWebSocket(client.id_socket);\n\t\t\t\t\tif (ws?.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.sendDataToOneWithRetry(ws, client.messageId, sub, collection, batchType);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t// Error handling\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dependencyDebug('Triggering broadcast invalidation', { publication: sub.publication, collection, events: this.summarizeEvents(events), clientCount: sub.clients.length });\n\t\t\t\tawait this.sendDataToAllWithRetry(sub, collection, batchType);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate subscriptionReferencesCollection(sub: ActiveSubscriptionModel, collection: string): boolean {\n\t\tif (sub.collections?.includes(collection)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.ensureDependencyContainers(sub);\n\n\t\tconst dependencyIds = sub.collectionDependencies?.get(collection);\n\t\tif (dependencyIds && dependencyIds.size > 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst filters = sub.collectionFilters?.get(collection);\n\t\tif (filters && filters.length > 0) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (sub.watchAllCollections?.has(collection)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate async delay(ms: number) {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\treturn new Promise(resolve => setTimeout(resolve, ms));\n\t}\n\n\tprivate getMessageDateMs(messageDate: any): number {\n\t\tif (messageDate instanceof Date && !isNaN(messageDate.getTime())) {\n\t\t\treturn messageDate.getTime();\n\t\t}\n\n\t\tif (typeof messageDate === 'string' || typeof messageDate === 'number') {\n\t\t\tconst parsed = new Date(messageDate);\n\t\t\tif (!isNaN(parsed.getTime())) {\n\t\t\t\treturn parsed.getTime();\n\t\t\t}\n\t\t}\n\n\t\treturn Date.now();\n\t}\n\n\tprivate isStaleRouteMessage(ws: WebSocket, messageRoute: string, messageDate: any): boolean {\n\t\tconst socketId = ws ? ws['id_socket'] : '';\n\t\tif (!socketId) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!messageRoute || messageRoute === 'Bypass') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst messageDateMs = this.getMessageDateMs(messageDate);\n\t\tconst lastRoute = this._lastRouteBySocket.get(socketId);\n\n\t\tif (lastRoute && messageDateMs < lastRoute.dateMs) {\n\t\t\tthis.dependencyDebug('Skip route cleanup due to stale route message', {\n\t\t\t\tsocketId,\n\t\t\t\tmessageRoute,\n\t\t\t\tmessageDateMs,\n\t\t\t\tlastRoute: lastRoute.route,\n\t\t\t\tlastRouteDateMs: lastRoute.dateMs\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tthis._lastRouteBySocket.set(socketId, { route: messageRoute, dateMs: messageDateMs });\n\t\treturn false;\n\t}\n\n\tprivate getPublicationWorkerDispatcher() {\n\t\tconst mainServer = ResolveIOServer.getMainServer();\n\t\treturn mainServer && typeof mainServer.getWorkerDispatcherManager === 'function'\n\t\t\t? mainServer.getWorkerDispatcherManager()\n\t\t\t: null;\n\t}\n\n\tprivate shouldUsePublicationWorkers(): boolean {\n\t\tconst dispatcher = this.getPublicationWorkerDispatcher();\n\t\tif (!dispatcher || !dispatcher.hasWorkers()) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof dispatcher.hasWorkersForMethod === 'function' && !dispatcher.hasWorkersForMethod('runPublication')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._publicationWorkerQueueLimit > 0) {\n\t\t\tconst snapshot = dispatcher.getQueueSnapshot();\n\t\t\tif (snapshot.queueDepth >= this._publicationWorkerQueueLimit) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate async runPublicationViaWorker(sub: ActiveSubscriptionModel, userId?: string): Promise<PublicationExecution | null> {\n\t\tif (!this.shouldUsePublicationWorkers()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst dispatcher = this.getPublicationWorkerDispatcher();\n\t\tif (!dispatcher) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await dispatcher.sendInternalPromiseRaw('runPublication', [\n\t\t\t\tsub.publication,\n\t\t\t\tsub.subscriptionData,\n\t\t\t\tuserId\n\t\t\t]);\n\n\t\t\tif (!response || response.error) {\n\t\t\t\tthrow response?.result || new Error('Publication worker error');\n\t\t\t}\n\n\t\t\tif (!response.packedResult) {\n\t\t\t\tthrow new Error('Publication worker missing packedResult');\n\t\t\t}\n\n\t\t\tconst meta = response.meta || {};\n\t\t\tconst snapshot = meta.snapshot ? deserializeDependencySnapshot(meta.snapshot) : undefined;\n\n\t\t\treturn {\n\t\t\t\tpackedResult: response.packedResult,\n\t\t\t\tsnapshot,\n\t\t\t\tencoding: response.encoding || meta.encoding || 'msgpack',\n\t\t\t\tworkerUsed: true\n\t\t\t};\n\t\t}\n\t\tcatch (error) {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Worker publication failed, falling back', sub.publication, error?.message || error);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async runPublicationLocally(sub: ActiveSubscriptionModel, userId?: string): Promise<PublicationExecution> {\n\t\tconst pub = this._publications[sub.publication];\n\t\tif (!pub) {\n\t\t\tthrow new Error(`Publication not found: ${sub.publication}`);\n\t\t}\n\n\t\tconst context = Object.assign({}, this, SubscriptionManager.prototype);\n\t\tconst metadata: PublicationContext = {\n\t\t\tpublication: sub.publication,\n\t\t\tsubscriptionData: sub.subscriptionData\n\t\t};\n\n\t\tconst execution = pub.user_specific\n\t\t\t? await withDependencyTracking(() => pub.function.call(context, userId || '', ...sub.subscriptionData), Object.assign({}, metadata, { userId }))\n\t\t\t: await withDependencyTracking(() => pub.function.call(context, ...sub.subscriptionData), metadata);\n\n\t\treturn {\n\t\t\tresult: execution.result,\n\t\t\tpackedResult: this.packCachePayload(execution.result),\n\t\t\tsnapshot: execution.snapshot,\n\t\t\tencoding: 'msgpack',\n\t\t\tworkerUsed: false\n\t\t};\n\t}\n\n\tprivate async runPublicationExecution(sub: ActiveSubscriptionModel, userId?: string): Promise<PublicationExecution> {\n\t\tconst pub = this._publications[sub.publication];\n\t\tif (!pub) {\n\t\t\tthrow new Error(`Publication not found: ${sub.publication}`);\n\t\t}\n\n\t\tconst effectiveUserId = pub.user_specific ? userId : undefined;\n\t\tconst workerExecution = await this.runPublicationViaWorker(sub, effectiveUserId);\n\t\tif (workerExecution) {\n\t\t\treturn workerExecution;\n\t\t}\n\n\t\treturn this.runPublicationLocally(sub, effectiveUserId);\n\t}\n\n\tprivate async sendDataToAllWithRetry(sub: ActiveSubscriptionModel, collection: string, type: string) {\n\t\tsub.running = true;\n\n\t\tdo {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Running sendDataToAll Sub', sub.publication);\n\t\t\t}\n\n\t\t\tsub.runAgain = false;\n\t\t\tawait this.sendDataToAll(sub, collection, type);\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Done sendDataToAll Sub', sub.publication, sub.runAgain);\n\t\t\t}\n\n\t\t\tif (sub.runAgain) {\n\t\t\t\tawait this.delay(500); // delay, adjust as needed\n\t\t\t}\n\t\t} while (sub.runAgain);\n\n\t\tsub.running = false;\n\t}\n\n\tprivate async sendDataToOneWithRetry(ws: WebSocket, messageId: number, sub: ActiveSubscriptionModel, collection: string, type: string) {\n\t\tsub.running = true;\n\n\t\tdo {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Running sendDataToOne Sub', sub.publication);\n\t\t\t}\n\n\t\t\tsub.runAgain = false;\n\t\t\tawait this.sendDataToOne(ws, messageId, sub, collection, type);\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Done sendDataToOne Sub', sub.publication, sub.runAgain);\n\t\t\t}\n\n\t\t\tif (sub.runAgain) {\n\t\t\t\tawait this.delay(500); // delay, adjust as needed\n\t\t\t}\n\t\t} while (sub.runAgain);\n\t\tsub.running = false;\n\t}\n\n\t// Add all files to publications private object\n\tpublic publications(method: SubscriptionModel) {\n\t\tthis._publications = Object.assign(this._publications, method);\n\t}\n\n\tpublic getPublication(publication: string): SubscriptionPubModel | undefined {\n\t\treturn this._publications[publication];\n\t}\n\n\tpublic getPublications(): SubscriptionModel {\n\t\treturn this._publications;\n\t}\n\n\t// Throttled `loggedInLatency` method\n\tpublic loggedInLatency(ws: WebSocket) {\n\t\tconst now = new Date();\n\t\tconst newLatency = ws['latency'];\n\t\tconst socketId = ws['id_socket'];\n\t\tlet loggedInUser = this._loggedInUsers.find(a => a.id_ws === socketId);\n\n\t\tif (!loggedInUser) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst existingEntry = this.latencyBuffer.get(socketId);\n\n\t\t// Throttle updates: only update if time threshold has passed or latency has significantly changed\n\t\tif (\n\t\t\t!existingEntry || \n\t\t\t(now.getTime() - existingEntry.lastUpdate.getTime() >= this.LATENCY_UPDATE_THRESHOLD_MS) || \n\t\t\t(Math.abs(newLatency - existingEntry.latency) > 100) // Optional: log only significant changes\n\t\t) {\n\t\t\t// Update in-memory and buffer\n\t\t\tloggedInUser.date = now;\n\t\t\tthis.latencyBuffer.set(socketId, { latency: newLatency, lastUpdate: now });\n\t\t}\n\t}\n\n\t// Method to flush buffered latency updates in bulk\n\tprivate async flushThrottledLatencyUpdates() {\n\t\tif (this.latencyBuffer.size === 0) return; // No updates to flush\n\t\tif (this._latencyFlushInProgress) {\n\t\t\tthis._latencyFlushPending = true;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._latencyFlushInProgress = true;\n\n\t\tconst pendingEntries = Array.from(this.latencyBuffer.entries());\n\t\tthis.latencyBuffer.clear();\n\t\tconst updates = pendingEntries.map(([id_ws, { latency, lastUpdate }]) => ({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: { id_ws },\n\t\t\t\tupdate: { $set: { latency, date: lastUpdate } }\n\t\t\t}\n\t\t}));\n\n\t\ttry {\n\t\t\tawait LoggedInUsers.bulkWrite(updates, { ordered: false });\n\n\t\t\tif (this.getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Throttled latency batch update successful', updates.length);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tfor (const [id_ws, payload] of pendingEntries) {\n\t\t\t\tconst current = this.latencyBuffer.get(id_ws);\n\t\t\t\tif (!current || current.lastUpdate < payload.lastUpdate) {\n\t\t\t\t\tthis.latencyBuffer.set(id_ws, payload);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconsole.error(new Date(), 'Sub Manager', 'Throttled latency batch update failed', error);\n\t\t\t// Optional: implement retry logic or logging for failed updates\n\t\t}\n\t\tfinally {\n\t\t\tthis._latencyFlushInProgress = false;\n\t\t\tif (this._latencyFlushPending) {\n\t\t\t\tthis._latencyFlushPending = false;\n\t\t\t\tsetImmediate(() => this.flushThrottledLatencyUpdates());\n\t\t\t}\n\t\t}\n\t}\n\n\t// Subscribe to publication\n\tpublic async subscribe(messageRoute: string, messageDate: Date, ws: WebSocket, messageId: number, publication: string, subscriptionData: any[]) {\n\t\tthis._debugSubHits += 1;\n\t\tthis.connectDebug('Subscribe request', {\n\t\t\tpublication,\n\t\t\tmessageRoute,\n\t\t\tmessageId,\n\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\tuser: ws ? ws['user'] : null,\n\t\t\targs: Array.isArray(subscriptionData) ? subscriptionData.length : 0\n\t\t});\n\n\t\tif (!this._debugSubCollections.some(a => a.publication === publication)) {\n\t\t\tthis._debugSubCollections.push({\n\t\t\t\tpublication: publication,\n\t\t\t\thits: 1\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._debugSubCollections.find(a => a.publication === publication).hits += 1;\n\t\t}\n\n\t\tlet pub = this._publications[publication];\n\n\t\tif (!pub) {\n\t\t\tconsole.error(new Date(), 'No Publication: ' + publication);\n\t\t\tthis.connectDebug('Missing publication', { publication, messageRoute, messageId });\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tif (subscriptionData.length > 1 || subscriptionData[0]) {\n\t\t\t\tif (!pub.check) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Function For Pub ' + publication);\n\t\t\t\t\tthis.connectDebug('Missing check for publication', { publication, messageRoute, messageId });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (!pub.check._schema) {\n\t\t\t\t\tconsole.error(new Date(), 'No Check Schema For Pub ' + publication);\n\t\t\t\t\tthis.connectDebug('Missing check schema for publication', { publication, messageRoute, messageId });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet valObj = {};\n\t\t\t\t\tlet valKeys = Object.keys(pub.check._schema);\n\n\t\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\n\t\t\t\t\tfor (let i = 0; i < subscriptionData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = subscriptionData[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpub.check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\tif (errors) {\n\t\t\t\t\t\t\tconsole.error(new Date(), 'Error in Pub Check (' + publication + ')', errors);\n\t\t\t\t\t\t\tthis.connectDebug('Publication check failed', {\n\t\t\t\t\t\t\t\tpublication,\n\t\t\t\t\t\t\t\tmessageRoute,\n\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\targs: subscriptionData.length,\n\t\t\t\t\t\t\t\tvalObj,\n\t\t\t\t\t\t\t\terror: errors?.message || errors\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst staleRouteMessage = this.isStaleRouteMessage(ws, messageRoute, messageDate);\n\t\t\tif (messageRoute !== 'Bypass' && messageRoute !== '/' && !staleRouteMessage) {\n\t\t\t\tlet urlData = messageRoute.split('/');\n\t\t\t\tlet urlModule = '';\n\t\t\t\tlet urlNext = urlData[0];\n\n\t\t\t\tif (urlData[0] === '') {\n\t\t\t\t\turlModule = '/';\n\t\t\t\t\turlNext = urlData[1];\n\t\t\t\t}\n\n\t\t\t\turlModule += urlNext;\n\n\t\t\t\tif (urlData.length > 1) {\n\t\t\t\t\turlModule += '/';\n\t\t\t\t}\n\n\t\t\t\tlet otherRouteSubs = this._subscriptions.filter(a => a.clients.some(b => b.id_socket === ws['id_socket'] && b.messageRoute !== 'Bypass' && b.messageRoute !== '/' && b.messageRoute !== messageRoute && !b.messageRoute.startsWith(urlModule)));\n\n\t\t\t\tif (otherRouteSubs.length) {\n\t\t\t\t\t// ResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', 'SERVER - Detected Undestroyed Subscription - ' + this.serverConfig['CLIENT_NAME'], 'USER: ' + ws['user'] + ' (Socket: ' + ws['id_socket'] + ') ' + ' is on route: ' + messageRoute + ' but has the following subscriptions on other routes:' + JSON.stringify(otherRouteSubs, null, 2));\n\n\t\t\t\t\totherRouteSubs.forEach(otherSub => {\n\t\t\t\t\t\totherSub.clients.filter(a => a.id_socket === ws['id_socket']).forEach(client => {\n\t\t\t\t\t\t\tthis.unsubscribe(client.messageRoute, new Date(), ws, client.messageId, otherSub.publication, otherSub.subscriptionData);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst normalizedSubscriptionData = Array.isArray(subscriptionData) ? subscriptionData : [];\n\t\t\tconst subscriptionKey = JSON.stringify(normalizedSubscriptionData);\n\t\t\tlet sub = this._subscriptions.find(a => a.publication === publication && a.subscriptionKey === subscriptionKey);\n\t\t\tconst isAiPublication = this.isAiPublication(publication);\n\t\t\tconst wsId = ws ? ws['id_socket'] : null;\n\t\t\tconst wsUserId = ws ? ws['id_user'] : null;\n\n\t\t\t// If sub found (another user watching same data), add client to same sub\n\t\t\tif (sub) {\n\t\t\t\tif (isAiPublication && wsId) {\n\t\t\t\t\tconst existingIndex = sub.clients.findIndex(a => a.id_socket === wsId);\n\t\t\t\t\tif (existingIndex >= 0) {\n\t\t\t\t\t\tconst existingClient = sub.clients[existingIndex];\n\t\t\t\t\t\tfor (let i = sub.clients.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tif (i !== existingIndex && sub.clients[i].id_socket === wsId) {\n\t\t\t\t\t\t\t\tsub.clients.splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\texistingClient.id_user = wsUserId;\n\t\t\t\t\t\texistingClient.messageId = messageId;\n\t\t\t\t\t\texistingClient.messageRoute = messageRoute;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tsub.clients.push({\n\t\t\t\t\t\t\tid_user: wsUserId,\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\tid_socket: wsId,\n\t\t\t\t\t\t\tmessageRoute: messageRoute\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (!sub.clients.some(a => a.id_socket === ws['id_socket'] && a.messageId === messageId)) {\n\t\t\t\t\tsub.clients.push({\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\tmessageRoute: messageRoute\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If sub not found, create new sub\n\t\t\telse {\n\t\t\t\tthis._subscriptions.push({\n\t\t\t\t\tpublication: publication,\n\t\t\t\t\tsubscriptionKey: subscriptionKey,\n\t\t\t\t\tsubscriptionData: normalizedSubscriptionData,\n\t\t\t\t\tcollections: this.getPublicationCollections(publication),\n\t\t\t\t\tclients: [{\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\tmessageRoute: messageRoute,\n\t\t\t\t\t}],\n\t\t\t\tcacheId: 0,\n\t\t\t\trunning: false,\n\t\t\t\trunAgain: false,\n\t\t\t\tcollectionDependencies: new Map(),\n\t\t\t\tcollectionFilters: new Map(),\n\t\t\t\twatchAllCollections: new Set(),\n\t\t\t\tcollectionQueryMeta: new Map()\n\t\t\t});\n\t\t}\n\n\t\t\tif (!sub) {\n\t\t\t\tsub = this._subscriptions.find(a => a.publication === publication && a.subscriptionKey === subscriptionKey);\n\t\t\t}\n\t\t\tthis.ensureDependencyContainers(sub);\n\t\t\tthis.logAiSubscriptionEvent('sub', {\n\t\t\t\tpublication,\n\t\t\t\tsubscriptionKey,\n\t\t\t\tmessageId,\n\t\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\t\tmessageRoute,\n\t\t\t\tclients: sub?.clients?.length || 0,\n\t\t\t\tsubscriptionData: normalizedSubscriptionData\n\t\t\t});\n\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'New Sub', sub.publication, sub.running, sub.runAgain, sub.clients.length);\n\t\t\t}\n\n\t\t\t// Immediately send data to the new client\n\t\t\tawait this.processSubscription(sub, ws, messageId);\n\t\t}\n\t}\n\n\tpublic async createLoggedInUser(id_ws: string): Promise<LoggedInUserModel> {\n\t\tlet ws = this._websocketManager.getWebSocket(id_ws);\n\n\t\tif (ws) {\n\t\t\tlet user = {\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t__v: 0,\n\t\t\t\tdate: new Date(),\n\t\t\t\tid_user: ws['id_user'],\n\t\t\t\tuser: ws['user'],\n\t\t\t\tid_ws: ws['id_socket']\n\t\t\t};\n\t\t\t\n\t\t\tthis._loggedInUsers.push(user);\n\t\t\tawait LoggedInUsers.insertOne(user);\n\t\t\t\n\t\t\treturn user;\n\t\t}\n\t\telse {\n\t\t\tthrow new Error('Error in Create Logged In User: No WS');\n\t\t}\n\t}\n\n\t// Unsubscribe from publication \n\tpublic unsubscribe(messageRoute: string, messageDate: Date, ws: WebSocket, messageId: number, publication: string, subscriptionData: any[]) {\t\t\n\t\tthis._debugUnSubHits += 1;\n\n\t\tif (!this._publications[publication]) {\n\t\t\tconsole.log('No Publication: ' + publication);\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tconst normalizedSubscriptionData = Array.isArray(subscriptionData) ? subscriptionData : [];\n\t\t\tconst subscriptionKey = JSON.stringify(normalizedSubscriptionData);\n\t\t\tlet sub = this._subscriptions.find(a => a.publication === publication && a.subscriptionKey === subscriptionKey);\n\n\t\t\tif (sub) {\n\t\t\t\tconst isAiPublication = this.isAiPublication(publication);\n\t\t\t\tfor (let i = sub.clients.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (isAiPublication && sub.clients[i].id_socket === ws['id_socket']) {\n\t\t\t\t\t\tsub.clients.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t\telse if (sub.clients[i].id_user === ws['id_user'] && sub.clients[i].messageId === messageId && sub.clients[i].id_socket === ws['id_socket']) {\n\t\t\t\t\t\tsub.clients.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.logAiSubscriptionEvent('unsub', {\n\t\t\t\t\tpublication,\n\t\t\t\t\tsubscriptionKey,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tid_socket: ws ? ws['id_socket'] : null,\n\t\t\t\t\tmessageRoute,\n\t\t\t\t\tclients: sub.clients.length,\n\t\t\t\t\tsubscriptionData: normalizedSubscriptionData\n\t\t\t\t});\n\n\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\tconsole.log(new Date(), 'Unsub', sub.publication, sub.running, sub.runAgain, sub.clients.length);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t// Unsubscribe from publication\n\tpublic async unsubscribeAll(ws: WebSocket) {\n\t\tthis._debugUnSubAllHits += 1;\n\n\t\tif (ws) {\n\t\t\tif (ws['id_socket']) {\n\t\t\t\tthis._lastRouteBySocket.delete(ws['id_socket']);\n\t\t\t}\n\n\t\t\t// Check if WebSocket has already been unsubscribed\n\t\t\tif (ws['isUnsubscribed']) {\n\t\t\t\treturn; // Skip if already unsubscribed\n\t\t\t}\n\t\t\t\n\t\t\t// Mark the WebSocket as unsubscribed to prevent further calls\n\t\t\tws['isUnsubscribed'] = true;\n\t\t\t\n\t\t\tif (this._loggedInUsers.map(a => a.id_ws).indexOf(ws['id_socket']) >= 0) {\n\t\t\t\tthis._loggedInUsers.splice(this._loggedInUsers.map(a => a.id_ws).indexOf(ws['id_socket']), 1);\n\t\t\t}\n\t\t\t\n\t\t\tawait LoggedInUsers.deleteOne({ id_ws: ws['id_socket'] });\n\n\t\t\tlet userSubs = this._subscriptions.filter(a => a.clients.some(b => b.id_user === ws['id_user'] && b.id_socket === ws['id_socket']));\n\n\t\t\tfor (let i = userSubs.length - 1; i >= 0; i--) {\n\t\t\t\tlet sub = userSubs[i];\n\n\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\tif (sub.clients[j].id_socket === ws['id_socket']) {\n\t\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._websocketManager.removeWebSocket(ws);\n\t\t}\n\t}\n\n\tpublic getActiveSubscriptions() {\n\t\treturn this._subscriptions;\n\t}\n\n\t// Get publication collection\n\tprivate getPublicationCollections(publication: string) {\n\t\treturn this._publications[publication].collections;\n\t}\n\n\tprivate getWatchedDatabases(): string[] {\n\t\tconst mongoManager = ResolveIOServer.getMongoManager();\n\t\tconst managerDatabases = mongoManager?.getWatchedDatabases() || [];\n\n\t\tif (managerDatabases.length) {\n\t\t\treturn managerDatabases;\n\t\t}\n\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig();\n\t\tconst mainDb = config && typeof config['DATABASE'] === 'string' ? config['DATABASE'] : '';\n\n\t\treturn mainDb ? [mainDb] : [];\n\t}\n\n\tprivate resolveOplogMode(): 'auto' | 'change-stream' | 'local' {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUBSCRIPTION_OPLOG_MODE || process.env.OPLOG_MODE || config['SUBSCRIPTION_OPLOG_MODE'] || config['OPLOG_MODE'];\n\n\t\tif (typeof raw !== 'string' || !raw.trim()) {\n\t\t\treturn 'auto';\n\t\t}\n\n\t\tconst normalized = raw.trim().toLowerCase();\n\n\t\tif (['local', 'single', 'standalone', 'fallback', 'poll'].includes(normalized)) {\n\t\t\treturn 'local';\n\t\t}\n\n\t\tif (['change-stream', 'changestream', 'oplog', 'replica', 'replicaset', 'rs'].includes(normalized)) {\n\t\t\treturn 'change-stream';\n\t\t}\n\n\t\treturn 'auto';\n\t}\n\n\tprivate resolveLocalOplogResyncIntervalMs(): number {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.OPLOG_FALLBACK_RESYNC_MS\n\t\t\t|| process.env.SUBSCRIPTION_OPLOG_RESYNC_MS\n\t\t\t|| config['OPLOG_FALLBACK_RESYNC_MS']\n\t\t\t|| config['SUBSCRIPTION_OPLOG_RESYNC_MS'];\n\n\t\treturn this.parsePositiveNumber(raw);\n\t}\n\n\tprivate resolveResumeTokenMaxAgeMs(): number {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.OPLOG_RESUME_TOKEN_MAX_AGE_MS\n\t\t\t|| process.env.SUBSCRIPTION_OPLOG_RESUME_TOKEN_MAX_AGE_MS\n\t\t\t|| config['OPLOG_RESUME_TOKEN_MAX_AGE_MS']\n\t\t\t|| config['SUBSCRIPTION_OPLOG_RESUME_TOKEN_MAX_AGE_MS'];\n\n\t\treturn this.parsePositiveNumber(raw);\n\t}\n\n\tprivate resolveConnectDebug(): boolean {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.WS_CONNECT_DEBUG\n\t\t\t|| process.env.CONNECT_DEBUG\n\t\t\t|| config['WS_CONNECT_DEBUG']\n\t\t\t|| config['CONNECT_DEBUG'];\n\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveSubSendDebug(): boolean {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUB_SEND_DEBUG\n\t\t\t|| process.env.SUBSCRIPTION_SEND_DEBUG\n\t\t\t|| config['SUB_SEND_DEBUG']\n\t\t\t|| config['SUBSCRIPTION_SEND_DEBUG'];\n\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveSubSendLogEnabled(): boolean {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUB_SEND_LOG_ENABLED\n\t\t\t|| process.env.SUBSCRIPTION_SEND_LOG_ENABLED\n\t\t\t|| config['SUB_SEND_LOG_ENABLED']\n\t\t\t|| config['SUBSCRIPTION_SEND_LOG_ENABLED'];\n\n\t\tif (raw === undefined || raw === null || raw === '') {\n\t\t\treturn this._subSendDebug;\n\t\t}\n\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\tprivate resolveSubSendLogThresholdMs(): number {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUB_SEND_LOG_THRESHOLD_MS\n\t\t\t|| process.env.SUBSCRIPTION_SEND_LOG_THRESHOLD_MS\n\t\t\t|| config['SUB_SEND_LOG_THRESHOLD_MS']\n\t\t\t|| config['SUBSCRIPTION_SEND_LOG_THRESHOLD_MS'];\n\n\t\treturn this.parsePositiveNumber(raw);\n\t}\n\n\tprivate resolveSubSendLogBytes(): number {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUB_SEND_LOG_BYTES\n\t\t\t|| process.env.SUBSCRIPTION_SEND_LOG_BYTES\n\t\t\t|| config['SUB_SEND_LOG_BYTES']\n\t\t\t|| config['SUBSCRIPTION_SEND_LOG_BYTES'];\n\n\t\treturn this.parsePositiveNumber(raw);\n\t}\n\n\tprivate resolveSubSendLogSampleRate(): number {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.SUB_SEND_LOG_SAMPLE_RATE\n\t\t\t|| process.env.SUBSCRIPTION_SEND_LOG_SAMPLE_RATE\n\t\t\t|| config['SUB_SEND_LOG_SAMPLE_RATE']\n\t\t\t|| config['SUBSCRIPTION_SEND_LOG_SAMPLE_RATE'];\n\n\t\treturn this.parseSampleRate(raw, this._subSendLogSampleRate);\n\t}\n\n\tprivate resolveAiSubscriptionDebug(): boolean {\n\t\tconst config = this.serverConfig || ResolveIOServer.getServerConfig() || {};\n\t\tconst raw = process.env.AI_ASSISTANT_SUB_DEBUG\n\t\t\t|| process.env.AI_TERMINAL_SUB_DEBUG\n\t\t\t|| config['AI_ASSISTANT_SUB_DEBUG']\n\t\t\t|| config['AI_TERMINAL_SUB_DEBUG'];\n\n\t\treturn this.parseDebugFlag(raw);\n\t}\n\n\n\tprivate parseDebugFlag(value: any): boolean {\n\t\tif (value === true) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value === false || value === null || value === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (typeof value === 'number') {\n\t\t\treturn value === 1;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tconst normalized = value.trim().toLowerCase();\n\t\t\treturn ['1', 'true', 'yes', 'y', 'on'].includes(normalized);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate parsePositiveNumber(value: any): number {\n\t\tif (typeof value === 'number' && Number.isFinite(value) && value > 0) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (typeof value === 'string' && value.trim().length) {\n\t\t\tconst parsed = parseInt(value, 10);\n\t\t\tif (Number.isFinite(parsed) && parsed > 0) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tprivate parseSampleRate(value: any, fallback: number): number {\n\t\tconst parsed = parseFloat(value ?? '');\n\t\tif (Number.isFinite(parsed) && parsed > 0 && parsed <= 1) {\n\t\t\treturn parsed;\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tprivate shouldLogSubSend(durationMs: number, payloadBytes: number | null): boolean {\n\t\tif (!this._subSendLogEnabled) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._subSendLogSampleRate < 1 && Math.random() > this._subSendLogSampleRate) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._subSendDebug) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this._subSendLogThresholdMs > 0 && durationMs >= this._subSendLogThresholdMs) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (payloadBytes !== null && this._subSendLogBytes > 0 && payloadBytes >= this._subSendLogBytes) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate logSubSend(sub: ActiveSubscriptionModel, details: { collection: string; type: string; clients: number; durationMs: number; payloadBytes: number | null }) {\n\t\tif (!details.clients) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.shouldLogSubSend(details.durationMs, details.payloadBytes)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log(new Date(), '[Sub Send]', JSON.stringify({\n\t\t\tpublication: sub.publication,\n\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\tclients: details.clients,\n\t\t\tdurationMs: details.durationMs,\n\t\t\tpayloadBytes: details.payloadBytes,\n\t\t\tcollection: details.collection,\n\t\t\ttype: details.type\n\t\t}));\n\t}\n\n\tprivate isAiPublication(publication: string): boolean {\n\t\treturn publication === 'aiTerminalMessages' || publication === 'aiTerminalConversations';\n\t}\n\n\tprivate logAiSubSend(details: {\n\t\tpublication: string;\n\t\tsubscriptionKey: string;\n\t\tmessageId: number;\n\t\tid_socket: string;\n\t\tclients: number;\n\t\tpayloadBytes: number | null;\n\t\tpacked: boolean;\n\t\tcacheHit?: boolean;\n\t\tcollection: string;\n\t\ttype: string;\n\t\tsubscriptionData?: any[];\n\t}): void {\n\t\tif (!this._aiWorkerDebug) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.isAiPublication(details.publication)) {\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(new Date(), '[AI Worker Debug] subSend', JSON.stringify({\n\t\t\tpublication: details.publication,\n\t\t\tsubscriptionKey: details.subscriptionKey,\n\t\t\tmessageId: details.messageId,\n\t\t\tid_socket: details.id_socket,\n\t\t\tclients: details.clients,\n\t\t\tpayloadBytes: details.payloadBytes,\n\t\t\tpacked: details.packed,\n\t\t\tcacheHit: details.cacheHit ?? false,\n\t\t\tcollection: details.collection,\n\t\t\ttype: details.type,\n\t\t\tsubscriptionData: details.subscriptionData\n\t\t}));\n\t}\n\n\tprivate logAiSubscriptionEvent(event: 'sub' | 'unsub', details: {\n\t\tpublication: string;\n\t\tsubscriptionKey: string;\n\t\tmessageId: number;\n\t\tid_socket: string;\n\t\tmessageRoute: string;\n\t\tclients: number;\n\t\tsubscriptionData?: any[];\n\t}): void {\n\t\tif (!this._aiSubscriptionDebug) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.isAiPublication(details.publication)) {\n\t\t\treturn;\n\t\t}\n\t\tconst wsId = details.id_socket || 'unknown';\n\t\tconst key = `${event}:${wsId}:${details.publication}:${details.subscriptionKey}`;\n\t\tconst now = Date.now();\n\t\tconst lastAt = this._aiSubLastAt.get(key);\n\t\tconst deltaMs = lastAt ? now - lastAt : null;\n\t\tthis._aiSubLastAt.set(key, now);\n\t\tconsole.log(new Date(), `[AI Sub Debug] ${event}`, JSON.stringify({\n\t\t\tpublication: details.publication,\n\t\t\tsubscriptionKey: details.subscriptionKey,\n\t\t\tmessageId: details.messageId,\n\t\t\tmessageRoute: details.messageRoute,\n\t\t\tid_socket: wsId,\n\t\t\tclients: details.clients,\n\t\t\tdeltaMs,\n\t\t\tsubscriptionData: details.subscriptionData\n\t\t}));\n\t}\n\n\tprivate connectDebug(message: string, details?: Record<string, unknown>) {\n\t\tif (!this._connectDebug) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (details) {\n\t\t\tconsole.log(new Date(), '[Connect Debug]', message, JSON.stringify(details));\n\t\t}\n\t\telse {\n\t\t\tconsole.log(new Date(), '[Connect Debug]', message);\n\t\t}\n\t}\n\n\tprivate parsePositiveFloat(value: any): number {\n\t\tif (typeof value === 'number' && Number.isFinite(value) && value > 0) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (typeof value === 'string' && value.trim().length) {\n\t\t\tconst parsed = parseFloat(value);\n\t\t\tif (Number.isFinite(parsed) && parsed > 0) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tprivate isChangeStreamUnsupported(error: any): boolean {\n\t\tconst code = typeof error?.code === 'number' ? error.code : null;\n\t\tconst codeName = typeof error?.codeName === 'string' ? error.codeName.toLowerCase() : '';\n\t\tconst message = typeof error?.message === 'string' ? error.message.toLowerCase() : '';\n\n\t\tif (code === 40573) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (codeName && codeName.includes('changestream')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (message.includes('change stream') && message.includes('replica')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (message.includes('change stream') && message.includes('not supported')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (code === 13 && message.includes('allchangesforcluster')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (code === 13 && message.includes('not authorized') && message.includes('$db: \"admin\"')) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate isResumeTokenInvalid(error: any): boolean {\n\t\tconst code = typeof error?.code === 'number' ? error.code : null;\n\t\tconst codeName = typeof error?.codeName === 'string' ? error.codeName.toLowerCase() : '';\n\t\tconst message = typeof error?.message === 'string' ? error.message.toLowerCase() : '';\n\n\t\tif (code === 286) {\n\t\t\t// ChangeStreamHistoryLost\n\t\t\treturn true;\n\t\t}\n\n\t\tif (codeName.includes('changestreamhistorylost')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (message.includes('resume token') && (\n\t\t\tmessage.includes('not found') ||\n\t\t\tmessage.includes('not possible') ||\n\t\t\tmessage.includes('no longer') ||\n\t\t\tmessage.includes('not in the oplog') ||\n\t\t\tmessage.includes('too old')\n\t\t)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (message.includes('resume of change stream') && message.includes('not possible')) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate isChangeStreamDocumentTooLarge(error: any): boolean {\n\t\tconst code = typeof error?.code === 'number' ? error.code : null;\n\t\tconst codeName = typeof error?.codeName === 'string' ? error.codeName.toLowerCase() : '';\n\t\tconst message = typeof error?.message === 'string' ? error.message.toLowerCase() : '';\n\n\t\tif (code === 10334) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (codeName.includes('bsonobjecttoolarge')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (message.includes('bsonobj size') && message.includes('16mb')) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate async enableLocalOplogFallback(reason: string, error?: any) {\n\t\tif (this._useLocalOplog) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._useLocalOplog = true;\n\t\tthis._oplogMode = 'local';\n\t\tthis._oplogRetryCount = 0;\n\n\t\tif (this._oplog$ && !this._oplog$.closed) {\n\t\t\ttry {\n\t\t\t\tthis._oplog$.removeAllListeners();\n\t\t\t\tawait this._oplog$.close();\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// ignore close errors\n\t\t\t}\n\t\t\tthis._oplog$ = null;\n\t\t}\n\n\t\tconst message = typeof error?.message === 'string' ? error.message : '';\n\t\tconsole.log(new Date(), 'oplog fallback enabled', reason, message ? `(${message})` : '');\n\n\t\tthis.queueFullResync('oplog-fallback-enabled');\n\n\t\tif (this._localOplogResyncIntervalMs > 0 && !this._localOplogResyncTimer) {\n\t\t\tthis._localOplogResyncTimer = setInterval(() => {\n\t\t\t\tthis.queueFullResync('oplog-fallback-poll');\n\t\t\t}, this._localOplogResyncIntervalMs);\n\t\t}\n\t}\n\n\tpublic getUseLocalOplog() {\n\t\treturn this._useLocalOplog;\n\t}\n\n\tpublic async handleMongoReconnect(reason: string): Promise<void> {\n\t\tif (this._useLocalOplog) {\n\t\t\tthis.queueFullResync(`mongo-reconnect:${reason}`);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst resumeToken = this._lastResumeToken || await this.loadResumeToken();\n\t\t\tawait this.tailOpLog(resumeToken || undefined);\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(new Date(), 'Sub Manager', 'Mongo reconnect: tailOpLog restart failed', reason, error);\n\t\t}\n\n\t\tthis.queueFullResync(`mongo-reconnect:${reason}`);\n\t}\n\n\tpublic notifyLocalOplog(collection: string, type = 'update') {\n\t\tif (!this._useLocalOplog) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetImmediate(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.invalidatePubsCache(collection, type);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// ignore local oplog cache invalidation errors\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getResumeTokenDocId(): string {\n\t\tif (process.env.NODE_APP_INSTANCE) {\n\t\t\treturn `oplog:${process.env.NODE_APP_INSTANCE}`;\n\t\t}\n\n\t\t// Fallback: avoid cross-process contention when NODE_APP_INSTANCE is not set.\n\t\treturn `oplog:${process.pid}`;\n\t}\n\n\tprivate async loadResumeToken(): Promise<ResumeToken | null> {\n\t\ttry {\n\t\t\tconst db = ResolveIOServer.getMainDB();\n\t\t\tif (!db) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst loadToken = async () => {\n\t\t\t\tconst collection = db.collection<OplogResumeTokenDocument>(this.RESUME_TOKEN_COLLECTION);\n\t\t\t\tconst doc = await collection.findOne({ _id: this.getResumeTokenDocId() });\n\t\t\t\tconst token = doc?.token || null;\n\n\t\t\t\tif (!token) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst maxAgeMs = this.resolveResumeTokenMaxAgeMs();\n\t\t\t\tif (maxAgeMs > 0 && doc?.updatedAt instanceof Date) {\n\t\t\t\t\tconst ageMs = Date.now() - doc.updatedAt.getTime();\n\t\t\t\t\tif (ageMs > maxAgeMs) {\n\t\t\t\t\t\tawait collection.deleteOne({ _id: this.getResumeTokenDocId() });\n\t\t\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Resume token expired, clearing', round(ageMs / 1000), 's');\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn token;\n\t\t\t};\n\n\t\t\tconst mongoManager = ResolveIOServer.getMongoManager();\n\t\t\treturn mongoManager ? await mongoManager.runWithoutSession(loadToken) : await loadToken();\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(new Date(), 'Sub Manager', 'Failed to load oplog resume token', error);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async saveResumeToken(token: ResumeToken): Promise<void> {\n\t\tif (!token) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst db = ResolveIOServer.getMainDB();\n\t\t\tif (!db) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst saveToken = async () => {\n\t\t\t\tawait db.collection<OplogResumeTokenDocument>(this.RESUME_TOKEN_COLLECTION).updateOne(\n\t\t\t\t\t{ _id: this.getResumeTokenDocId() },\n\t\t\t\t\t{ $set: { token, updatedAt: new Date() } },\n\t\t\t\t\t{ upsert: true }\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst mongoManager = ResolveIOServer.getMongoManager();\n\t\t\tif (mongoManager) {\n\t\t\t\tawait mongoManager.runWithoutSession(saveToken);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait saveToken();\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(new Date(), 'Sub Manager', 'Failed to persist oplog resume token', error);\n\t\t}\n\t}\n\n\tprivate async clearResumeToken(): Promise<void> {\n\t\ttry {\n\t\t\tconst db = ResolveIOServer.getMainDB();\n\t\t\tif (!db) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst clearToken = async () => {\n\t\t\t\tawait db.collection<OplogResumeTokenDocument>(this.RESUME_TOKEN_COLLECTION)\n\t\t\t\t\t.deleteOne({ _id: this.getResumeTokenDocId() });\n\t\t\t};\n\n\t\t\tconst mongoManager = ResolveIOServer.getMongoManager();\n\t\t\tif (mongoManager) {\n\t\t\t\tawait mongoManager.runWithoutSession(clearToken);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tawait clearToken();\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(new Date(), 'Sub Manager', 'Failed to clear oplog resume token', error);\n\t\t}\n\t}\n\n\tprivate queueResumeTokenSave(token: ResumeToken, options?: { force?: boolean }) {\n\t\tif (!token) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._lastResumeToken = token;\n\n\t\tconst now = Date.now();\n\t\tconst shouldSave = !!options?.force || (now - this._lastResumeTokenSaveMs) >= this.RESUME_TOKEN_SAVE_INTERVAL_MS;\n\n\t\tif (!shouldSave) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._resumeTokenSavePromise !== null) {\n\t\t\tif (options?.force) {\n\t\t\t\tthis._resumeTokenSaveForcePending = true;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._lastResumeTokenSaveMs = now;\n\t\tconst tokenToSave = this._lastResumeToken;\n\n\t\tthis._resumeTokenSavePromise = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.saveResumeToken(tokenToSave);\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis._resumeTokenSavePromise = null;\n\t\t\t\tif (this._resumeTokenSaveForcePending) {\n\t\t\t\t\tthis._resumeTokenSaveForcePending = false;\n\t\t\t\t\tthis.queueResumeTokenSave(this._lastResumeToken, { force: true });\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t}\n\n\tprivate queueFullResync(reason: string) {\n\t\tif (this._fullResyncPromise !== null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._fullResyncPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.fullResyncSubscriptions(reason);\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis._fullResyncPromise = null;\n\t\t\t}\n\t\t})();\n\t}\n\n\tprivate async fullResyncSubscriptions(reason: string): Promise<void> {\n\t\ttry {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Sub Manager', 'Full subscription resync', reason, this._subscriptions.length);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tResolveIOServer.getMongoManager()?.clearQueryCache?.(reason);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// ignore cache-clear errors\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis._nodeCache?.flushAll?.();\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\t// ignore cache-clear errors\n\t\t\t}\n\n\t\t\tconst subs = this._subscriptions.slice();\n\n\t\t\tfor (const sub of subs) {\n\t\t\t\tif (!sub?.clients?.length) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst pub = this._publications[sub.publication];\n\t\t\t\tif (!pub) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (sub.running) {\n\t\t\t\t\tsub.runAgain = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (pub.user_specific) {\n\t\t\t\t\tfor (const client of sub.clients) {\n\t\t\t\t\t\tconst ws = this._websocketManager.getWebSocket(client.id_socket);\n\t\t\t\t\t\tif (ws?.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.sendDataToOneWithRetry(ws, client.messageId, sub, '', reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t\t// ignore individual failures\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tawait this.sendDataToAllWithRetry(sub, '', reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(new Date(), 'Sub Manager', 'Full resync failed', reason, error);\n\t\t}\n\t}\n\n\t// Watch (tail) Mongo's operation log on the entire database (all insert/modify/delete will trigger this function)\n\tprivate async tailOpLog(resumeToken?: ResumeToken) {\n\t\tif (this._useLocalOplog) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._oplog$ && !this._oplog$.closed) {\n\t\t\tthis._oplog$.removeAllListeners();\n\t\t\tawait this._oplog$.close();\n\t\t\tthis._oplog$ = null;\n\t\t}\n\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tawait new Promise(resolve => setTimeout(resolve, 1000));\n\n\t\tif (!this._oplog$ || this._oplog$.closed) {\n\t\t\tthis._oplogRetryCount += 1;\n\n\t\t\tif (this._oplogRetryCount > 5) {\n\t\t\t\tconsole.error('****************** TAIL OPLOG ERROR, RETRYING A BUNCH OF TIMES, KILLING PROCESS **************************');\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconst watchDatabases = this.getWatchedDatabases();\n\t\t\tconst pipeline = [\n\t\t\t\t{\n\t\t\t\t\t$match: {\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t...(watchDatabases.length ? [{ 'ns.db': { $in: watchDatabases } }] : []),\n\t\t\t\t\t\t\t{'ns.coll': { $nin: [\n\t\t\t\t\t\t\t\t'log-method-latencies', \n\t\t\t\t\t\t\t\t'log-subscriptions', \n\t\t\t\t\t\t\t\t'logs', \n\t\t\t\t\t\t\t\t'counters', \n\t\t\t\t\t\t\t\t'cron-job-histories', \n\t\t\t\t\t\t\t\t'email-histories',\n\t\t\t\t\t\t\t\t'qb-soap-request-histories', \n\t\t\t\t\t\t\t\t'qb-soap-request-responses', \n\t\t\t\t\t\t\t\t'qb-soap-requests',\n\t\t\t\t\t\t\t\t'qb-soap-retries',\n\t\t\t\t\t\t\t\tthis.RESUME_TOKEN_COLLECTION\n\t\t\t\t\t\t\t] }},\n\t\t\t\t\t\t\t{'ns.coll': { $not: /.*\\.versions$/ }},\n\t\t\t\t\t\t\t{'ns.coll': { $not: /^monitor-/ }},\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t];\n\t\n\t\t\t\tlet lastResumeToken: ResumeToken;\n\t\t\t\tlet startedWithResumeToken = false;\n\t\t\t\tlet sawChangeEvent = false;\n\t\t\t\tlet resumeTokenInvalidated = false;\n\t\t\t\tconst streamStartedAtMs = Date.now();\n\t\t\n\t\t\t\tif (resumeToken) {\n\t\t\t\t\tlastResumeToken = resumeToken;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis._oplog$ = ResolveIOServer.getMongoConnection().watch(pipeline, { resumeAfter: resumeToken, fullDocument: 'updateLookup' });\n\t\t\t\t\t\tstartedWithResumeToken = true;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\tif (this.isChangeStreamUnsupported(error)) {\n\t\t\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-unsupported', error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.isChangeStreamDocumentTooLarge(error)) {\n\t\t\t\t\t\t\tawait this.clearResumeToken();\n\t\t\t\t\t\t\tlastResumeToken = null;\n\t\t\t\t\t\t\tthis.queueFullResync('oplog-change-stream-document-too-large');\n\t\t\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-document-too-large', error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this._oplog$) {\n\t\t\t\t\t\t\tthis._oplog$.removeAllListeners();\n\t\t\t\t\t\t\tawait this._oplog$.close();\n\t\t\t\t\t\t\tthis._oplog$ = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tawait this.clearResumeToken();\n\t\t\t\t\t\tlastResumeToken = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconsole.log(new Date(), 'oplog resumeAfter failed, starting fresh', error);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis._oplog$ = ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });\n\t\t\t\t\t\t\tstartedWithResumeToken = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (innerError) {\n\t\t\t\t\t\t\tif (this.isChangeStreamUnsupported(innerError)) {\n\t\t\t\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-unsupported', innerError);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthrow innerError;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.queueFullResync('oplog-resumeAfter-failed');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis._oplog$ = ResolveIOServer.getMongoConnection().watch(pipeline, { fullDocument: 'updateLookup' });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\tif (this.isChangeStreamUnsupported(error)) {\n\t\t\t\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-unsupported', error);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.isChangeStreamDocumentTooLarge(error)) {\n\t\t\t\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-document-too-large', error);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconsole.log(new Date(), 'oplog started', startedWithResumeToken ? '(resumeAfter)' : '');\n\n\t\t\tthis._oplog$.on('change', async (doc: ChangeStreamInsertDocument | ChangeStreamUpdateDocument | ChangeStreamReplaceDocument | ChangeStreamDeleteDocument) => {\n\t\t\t\tsawChangeEvent = true;\n\t\t\t\tthis._oplogRetryCount = 0;\n\n\t\t\t\tif (doc.ns) {\n\t\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\t\tconsole.log(new Date(), 'Oplog Hit', doc.ns);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet collection = doc.ns.coll;\n\n\t\t\t\t\tif (!this._debugOplogCollections.some(a => a.collection === doc.ns.coll && a.type === doc.operationType)) {\n\t\t\t\t\t\tthis._debugOplogCollections.push({\n\t\t\t\t\t\t\tcollection: doc.ns.coll,\n\t\t\t\t\t\t\ttype: doc.operationType,\n\t\t\t\t\t\t\thits: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._debugOplogCollections.find(a => a.collection === doc.ns.coll && a.type === doc.operationType).hits += 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (collection) {\n\t\t\t\t\t\tthis._debugOplogHits += 1;\n\t\t\t\t\t\tconst fullDocument = doc['fullDocument'];\n\t\t\t\t\t\tconst docId = doc.documentKey && doc.documentKey['_id'] !== undefined ? doc.documentKey['_id'] : (fullDocument && fullDocument['_id'] !== undefined ? fullDocument['_id'] : null);\n\n\t\t\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\t\t\tif (collection === 'support-tickets') {\n\t\t\t\t\t\t\t\tif (this.serverConfig['ROOT_URL'] === 'https://resolveio.com') {\n\t\t\t\t\t\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod.call(ResolveIOServer.getMainServer().getMethodManager(), 'sendSupportTicketEmail', doc.documentKey['_id']);\n\t\t\t\t\t\t\t\t\tawait this.invalidatePubsCache(collection, 'insert', docId, fullDocument);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (collection !== 'method-responses') {\n\t\t\t\t\t\t\t\tawait this.invalidatePubsCache(collection, 'insert', docId, fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (doc.operationType === 'update' || doc.operationType === 'replace') {\n\t\t\t\t\t\t\tif (collection !== 'method-responses') {\n\t\t\t\t\t\t\t\tawait this.invalidatePubsCache(collection, 'update', docId, fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\t\t\tif (collection !== 'method-responses') {\n\t\t\t\t\t\t\t\tawait this.invalidatePubsCache(collection, 'delete', docId);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (collection === 'flags') {\n\t\t\t\t\t\tlet flag = await Flags.findOne({ type: 'Enable Debug' });\n\t\t\t\t\t\tlet dependencyFlag = await Flags.findOne({ type: 'Enable Dependency Debug' });\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (flag && flag.value) {\n\t\t\t\t\t\t\tthis._enableDebug = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._enableDebug = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (dependencyFlag && dependencyFlag.value) {\n\t\t\t\t\t\t\tthis._enableDependencyDebug = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._enableDependencyDebug = process.env.ENABLE_DEPENDENCY_DEBUG === 'true';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastResumeToken = doc._id;\n\t\t\t\t\t\tthis.queueResumeTokenSave(lastResumeToken);\n\n\t\t\t\t\t\tif ((!process.env.NODE_APP_INSTANCE || process.env.NODE_APP_INSTANCE === '0') && (process.env.IS_WORKERS_ENABLED === 'false' || (process.env.IS_WORKER_INSTANCE === 'true' && process.env.WORKER_INDEX === '0'))) {\n\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._oplog$.on('error', async error => {\n\t\t\t\tconsole.log(new Date(), 'oplog error', error);\n\t\t\t\tif (this.isChangeStreamUnsupported(error)) {\n\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-unsupported', error);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.isChangeStreamDocumentTooLarge(error)) {\n\t\t\t\t\tawait this.clearResumeToken();\n\t\t\t\t\tlastResumeToken = null;\n\t\t\t\t\tthis.queueFullResync('oplog-change-stream-document-too-large');\n\t\t\t\t\tawait this.enableLocalOplogFallback('change-stream-document-too-large', error);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.isResumeTokenInvalid(error)) {\n\t\t\t\t\tresumeTokenInvalidated = true;\n\t\t\t\t\tawait this.clearResumeToken();\n\t\t\t\t\tlastResumeToken = null;\n\t\t\t\t\tthis.queueFullResync('oplog-resume-token-invalid');\n\t\t\t\t}\n\n\t\t\t\tawait this._oplog$.close();\n\t\t\t});\n\n\t\t\tthis._oplog$.on('end', async () => {\n\t\t\t\tconsole.log(new Date(), 'oplog end');\n\t\t\t\tawait this._oplog$.close();\n\t\t\t});\n\n\t\t\t\tthis._oplog$.on('close', async () => {\n\t\t\t\t\tconsole.log(new Date(), 'oplog close');\n\t\t\t\t\tconst retryThresholdReached = this._oplogRetryCount >= this.RESUME_TOKEN_AUTO_HEAL_RETRY_THRESHOLD;\n\t\t\t\t\tconst shouldAutoHealResumeToken = startedWithResumeToken\n\t\t\t\t\t\t&& !!lastResumeToken\n\t\t\t\t\t\t&& !sawChangeEvent\n\t\t\t\t\t\t&& (resumeTokenInvalidated || retryThresholdReached);\n\n\t\t\t\t\tif (shouldAutoHealResumeToken) {\n\t\t\t\t\t\tawait this.clearResumeToken();\n\t\t\t\t\t\tlastResumeToken = null;\n\t\t\t\t\t\tif (!resumeTokenInvalidated) {\n\t\t\t\t\t\t\tthis.queueFullResync('oplog-resume-token-auto-heal');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\tnew Date(),\n\t\t\t\t\t\t\t'Sub Manager',\n\t\t\t\t\t\t\t'Auto-healed stale oplog resume token',\n\t\t\t\t\t\t\t{ retryCount: this._oplogRetryCount, streamLifetimeMs: Date.now() - streamStartedAtMs }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (lastResumeToken) {\n\t\t\t\t\t\tthis.queueResumeTokenSave(lastResumeToken, { force: true });\n\t\t\t\t\t}\n\t\t\t\t\tthis._oplog$.removeAllListeners();\n\t\t\t\t\tthis._oplog$ = null;\n\t\t\t\t\tawait this.tailOpLog(lastResumeToken);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tprivate packCachePayload(data: any): Buffer | null {\n\t\tif (data === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst packed = pack(data);\n\t\t\treturn Buffer.isBuffer(packed) ? packed : Buffer.from(packed);\n\t\t}\n\t\tcatch (err) {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Sub Cache', 'Pack Failed', err?.message || err);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate decodeCachePayload(raw: any): any | null {\n\t\tif (!raw) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (Buffer.isBuffer(raw)) {\n\t\t\ttry {\n\t\t\t\treturn unpack(raw);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\tconsole.log(new Date(), 'Sub Cache', 'Unpack Failed', err?.message || err);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (raw instanceof Uint8Array) {\n\t\t\ttry {\n\t\t\t\treturn unpack(raw);\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\tconsole.log(new Date(), 'Sub Cache', 'Unpack Failed', err?.message || err);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif (raw instanceof ArrayBuffer) {\n\t\t\ttry {\n\t\t\t\treturn unpack(new Uint8Array(raw));\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\tconsole.log(new Date(), 'Sub Cache', 'Unpack Failed', err?.message || err);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// Treat legacy string caches as invalid to avoid JSON parsing in the hot path.\n\t\tif (typeof raw === 'string') {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn raw;\n\t}\n\n\tprivate getCacheBuffer(raw: any): Buffer | null {\n\t\tif (!raw) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (Buffer.isBuffer(raw)) {\n\t\t\treturn raw;\n\t\t}\n\n\t\tif (raw instanceof Uint8Array) {\n\t\t\treturn Buffer.from(raw);\n\t\t}\n\n\t\tif (raw instanceof ArrayBuffer) {\n\t\t\treturn Buffer.from(new Uint8Array(raw));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate shouldCachePayload(sub: ActiveSubscriptionModel, payload: Buffer | Uint8Array | null): boolean {\n\t\tif (!payload || payload.byteLength >= 1000000) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (sub.collections.includes('logs')) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (sub.collections.find(a => a.endsWith('.versions'))) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (sub.collections.find(a => a.startsWith('monitor-'))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tprivate buffersEqual(a: Uint8Array | Buffer | null, b: Uint8Array | Buffer | null): boolean {\n\t\tif (!a || !b) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (a.byteLength !== b.byteLength) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst toBuffer = (value: Uint8Array | Buffer): Buffer => {\n\t\t\tif (Buffer.isBuffer(value)) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tconst buffer = value.buffer as ArrayBuffer;\n\t\t\treturn Buffer.from(buffer, value.byteOffset, value.byteLength);\n\t\t};\n\n\t\tconst aBuf = toBuffer(a);\n\t\tconst bBuf = toBuffer(b);\n\t\treturn aBuf.equals(bBuf as Uint8Array);\n\t}\n\n\tprivate async processSubscription(sub: ActiveSubscriptionModel, ws: WebSocket, messageId: number) {\n\t\tif (!this._publications[sub.publication].user_specific) {\t\t\t\n\t\t\tif (sub.cacheId) {\n\t\t\t\ttry {\n\t\t\t\t\tconst cachedRaw = this._nodeCache.get(sub.cacheId);\n\t\t\t\t\tconst cachedBuffer = this.getCacheBuffer(cachedRaw);\n\n\t\t\t\t\t\tif (cachedBuffer && cachedBuffer.byteLength) {\n\t\t\t\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\t\t\t\tconsole.log(new Date(), 'Process Sub, Cache (packed)', sub.publication);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._websocketManager.sendPackedBuffer(ws, messageId, false, cachedBuffer, 'msgpack');\n\t\t\t\t\t\t\tthis.logAiSubSend({\n\t\t\t\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\t\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\t\tclients: 1,\n\t\t\t\t\t\t\t\tpayloadBytes: cachedBuffer.byteLength,\n\t\t\t\t\t\t\t\tpacked: true,\n\t\t\t\t\t\t\t\tcacheHit: true,\n\t\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\t\ttype: 'cache',\n\t\t\t\t\t\t\t\tsubscriptionData: sub.subscriptionData\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst cacheData = this.decodeCachePayload(cachedRaw);\n\t\t\t\t\t\t\tif (cacheData === null || cacheData === undefined) {\n\t\t\t\t\t\t\t\tthrow new Error('cache-miss');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: cacheData\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\t\t\tconsole.log(new Date(), 'Process Sub, Cache', sub.publication);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t\tthis.logAiSubSend({\n\t\t\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\t\t\t\t\tmessageId,\n\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\tclients: 1,\n\t\t\t\t\t\t\tpayloadBytes: cacheData ? Buffer.byteLength(JSON.stringify(cacheData)) : null,\n\t\t\t\t\t\t\tpacked: false,\n\t\t\t\t\t\t\tcacheHit: true,\n\t\t\t\t\t\t\tcollection: '',\n\t\t\t\t\t\t\ttype: 'cache',\n\t\t\t\t\t\t\tsubscriptionData: sub.subscriptionData\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch {\n\t\t\t\t\tthis._nodeCache.del(sub.cacheId);\n\t\t\t\t\tsub.cacheId = 0;\n\n\t\t\t\t\tawait this.sendDataToAllWithRetry(sub, '', 'newSub');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\tconsole.log(new Date(), 'Process Sub, Non - Cache', sub.publication, sub.running);\n\t\t\t\t}\n\n\t\t\t\tif (sub.running) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait this.sendDataToAllWithRetry(sub, '', 'newSub');\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._enableDebug) {\n\t\t\t\tconsole.log(new Date(), 'Process Sub Specific, Non - Cache', sub.publication, sub.running);\n\t\t\t}\n\n\t\t\tif (sub.running) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tawait this.sendDataToOneWithRetry(ws, messageId, sub, '', 'newSub');\n\t\t}\n\t}\n\n\tprivate async sendDataToOne(ws: WebSocket, messageId: number, sub: ActiveSubscriptionModel, collection: string, type: string) {\n\t\tif (!ws || ws.readyState !== WebSocket.OPEN) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('User Specific Publication', sub.publication, '', '', sub.subscriptionData);\n\t\tlet dependencySnapshot: DependencyContextSnapshot;\n\t\tlet res;\n\t\ttry {\n\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod.call(ResolveIOServer.getMainServer().getMethodManager(), 'insertSubscriptionLog', type, sub.publication, collection, JSON.stringify(sub.subscriptionData));\n\n\t\t\tconst execution = await this.runPublicationExecution(sub, ws['id_user']);\n\t\t\tres = execution.result;\n\t\t\tdependencySnapshot = execution.snapshot;\n\t\t\tthis.updateSubscriptionDependencies(sub, dependencySnapshot);\n\t\t\tconst packedRes = execution.packedResult ?? this.packCachePayload(res);\n\t\t\tconst payloadBytes = packedRes ? packedRes.byteLength : null;\n\n\t\t\tif (execution.packedResult) {\n\t\t\t\tthis._websocketManager.sendPackedBuffer(\n\t\t\t\t\tws,\n\t\t\t\t\tmessageId,\n\t\t\t\t\tfalse,\n\t\t\t\t\texecution.packedResult,\n\t\t\t\t\texecution.encoding || 'msgpack',\n\t\t\t\t\t{ passThrough: !!execution.workerUsed }\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\thasError: false,\n\t\t\t\t\tdata: res\n\t\t\t\t};\n\n\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t}\n\t\t\tthis.logAiSubSend({\n\t\t\t\tpublication: sub.publication,\n\t\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\t\tmessageId,\n\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\tclients: 1,\n\t\t\t\tpayloadBytes,\n\t\t\t\tpacked: !!execution.packedResult,\n\t\t\t\tcacheHit: false,\n\t\t\t\tcollection,\n\t\t\t\ttype,\n\t\t\t\tsubscriptionData: sub.subscriptionData\n\t\t\t});\n\t\t}\n\t\tcatch (err) {\n\t\t\tconst { error: normalizedError, correlationId } = ensureErrorWithCorrelation(err);\n\n\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\tmessageId: messageId,\n\t\t\t\thasError: true,\n\t\t\t\tdata: Object.assign({}, normalizedError, { correlationId })\n\t\t\t};\n\t\t\t\n\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\n\t\t\tconst errorPayload = {\n\t\t\t\tpublication: sub.publication,\n\t\t\t\tsubscriptionData: sub.subscriptionData,\n\t\t\t\ttype,\n\t\t\t\tcollection,\n\t\t\t\tmessageId,\n\t\t\t\tcorrelationId,\n\t\t\t\terror: {\n\t\t\t\t\tname: normalizedError?.name,\n\t\t\t\t\tmessage: normalizedError?.message,\n\t\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\t\tcode: normalizedError?.code,\n\t\t\t\t\tcodeName: normalizedError?.codeName\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tawait ErrorReporter.report({\n\t\t\t\tsourceApp: 'subscription-manager',\n\t\t\t\tmessage: 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\t\tclientName: this.serverConfig['CLIENT_NAME'],\n\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\tcontext: errorPayload,\n\t\t\t\tmetadata: {\n\t\t\t\t\tcontext: 'subscription-sendDataToOne',\n\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\tcorrelationId\n\t\t\t\t},\n\t\t\t\tcorrelationId\n\t\t\t});\n\t\t}\n\t\tfinally {\n\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t}\n\t}\n\n\t// Fetch pub once, send to all clients linked to this pub\n\tprivate async sendDataToAll(sub: ActiveSubscriptionModel, collection: string, type: string) {\n\t\tconst isAiPublication = this.isAiPublication(sub.publication);\n\t\tif (isAiPublication && sub.clients.length > 1) {\n\t\t\tconst seenSockets = new Set<string>();\n\t\t\tsub.clients = sub.clients.filter(client => {\n\t\t\t\tif (seenSockets.has(client.id_socket)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tseenSockets.add(client.id_socket);\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t\tconst activeClients: { client: ActiveSubscriptionClientModel; ws: WebSocket }[] = [];\n\t\tif (sub.clients.length) {\n\t\t\tfor (const client of sub.clients) {\n\t\t\t\tconst ws = this._websocketManager.getWebSocket(client.id_socket);\n\t\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\tactiveClients.push({ client, ws });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!activeClients.length) {\n\t\t\tif (sub.cacheId) {\n\t\t\t\tthis._nodeCache.del(sub.cacheId);\n\t\t\t\tsub.cacheId = 0;\n\t\t\t}\n\n\t\t\tlet subIndex = this._subscriptions.findIndex(a => a.publication === sub.publication && a.subscriptionKey === sub.subscriptionKey);\n\t\t\tif (subIndex >= 0) {\n\t\t\t\tthis._subscriptions.splice(subIndex, 1);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tif (activeClients.length !== sub.clients.length) {\n\t\t\t\tsub.clients = activeClients.map(entry => entry.client);\n\t\t\t}\n\n\t\t\tlet monitor = this._monitorManagerFunction.startMonitorFunction('Publication', sub.publication, '', '', sub.subscriptionData);\n\t\t\tlet res;\n\t\t\tlet dependencySnapshot: DependencyContextSnapshot;\n\n\t\t\ttry {\n\t\t\t\tif (sub.publication !== 'superadminAPM' && sub.publication !== 'loggedInUsers') {\n\t\t\t\t\tawait ResolveIOServer.getMainServer().getMethodManager().callMethod.call(ResolveIOServer.getMainServer().getMethodManager(), 'insertSubscriptionLog', type, sub.publication, collection, JSON.stringify(sub.subscriptionData));\n\t\t\t\t}\n\n\t\t\t\tconst execution = await this.runPublicationExecution(sub);\n\t\t\t\tres = execution.result;\n\t\t\t\tdependencySnapshot = execution.snapshot;\n\t\t\t\tthis.updateSubscriptionDependencies(sub, dependencySnapshot);\n\t\t\t\tconst packedRes = execution.packedResult ?? this.packCachePayload(res);\n\t\t\t\tconst passThrough = !!execution.workerUsed;\n\t\t\t\tconst payloadBytes = packedRes ? packedRes.byteLength : null;\n\t\t\t\tconst shouldCache = this.shouldCachePayload(sub, packedRes);\n\t\t\t\t\n\n\t\t\t\tif (sub.cacheId) {\n\t\t\t\t\tconst cachedBuffer = this.getCacheBuffer(this._nodeCache.get(sub.cacheId));\n\t\t\t\t\tconst isSame = this.buffersEqual(cachedBuffer, packedRes);\n\n\t\t\t\t\tif (!isSame) {\n\t\t\t\t\t\tconst sendStartMs = Date.now();\n\t\t\t\t\t\tlet sentClients = 0;\n\t\t\t\t\t\tfor (const entry of activeClients) {\n\t\t\t\t\t\t\tconst { client, ws } = entry;\n\t\t\t\t\t\t\tif (packedRes) {\n\t\t\t\t\t\t\t\tthis._websocketManager.sendPackedBuffer(\n\t\t\t\t\t\t\t\t\tws,\n\t\t\t\t\t\t\t\t\tclient.messageId,\n\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\tpackedRes,\n\t\t\t\t\t\t\t\t\texecution.encoding || 'msgpack',\n\t\t\t\t\t\t\t\t\t{ passThrough }\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isAiPublication) {\n\t\t\t\t\t\t\t\tthis.logAiSubSend({\n\t\t\t\t\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\t\t\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\t\t\tclients: activeClients.length,\n\t\t\t\t\t\t\t\t\tpayloadBytes,\n\t\t\t\t\t\t\t\t\tpacked: !!packedRes,\n\t\t\t\t\t\t\t\t\tcacheHit: false,\n\t\t\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tsubscriptionData: sub.subscriptionData\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsentClients += 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.logSubSend(sub, {\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tclients: sentClients,\n\t\t\t\t\t\t\tdurationMs: Date.now() - sendStartMs,\n\t\t\t\t\t\t\tpayloadBytes\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tthis._nodeCache.del(sub.cacheId);\n\n\t\t\t\t\t\tif (shouldCache) {\n\t\t\t\t\t\t\tthis._nodeCache.set(sub.cacheId, packedRes);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tsub.cacheId = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (!cachedBuffer && shouldCache) {\n\t\t\t\t\t\tthis._nodeCache.set(sub.cacheId, packedRes);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!shouldCache) {\n\t\t\t\t\t\tthis._nodeCache.del(sub.cacheId);\n\t\t\t\t\t\tsub.cacheId = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst sendStartMs = Date.now();\n\t\t\t\t\tlet sentClients = 0;\n\t\t\t\t\tfor (const entry of activeClients) {\n\t\t\t\t\t\tconst { client, ws } = entry;\n\t\t\t\t\t\tif (packedRes) {\n\t\t\t\t\t\t\tthis._websocketManager.sendPackedBuffer(\n\t\t\t\t\t\t\t\tws,\n\t\t\t\t\t\t\t\tclient.messageId,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tpackedRes,\n\t\t\t\t\t\t\t\texecution.encoding || 'msgpack',\n\t\t\t\t\t\t\t\t{ passThrough }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isAiPublication) {\n\t\t\t\t\t\t\tthis.logAiSubSend({\n\t\t\t\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\t\t\t\tsubscriptionKey: sub.subscriptionKey,\n\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\tid_socket: ws['id_socket'],\n\t\t\t\t\t\t\t\tclients: activeClients.length,\n\t\t\t\t\t\t\t\tpayloadBytes,\n\t\t\t\t\t\t\t\tpacked: !!packedRes,\n\t\t\t\t\t\t\t\tcacheHit: false,\n\t\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tsubscriptionData: sub.subscriptionData\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsentClients += 1;\n\t\t\t\t\t}\n\t\t\t\t\tthis.logSubSend(sub, {\n\t\t\t\t\t\tcollection,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tclients: sentClients,\n\t\t\t\t\t\tdurationMs: Date.now() - sendStartMs,\n\t\t\t\t\t\tpayloadBytes\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif (shouldCache) {\n\t\t\t\t\t\tsub.cacheId = this._cacheId++;\n\t\t\t\t\t\tthis._nodeCache.set(sub.cacheId, packedRes);\n\n\t\t\t\t\t\tconst nodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\t\t\tif (nodeCacheSize > this._heapLimit) {\n\t\t\t\t\t\t\t// Evict cache entries as needed\n\t\t\t\t\t\t\tlet deleteCount = 0;\n\t\t\t\t\t\t\tconst subArr = this._subscriptions.filter(a => a.cacheId && !a.clients.length);\n\t\t\t\t\t\n\t\t\t\t\t\t\tfor (let zz = 0; zz < subArr.length; zz++) {\n\t\t\t\t\t\t\t\tthis._debugRemoveCacheHits += 1;\n\t\t\t\t\t\t\t\tthis._nodeCache.del(subArr[zz].cacheId);\n\t\t\t\t\t\t\t\tsubArr[zz].cacheId = 0;\n\t\t\t\t\t\t\t\tdeleteCount += 1;\n\t\t\t\t\t\t\t\tif (this._nodeCache.getStats().vsize < this._heapLimit * 0.75) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this._enableDebug) {\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t'Sub Cache: ' +\n\t\t\t\t\t\t\t\t\t'Too Big - ' +\n\t\t\t\t\t\t\t\t\tsub.publication +\n\t\t\t\t\t\t\t\t\t' - Deleted: ' +\n\t\t\t\t\t\t\t\t\tdeleteCount +\n\t\t\t\t\t\t\t\t\t' - ' +\n\t\t\t\t\t\t\t\t\tnodeCacheSize\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tsub.cacheId = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\tconst { error: normalizedError, correlationId } = ensureErrorWithCorrelation(err);\n\n\t\t\t\tfor (let client of sub.clients) {\n\t\t\t\t\tlet ws = this._websocketManager.getWebSocket(client.id_socket);\n\t\t\t\t\tif (ws && ws.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: Object.assign({}, normalizedError, { correlationId })\n\t\t\t\t\t\t};\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst errorPayload = {\n\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\tsubscriptionData: sub.subscriptionData,\n\t\t\t\t\ttype,\n\t\t\t\t\tcollection,\n\t\t\t\t\tcorrelationId,\n\t\t\t\t\terror: {\n\t\t\t\t\t\tname: normalizedError?.name,\n\t\t\t\t\t\tmessage: normalizedError?.message,\n\t\t\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\t\t\tcode: normalizedError?.code,\n\t\t\t\t\t\tcodeName: normalizedError?.codeName\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\tawait ErrorReporter.report({\n\t\t\t\tsourceApp: 'subscription-manager',\n\t\t\t\tmessage: 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'],\n\t\t\t\tenvironment: this.serverConfig?.ROOT_URL,\n\t\t\t\tclientSlug: ResolveIOServer.getClientName(),\n\t\t\t\tclientName: this.serverConfig['CLIENT_NAME'],\n\t\t\t\tstack: normalizedError?.stack,\n\t\t\t\tcontext: errorPayload,\n\t\t\t\tmetadata: {\n\t\t\t\t\tcontext: 'subscription-sendDataToAll',\n\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\tcorrelationId\n\t\t\t\t},\n\t\t\t\tcorrelationId\n\t\t\t});\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tawait this._monitorManagerFunction.finishMonitorFunction(monitor);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate ensureDependencyContainers(sub: ActiveSubscriptionModel) {\n\t\tif (!sub.collectionDependencies) {\n\t\t\tsub.collectionDependencies = new Map();\n\t\t}\n\n\t\tif (!sub.collectionFilters) {\n\t\t\tsub.collectionFilters = new Map();\n\t\t}\n\n\t\tif (!sub.watchAllCollections) {\n\t\t\tsub.watchAllCollections = new Set();\n\t\t}\n\n\t\tif (!sub.collectionQueryMeta) {\n\t\t\tsub.collectionQueryMeta = new Map();\n\t\t}\n\t}\n\n\tprivate updateSubscriptionDependencies(sub: ActiveSubscriptionModel, snapshot?: DependencyContextSnapshot) {\n\t\tthis.ensureDependencyContainers(sub);\n\n\t\tif (!snapshot) {\n\t\t\tsub.collectionDependencies.clear();\n\t\t\tsub.collectionFilters.clear();\n\t\t\tsub.watchAllCollections.clear();\n\t\t\tsub.collectionQueryMeta.clear();\n\t\t\tthis.dependencyDebug('Cleared dependency snapshot', { publication: sub.publication });\n\t\t\treturn;\n\t\t}\n\n\t\tsub.collectionDependencies = snapshot.dependencies;\n\t\tsub.collectionFilters = snapshot.filters;\n\t\tsub.watchAllCollections = snapshot.watchAllCollections;\n\t\tsub.collectionQueryMeta = snapshot.queryMetadata;\n\t\tthis.logDependencySnapshot(sub, 'Snapshot updated');\n\t}\n\n\tprivate normalizeDocumentId(rawId: any): string {\n\t\tif (rawId === null || rawId === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (typeof rawId === 'string') {\n\t\t\treturn rawId;\n\t\t}\n\n\t\tif (typeof rawId === 'object' && typeof rawId.toHexString === 'function') {\n\t\t\treturn rawId.toHexString();\n\t\t}\n\n\t\tif (typeof rawId?.toString === 'function') {\n\t\t\tconst str = rawId.toString();\n\t\t\tif (str && str !== '[object Object]') {\n\t\t\t\treturn str;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getDocumentIdQueryCandidates(documentId: any): any[] {\n\t\tconst candidates: any[] = [];\n\n\t\tif (documentId === undefined || documentId === null) {\n\t\t\treturn [documentId];\n\t\t}\n\n\t\tconst addCandidate = value => {\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!candidates.includes(value)) {\n\t\t\t\tcandidates.push(value);\n\t\t\t}\n\t\t};\n\n\t\taddCandidate(documentId);\n\n\t\tif (typeof documentId === 'object') {\n\t\t\tif (typeof documentId.toHexString === 'function') {\n\t\t\t\taddCandidate(documentId.toHexString());\n\t\t\t}\n\n\t\t\tif (typeof documentId.toString === 'function') {\n\t\t\t\tconst str = documentId.toString();\n\t\t\t\tif (str && str !== '[object Object]') {\n\t\t\t\t\taddCandidate(str);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (typeof documentId !== 'string') {\n\t\t\taddCandidate(String(documentId));\n\t\t}\n\n\t\treturn candidates;\n\t}\n\n\tprivate isFilterSafeForInMemory(filter: any): boolean {\n\t\tif (!filter || typeof filter !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst allowedOperators = new Set([\n\t\t\t'$and',\n\t\t\t'$or',\n\t\t\t'$nor',\n\t\t\t'$in',\n\t\t\t'$nin',\n\t\t\t'$eq',\n\t\t\t'$ne',\n\t\t\t'$gt',\n\t\t\t'$gte',\n\t\t\t'$lt',\n\t\t\t'$lte',\n\t\t\t'$exists',\n\t\t\t'$size',\n\t\t\t'$all',\n\t\t\t'$elemMatch',\n\t\t\t'$regex',\n\t\t\t'$options'\n\t\t]);\n\n\t\tconst disallowedOperators = new Set([\n\t\t\t'$where',\n\t\t\t'$expr',\n\t\t\t'$text',\n\t\t\t'$geoWithin',\n\t\t\t'$geoIntersects',\n\t\t\t'$near',\n\t\t\t'$nearSphere',\n\t\t\t'$jsonSchema',\n\t\t\t'$mod',\n\t\t\t'$type',\n\t\t\t'$bitsAllSet',\n\t\t\t'$bitsAllClear',\n\t\t\t'$bitsAnySet',\n\t\t\t'$bitsAnyClear'\n\t\t]);\n\n\t\tconst walk = (value: any): boolean => {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.every(item => walk(item));\n\t\t\t}\n\n\t\t\tif (!value || typeof value !== 'object') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tfor (const [key, entry] of Object.entries(value)) {\n\t\t\t\tif (key.startsWith('$')) {\n\t\t\t\t\tif (disallowedOperators.has(key)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!allowedOperators.has(key)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!walk(entry)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t};\n\n\t\treturn walk(filter);\n\t}\n\n\tprivate documentIdMatchesEvent(documentId: any, document?: any): boolean {\n\t\tif (!document || documentId === undefined || documentId === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst eventCandidates = this.getDocumentIdQueryCandidates(documentId)\n\t\t\t.map(id => this.normalizeDocumentId(id))\n\t\t\t.filter(Boolean);\n\t\tconst docCandidates = this.getDocumentIdQueryCandidates(document?._id)\n\t\t\t.map(id => this.normalizeDocumentId(id))\n\t\t\t.filter(Boolean);\n\n\t\tif (!eventCandidates.length || !docCandidates.length) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst docSet = new Set(docCandidates);\n\n\t\tfor (const candidate of eventCandidates) {\n\t\t\tif (docSet.has(candidate)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate resolveFilterMatch(filter: any, document?: any, documentId?: any): boolean | null {\n\t\tif (!document || !filter || typeof filter !== 'object') {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.isFilterSafeForInMemory(filter)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.documentIdMatchesEvent(documentId, document)) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst matcher = sift(filter);\n\t\t\treturn matcher(document);\n\t\t}\n\t\tcatch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async documentMatchesFilter(collection: string, documentId: any, filter: any, document?: any): Promise<boolean> {\n\t\ttry {\n\t\t\tconst inMemoryMatch = this.resolveFilterMatch(filter, document, documentId);\n\t\t\tif (inMemoryMatch !== null) {\n\t\t\t\treturn inMemoryMatch;\n\t\t\t}\n\n\t\t\tconst db = ResolveIOServer.getMainDB();\n\t\t\tconst filterCopy = deepCopy(filter) || {};\n\t\t\tconst idCandidates = this.getDocumentIdQueryCandidates(documentId);\n\n\t\t\tfor (const idValue of idCandidates) {\n\t\t\t\tconst combinedFilter = {\n\t\t\t\t\t$and: [\n\t\t\t\t\t\t{ _id: idValue },\n\t\t\t\t\t\tfilterCopy\n\t\t\t\t\t]\n\t\t\t\t};\n\n\t\t\t\tconst doc = await db.collection(collection).findOne(combinedFilter);\n\t\t\t\tif (doc) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t\tcatch {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tprivate async shouldInvalidateSubscription(sub: ActiveSubscriptionModel, collection: string, type: string, documentId?: any, document?: any): Promise<boolean> {\n\t\tthis.ensureDependencyContainers(sub);\n\n\t\tconst normalizedDocumentId = this.normalizeDocumentId(documentId);\n\t\tconst trackedIds = sub.collectionDependencies.get(collection);\n\t\tconst filters = sub.collectionFilters.get(collection);\n\t\tconst hasTrackedIds = !!(trackedIds && trackedIds.size);\n\t\tconst hasFilters = !!(filters && filters.length);\n\t\tconst hasDependencyData =\n\t\t\t(sub.collectionDependencies.get(collection)?.size || 0) > 0 ||\n\t\t\t(sub.collectionFilters.get(collection)?.length || 0) > 0 ||\n\t\t\tsub.watchAllCollections.has(collection);\n\n\t\tif (!normalizedDocumentId) {\n\t\t\tthis.dependencyDebug('Invalidate due to missing documentId', { publication: sub.publication, collection, type });\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!hasDependencyData) {\n\t\t\tthis.dependencyDebug('Invalidate due to missing dependency metadata', {\n\t\t\t\tpublication: sub.publication,\n\t\t\t\tcollection,\n\t\t\t\ttype\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tif (sub.watchAllCollections.has(collection)) {\n\t\t\tthis.dependencyDebug('Invalidate due to watch-all collection', { publication: sub.publication, collection, type });\n\t\t\treturn true;\n\t\t}\n\n\t\tif (trackedIds && trackedIds.has(normalizedDocumentId)) {\n\t\t\tthis.dependencyDebug('Invalidate due to tracked id', { publication: sub.publication, collection, type, documentId: normalizedDocumentId });\n\t\t\treturn true;\n\t\t}\n\n\t\tif (type === 'delete') {\n\t\t\tif (hasFilters && !hasTrackedIds) {\n\t\t\t\tthis.dependencyDebug('Invalidate delete due to filter-only dependency without tracked ids', {\n\t\t\t\t\tpublication: sub.publication,\n\t\t\t\t\tcollection,\n\t\t\t\t\ttype,\n\t\t\t\t\tdocumentId: normalizedDocumentId\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.dependencyDebug('Skip invalidation on delete for unknown id', { publication: sub.publication, collection, type, documentId: normalizedDocumentId });\n\t\t\treturn false;\n\t\t}\n\n\t\tif (type === 'update' && hasFilters && !hasTrackedIds) {\n\t\t\tthis.dependencyDebug('Invalidate update due to filter-only dependency without tracked ids', {\n\t\t\t\tpublication: sub.publication,\n\t\t\t\tcollection,\n\t\t\t\ttype,\n\t\t\t\tdocumentId: normalizedDocumentId\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\tif (filters && filters.length) {\n\t\t\tfor (const filter of filters) {\n\t\t\t\tif (await this.documentMatchesFilter(collection, documentId, filter, document)) {\n\t\t\t\t\tthis.dependencyDebug('Invalidate due to filter match', { publication: sub.publication, collection, type, documentId: normalizedDocumentId, filter });\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.dependencyDebug('Skip invalidation after dependency checks', { publication: sub.publication, collection, type, documentId: normalizedDocumentId });\n\t\treturn false;\n\t}\n\n\tprivate async shouldInvalidateSubscriptionForEvents(sub: ActiveSubscriptionModel, collection: string, events: SubscriptionInvalidationEvent[]): Promise<boolean> {\n\t\tlet sawInsert = false;\n\t\tlet sawDelete = false;\n\n\t\tfor (const event of events) {\n\t\t\tif (event.type === 'insert') {\n\t\t\t\tsawInsert = true;\n\t\t\t}\n\t\t\telse if (event.type === 'delete') {\n\t\t\t\tsawDelete = true;\n\t\t\t}\n\t\t\tif (await this.shouldInvalidateSubscription(sub, collection, event.type, event.documentId, event.document)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tconst paginationMeta = this.getPaginationMeta(sub, collection);\n\t\tconst paginationReasons = [];\n\t\tif (sawInsert) {\n\t\t\tpaginationReasons.push('insert');\n\t\t}\n\t\tif (sawDelete) {\n\t\t\tpaginationReasons.push('delete');\n\t\t}\n\n\t\tif (paginationMeta?.length && paginationReasons.length) {\n\t\t\tthis.dependencyDebug('Invalidate due to pagination metadata', {\n\t\t\t\tpublication: sub.publication,\n\t\t\t\tcollection,\n\t\t\t\tevents: this.summarizeEvents(events),\n\t\t\t\treasons: paginationReasons,\n\t\t\t\tqueryMeta: paginationMeta.slice(0, 5)\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate getPaginationMeta(sub: ActiveSubscriptionModel, collection: string): QueryMeta[] {\n\t\tthis.ensureDependencyContainers(sub);\n\t\tconst metaList = sub.collectionQueryMeta?.get(collection);\n\t\tif (!metaList || !metaList.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst relevantMeta = metaList.filter(meta => {\n\t\t\tif (!meta) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst limitUsed = typeof meta.limit === 'number' && meta.limit > 0;\n\t\t\tconst skipUsed = typeof meta.skip === 'number' && meta.skip > 0;\n\t\t\treturn limitUsed || skipUsed;\n\t\t});\n\n\t\treturn relevantMeta.length ? relevantMeta : null;\n\t}\n\n\tprivate sendWS(ws: WebSocket, data: ServerResponseModel) {\n\t\tthis._websocketManager.send(ws, data);\n\t}\n\n\tpublic getEnableDebug() {\n\t\treturn this._enableDebug;\n\t}\n\n\tprivate dependencyDebug(message: string, details?: Record<string, unknown>) {\n\t\tif (!this._enableDependencyDebug) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (details) {\n\t\t\tconsole.log(new Date(), '[Dependency Debug]', message, JSON.stringify(details, null, 2));\n\t\t}\n\t\telse {\n\t\t\tconsole.log(new Date(), '[Dependency Debug]', message);\n\t\t}\n\t}\n\n\tprivate summarizeEvents(events: SubscriptionInvalidationEvent[]) {\n\t\treturn events.map(event => ({\n\t\t\ttype: event.type,\n\t\t\tdocumentId: this.normalizeDocumentId(event.documentId)\n\t\t}));\n\t}\n\n\tprivate logDependencySnapshot(sub: ActiveSubscriptionModel, context: string) {\n\t\tif (!this._enableDependencyDebug) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dependencySummary = Array.from(sub.collectionDependencies.entries()).map(([collectionName, ids]) => {\n\t\t\tconst idList = Array.from(ids || []);\n\t\t\treturn {\n\t\t\t\tcollection: collectionName,\n\t\t\t\tcount: idList.length,\n\t\t\t\tsample: idList.slice(0, 10)\n\t\t\t};\n\t\t});\n\n\t\tconst filterSummary = Array.from(sub.collectionFilters.entries()).map(([collectionName, filters]) => ({\n\t\t\tcollection: collectionName,\n\t\t\tcount: filters.length\n\t\t}));\n\n\t\tconst queryMetaSummary = Array.from(sub.collectionQueryMeta.entries()).map(([collectionName, metaList]) => ({\n\t\t\tcollection: collectionName,\n\t\t\tcount: metaList.length,\n\t\t\tmeta: metaList.slice(0, 5)\n\t\t}));\n\n\t\tconst watchAll = Array.from(sub.watchAllCollections || []);\n\n\t\tthis.dependencyDebug('Dependency snapshot updated', {\n\t\t\tcontext,\n\t\t\tpublication: sub.publication,\n\t\t\tdependencies: dependencySummary,\n\t\t\tcollectionsWithFilters: filterSummary,\n\t\t\tcollectionsWithMeta: queryMetaSummary,\n\t\t\twatchAll\n\t\t});\n\t}\n\n\tpublic async runPublicationOnce(publication: string, subscriptionData: any[] = [], options?: { userId?: string }) {\n\t\tconst pub = this._publications[publication];\n\t\tif (!pub) {\n\t\t\tthrow new Error(`Publication not found: ${publication}`);\n\t\t}\n\n\t\tconst context = Object.assign({}, this, SubscriptionManager.prototype);\n\t\tconst metadata: PublicationContext = {\n\t\t\tpublication,\n\t\t\tsubscriptionData\n\t\t};\n\n\t\tif (pub.user_specific) {\n\t\t\treturn withDependencyTracking(() => pub.function.call(context, options?.userId || '', ...subscriptionData), metadata);\n\t\t}\n\n\t\treturn withDependencyTracking(() => pub.function.call(context, ...subscriptionData), metadata);\n\t}\n}\n"]}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { WebSocket } from 'ws';
|
|
2
|
-
interface ServerResponseModel {
|
|
3
|
-
messageId: number;
|
|
4
|
-
hasError: boolean;
|
|
5
|
-
data: any;
|
|
6
|
-
}
|
|
7
|
-
interface PackedSendOptions {
|
|
8
|
-
passThrough?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare class WebSocketManager {
|
|
11
|
-
private _mainServer;
|
|
12
|
-
private _messageBuffers;
|
|
13
|
-
private _batchingTimers;
|
|
14
|
-
private _maxMessageSize;
|
|
15
|
-
private _messageDelay;
|
|
16
|
-
private _webSockets;
|
|
17
|
-
private _chunkThresholdBytes;
|
|
18
|
-
private _chunkSizeBytes;
|
|
19
|
-
private readonly _chunkMetaFlag;
|
|
20
|
-
private _chunkingEnabled;
|
|
21
|
-
private readonly _textDecoder;
|
|
22
|
-
private _wsSendDebug;
|
|
23
|
-
private _wsSendLogThresholdMs;
|
|
24
|
-
private _wsSendLogBytes;
|
|
25
|
-
private _wsSendLogBufferedBytes;
|
|
26
|
-
private _packedChunkMinBytes;
|
|
27
|
-
private _sendQueues;
|
|
28
|
-
private _sendQueueTimers;
|
|
29
|
-
private _sendThrottleMs;
|
|
30
|
-
private _sendBackpressureBytes;
|
|
31
|
-
private _sendMaxBatchesPerTick;
|
|
32
|
-
private _aiWorkerDebug;
|
|
33
|
-
private _wsBackpressureLogAt;
|
|
34
|
-
private _wsBackpressureLogCooldownMs;
|
|
35
|
-
constructor();
|
|
36
|
-
static create(mainServer: any, maxMessageSize?: number, messageDelay?: number, chunkThresholdBytes?: number, chunkSizeBytes?: number): WebSocketManager;
|
|
37
|
-
initialize(mainServer: any, maxMessageSize?: number, messageDelay?: number, chunkThresholdBytes?: number, chunkSizeBytes?: number): void;
|
|
38
|
-
private parseDebugFlag;
|
|
39
|
-
private parseBoolean;
|
|
40
|
-
private parsePositiveInt;
|
|
41
|
-
private isBackpressured;
|
|
42
|
-
private shouldQueueSend;
|
|
43
|
-
private maybeLogBackpressure;
|
|
44
|
-
private getQueueDelayMs;
|
|
45
|
-
private enqueueSend;
|
|
46
|
-
private scheduleSendDrain;
|
|
47
|
-
private drainSendQueue;
|
|
48
|
-
private scheduleNextChunk;
|
|
49
|
-
private shouldLogSend;
|
|
50
|
-
private getBufferedAmount;
|
|
51
|
-
private logWsSend;
|
|
52
|
-
addWebSocket(ws: WebSocket): void;
|
|
53
|
-
private isSocketActive;
|
|
54
|
-
removeWebSocket(ws: WebSocket): void;
|
|
55
|
-
getWebSocket(id_socket: string): WebSocket | undefined;
|
|
56
|
-
getAllWebSockets(): WebSocket[];
|
|
57
|
-
getActiveWebSocketCount(): number;
|
|
58
|
-
getUserWebSockets(id_user: string): WebSocket[];
|
|
59
|
-
send(ws: WebSocket, data: ServerResponseModel | string): void;
|
|
60
|
-
sendPackedBuffer(ws: WebSocket, messageId: number, hasError: boolean, packedData: Uint8Array | Buffer, encoding?: 'msgpack' | 'json', options?: PackedSendOptions): void;
|
|
61
|
-
private flushMessages;
|
|
62
|
-
private sendMessagesInChunksBinary;
|
|
63
|
-
private handleSendError;
|
|
64
|
-
closeConnection(ws: WebSocket): void;
|
|
65
|
-
private prepareChunkContext;
|
|
66
|
-
private decodePackedPayload;
|
|
67
|
-
private sendChunkSequence;
|
|
68
|
-
private transmitBatch;
|
|
69
|
-
private transmitBatchNow;
|
|
70
|
-
private generateChunkId;
|
|
71
|
-
private toBase64;
|
|
72
|
-
}
|
|
73
|
-
export {};
|