@bonginkan/maria 3.0.7 → 3.0.9

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/index.ts"],"names":["Command","chalk"],"mappings":"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","file":"index.js","sourcesContent":["#!/usr/bin/env node\n\n/**\n * MARIA CLI - Command Line Interface\n * OSS Version with core functionality\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\n\nexport interface CLIOptions {\n model?: string;\n debug?: boolean;\n}\n\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('maria')\n .description('MARIA - AI-Powered Development Platform')\n .version('2.1.9');\n\n // Chat command\n program\n .command('chat')\n .description('Start interactive chat mode')\n .action(() => {\n console.log(chalk.blue('šŸ¤– MARIA AI-Powered Development Platform v2.1.9'));\n console.log(chalk.gray('Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.yellow('\\nšŸ’” This is the OSS distribution of MARIA.'));\n console.log(chalk.yellow(' Full features available at: https://maria-code.vercel.app'));\n console.log(chalk.cyan('\\n✨ Key Features:'));\n console.log(chalk.cyan(' • Cloud Vision AI (Gemini 2.0 Flash, GPT-4o-mini)'));\n console.log(chalk.cyan(' • Enhanced UX with Real-time Feedback'));\n console.log(chalk.cyan(' • 58+ Cognitive Modes with Advanced Indicators'));\n console.log(chalk.cyan(' • Professional Progress Reporting'));\n console.log(chalk.cyan(' • Advanced Content Analysis & OCR'));\n console.log(chalk.cyan(' • Complete Local LLM Integration'));\n console.log(chalk.cyan(' • CLI Native Development System'));\n });\n\n // Version command\n program\n .command('version')\n .description('Show version information')\n .action(() => {\n console.log(chalk.bold('MARIA CLI v2.1.9'));\n console.log(chalk.gray('Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.gray('Ā© 2025 Bonginkan Inc.'));\n });\n\n // Status command\n program\n .command('status')\n .description('Show system status')\n .action(() => {\n console.log(chalk.green('āœ… MARIA OSS Distribution v2.1.9'));\n console.log(chalk.blue('šŸ“¦ Enhanced UX & Advanced Content Analysis Edition'));\n console.log(chalk.yellow('šŸ”— Full Platform: https://maria-code.vercel.app'));\n console.log(chalk.cyan('✨ New Features:'));\n console.log(chalk.cyan(' • Cloud Vision AI Integration'));\n console.log(chalk.cyan(' • Real-time Feedback Management'));\n console.log(chalk.cyan(' • Enhanced Progress Reporting'));\n console.log(chalk.cyan(' • Advanced Mode Indicators'));\n });\n\n return program;\n}\n\n// CLI execution\nif (require.main === module) {\n const cli = createCLI();\n cli.parse();\n}","/**\n * MARIA - AI-Powered Development Platform\n * OSS Distribution Entry Point\n * @version 2.1.9\n */\n\n// CLI entry point\nexport { createCLI } from './cli';\n\n// Version\nexport const VERSION = '2.1.9';"]}
1
+ {"version":3,"sources":["../src/services/intelligent-router/infra/NaturalLanguageProcessor.ts","../src/services/intelligent-router/analysis/IntentRecognizer.ts","../src/services/intelligent-router/analysis/ParameterExtractor.ts","../src/services/intelligent-router/analysis/MultilingualDictionary.ts","../src/services/intelligent-router/infra/LanguageDetector.ts","../src/services/intelligent-router/app/CommandMappings.ts","../src/services/intelligent-router/analysis/UserPatternAnalyzer.ts","../src/services/intelligent-router/app/IntelligentRouterService.ts","../src/services/memory-system/system1-memory.ts","../src/services/memory-system/system2-memory.ts","../src/services/memory-system/dual-memory-engine.ts","../src/services/file-system/FileSystemService.ts"],"names":["input","pattern","a","elapsed","command","confidence","patterns","regex","_language","keywords","languages","type","code","matches","phrase","stats","data","chalk","id","node","antiPattern","nodeId","treeId","context","insight","metrics","domain","trace","root","path","filePath","dirPath","searchPath"],"mappings":";;;;;;;;;;AAkBO,IAAM,2BAAN,MAA+B;AAAA,EAC5B,SAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA,GAAuB,KAAA;AAAA,EAE/B,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,SAAA,uBAAgB,GAAA,EAAI;AACzB,IAAA,IAAA,CAAK,cAAA,uBAAqB,GAAA,EAAI;AAC9B,IAAA,IAAA,CAAK,mBAAA,EAAoB;AACzB,IAAA,IAAA,CAAK,sBAAA,EAAuB;AAAA,EAC9B;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,WAAA,EAAa;AAAC,MAAA;AAAA,IAAO;AAG9B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA,EAEA,MAAM,OAAA,CAAQA,MAAAA,EAAe,QAAA,GAAmB,IAAA,EAA+B;AAC7E,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAUA,MAAAA,EAAO,QAAQ,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,QAAQ,CAAA;AACjD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ,QAAQ,CAAA;AACxC,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgBA,MAAK,CAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,QAAQ,CAAA;AAEvD,IAAA,OAAO;AAAA,MACL,QAAA,EAAUA,MAAAA;AAAA,MACV,UAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,SAAA,CAAU,MAAc,QAAA,EAA0B;AACxD,IAAA,IAAI,UAAA,GAAa,IAAA,CAAK,WAAA,EAAY,CAAE,IAAA,EAAK;AAGzC,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,IAAA,CAAK,cAAA,CAAe,OAAA,CAAQ,CAAC,QAAA,EAAU,WAAA,KAAgB;AACrD,QAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,GAAA,EAAM,WAAW,OAAO,IAAI,CAAA;AACtD,QAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,QAAQ,CAAA;AAAA,MAClD,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA;AAG3C,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,IAAA;AAEH,QAAA,UAAA,GAAa,IAAA,CAAK,kBAAkB,UAAU,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,IAAA;AAEH,QAAA,UAAA,GAAa,IAAA,CAAK,iBAAiB,UAAU,CAAA;AAC7C,QAAA;AAAA,MACF,KAAK,IAAA;AAEH,QAAA,UAAA,GAAa,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAC5C,QAAA;AAAA,MACF,KAAK,IAAA;AAEH,QAAA,UAAA,GAAa,IAAA,CAAK,oBAAoB,UAAU,CAAA;AAChD,QAAA;AAAA;AAGJ,IAAA,OAAO,UAAA;AAAA,EACT;AAAA,EAEQ,QAAA,CAAS,MAAc,QAAA,EAA4B;AACzD,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,IAAA;AACH,QAAA,OAAO,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,MACnC,KAAK,IAAA;AACH,QAAA,OAAO,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA,MAClC,KAAK,IAAA;AACH,QAAA,OAAO,IAAA,CAAK,eAAe,IAAI,CAAA;AAAA,MACjC,KAAK,IAAA;AACH,QAAA,OAAO,IAAA,CAAK,mBAAmB,IAAI,CAAA;AAAA,MACrC;AACE,QAAA,OAAO,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA;AACpC,EACF;AAAA,EAEQ,gBAAgB,IAAA,EAAwB;AAE9C,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA,CAAE,OAAO,CAAC,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,EAC7D;AAAA,EAEQ,iBAAiB,IAAA,EAAwB;AAG/C,IAAA,MAAM,SAAmB,EAAC;AAS1B,IAAA,QAAA,CAAS,OAAA,CAAQ,CAACC,QAAAA,KAAY;AAC5B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAMA,QAAO,CAAA;AACnC,MAAA,IAAI,QAAA,EAAU;AAAC,QAAA,MAAA,CAAO,IAAA,CAAK,GAAG,OAAO,CAAA;AAAA,MAAE;AAAA,IACzC,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,gBAAgB,IAAA,EAAwB;AAG9C,IAAA,MAAM,SAAmB,EAAC;AAG1B,IAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,MAAA,IAAI,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,EAAG;AAChC,QAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MAClB,CAAA,MAAA,IAAW,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAAG;AACpC,QAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MAClB;AAAA,IACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,eAAe,IAAA,EAAwB;AAE7C,IAAA,MAAM,SAAmB,EAAC;AAO1B,IAAA,QAAA,CAAS,OAAA,CAAQ,CAACA,QAAAA,KAAY;AAC5B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAMA,QAAO,CAAA;AACnC,MAAA,IAAI,QAAA,EAAU;AAAC,QAAA,MAAA,CAAO,IAAA,CAAK,GAAG,OAAO,CAAA;AAAA,MAAE;AAAA,IACzC,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,IAAA,CAAK,QAAkB,QAAA,EAA4B;AAEzD,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAE3B,MAAA,IAAI,IAAA,GAAO,KAAA;AAGX,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,EAAG;AAAC,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE,CAAA,MAAA,IAC3C,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AAAC,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE,CAAA,MAAA,IAC/C,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AAAC,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE,CAAA,MAAA,IAC/C,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AAAC,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE,WAC/C,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,IAAK,IAAA,CAAK,SAAS,CAAA,EAAG;AAAC,QAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE;AAE1E,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,gBAAgB,IAAA,EAAwB;AAC9C,IAAA,MAAM,WAAqB,EAAC;AAG5B,IAAA,MAAM,WAAA,GAAc,wDAAA;AACpB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA;AAC1C,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC7B,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,KAAA;AAAA,UACN,IAAA,EAAM,MAAA;AAAA,UACN,KAAA,EAAO,KAAA;AAAA,UACP,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAK;AAAA,SAC7B,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,MAAM,WAAA,GAAc,oBAAA;AACpB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA;AAC1C,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC5B,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,KAAA;AAAA,UACN,IAAA,EAAM,KAAA;AAAA,UACN,KAAA,EAAO,KAAA;AAAA,UACP,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAK;AAAA,SAC7B,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH;AAeA,IAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,IAAA,KAAS;AAE1B,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAA;AAC/D,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,GAAA,EAAM,YAAY,OAAO,IAAI,CAAA;AACvD,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAClC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAA,EAAM,KAAA;AAAA,YACN,IAAA,EAAM,UAAA;AAAA,YACN,KAAA,EAAO,IAAA;AAAA,YACP,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAK;AAAA,WAC7B,CAAA;AAAA,QACH,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,OAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,SAAA,KAAc;AAChC,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,GAAA,EAAM,SAAS,OAAO,IAAI,CAAA;AACpD,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAClC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACzB,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAA,EAAM,KAAA;AAAA,YACN,IAAA,EAAM,WAAA;AAAA,YACN,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAK;AAAA,WAC7B,CAAA;AAAA,QACH,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEQ,eAAA,CAAgB,QAAkB,QAAA,EAA4B;AACpE,IAAA,MAAM,YAAY,IAAA,CAAK,SAAA,CAAU,IAAI,QAAQ,CAAA,wBAAS,GAAA,EAAI;AAG1D,IAAkB,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,KAAU;AACzC,MAAA,OAAO,KAAA,CAAM,SAAS,CAAA,IAAK,CAAC,UAAU,GAAA,CAAI,KAAA,CAAM,aAAa,CAAA;AAAA,IAC/D,CAAC;AAGD,IAAA,MAAM,SAAA,uBAAgB,GAAA,EAAoB;AAC1C,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC5B,MAAA,SAAA,CAAU,IAAI,OAAA,EAAA,CAAU,SAAA,CAAU,IAAI,OAAO,CAAA,IAAK,KAAK,CAAC,CAAA;AAAA,IAC1D,CAAC,CAAA;AAED,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,CAAA,CAClC,IAAA,CAAK,CAACC,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAIA,GAAE,CAAC,CAAC,CAAA,CAC1B,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CACX,GAAA,CAAI,CAAC,CAAC,OAAO,CAAA,KAAM,OAAO,CAAA;AAAA,EAC/B;AAAA,EAEQ,kBAAkB,IAAA,EAAsB;AAE9C,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,cAAA,EAAgB,CAAC,IAAA,KAAS;AAC5C,MAAA,OAAO,OAAO,YAAA,CAAa,IAAA,CAAK,UAAA,CAAW,CAAC,IAAI,KAAM,CAAA;AAAA,IACxD,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,iBAAiB,IAAA,EAAsB;AAG7C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,gBAAgB,IAAA,EAAsB;AAE5C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,oBAAoB,IAAA,EAAsB;AAEhD,IAAA,OAAO,KAAK,WAAA,EAAY;AAAA,EAC1B;AAAA,EAEQ,mBAAmB,IAAA,EAAwB;AAEjD,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA,CAAE,OAAO,CAAC,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,EAC7D;AAAA,EAEQ,mBAAA,GAA4B;AAElC,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MACb,IAAA;AAAA,0BACI,GAAA,CAAI;AAAA,QACN,GAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,GAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAGA,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MACb,IAAA;AAAA,0BACI,GAAA,CAAI;AAAA,QACN,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAGA,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MACb,IAAA;AAAA,0BACI,GAAA,CAAI;AAAA,QACN,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAGA,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MACb,IAAA;AAAA,0BACI,GAAA,CAAI;AAAA,QACN,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,oBAAA;AAAA,QACA,oBAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAGA,IAAA,IAAA,CAAK,SAAA,CAAU,GAAA;AAAA,MACb,IAAA;AAAA,0BACI,GAAA,CAAI;AAAA,QACN,OAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,qBAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,eAAA;AAAA,QACA,KAAA;AAAA,QACA,iBAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEQ,sBAAA,GAA+B;AAErC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AACzC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,UAAU,CAAA;AAC3C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AACzC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AACtC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAO,OAAO,CAAA;AACtC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,QAAQ,CAAA;AACtC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AACzC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA;AACvC,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,SAAA,EAAW,UAAU,CAAA;AAC7C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,QAAA,EAAU,SAAS,CAAA;AAAA,EAC7C;AAAA,EAEA,MAAM,aAAa,cAAA,EAAmD;AAEpE,IAAA,MAAM,UAAoB,EAAC;AAC3B,IAAA,MAAM,SAAA,GAAY,GAAG,cAAA,CAAe,QAAA,CAAS,KAAK,GAAG,CAAG,CAAA,CAAA,EAAM,cAAA,CAAe,UAAU,CAAA,CAAA;AAGvF,IAAA,IAAI,mEAAA,CAAoE,IAAA,CAAK,SAAS,CAAA,EAAG;AACvF,MAAA,OAAA,CAAQ,KAAK,iBAAiB,CAAA;AAAA,IAChC;AAGA,IAAA,IAAI,2DAAA,CAA4D,IAAA,CAAK,SAAS,CAAA,EAAG;AAC/E,MAAA,OAAA,CAAQ,KAAK,kBAAkB,CAAA;AAAA,IACjC;AAGA,IAAA,IAAI,wCAAA,CAAyC,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5D,MAAA,OAAA,CAAQ,KAAK,kBAAkB,CAAA;AAAA,IACjC;AAGA,IAAA,IAAI,oDAAA,CAAqD,IAAA,CAAK,SAAS,CAAA,EAAG;AACxE,MAAA,OAAA,CAAQ,KAAK,iBAAiB,CAAA;AAAA,IAChC;AAGA,IAAA,IAAI,uDAAA,CAAwD,IAAA,CAAK,SAAS,CAAA,EAAG;AAC3E,MAAA,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,IAC5B;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AACF,CAAA;;;AChiBO,IAAM,mBAAN,MAAuB;AAAA,EACpB,MAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAA2B,EAAC;AAAA,EAC5B,WAAA,GAAuB,KAAA;AAAA,EACvB,YAAA;AAAA,EACA,OAAA,GAAU;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,CAAA;AAAA,IACb,gBAAA,EAAkB,CAAA;AAAA,IAClB,eAAe;AAAC,GAClB;AAAA,EAEA,WAAA,CACE,QACA,YAAA,EACA;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,cAAA,uBAAqB,GAAA,EAAI;AAC9B,IAAA,IAAA,CAAK,YAAA,uBAAmB,GAAA,EAAI;AAC5B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AAAA,EAC1B;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,WAAA,EAAa;AAAC,MAAA;AAAA,IAAO;AAG9B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA,EAEA,MAAM,UAAUF,MAAAA,EAAyD;AACvE,IAAA,MAAM,SAAA,GAAY,YAAY,GAAA,EAAI;AAClC,IAAA,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAA;AAGb,IAAA,IAAA,CAAKA,MAAAA,CAAM,UAAA,EAAY,MAAA,IAAU,CAAA,IAAK,IAAA,EAAM;AAC1C,MAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAA;AACb,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AAIvC,IAAA,IAAA,CAAK,sBAAA,CAAuBA,QAAO,MAAM,CAAA;AAGzC,IAAA,IAAA,CAAK,sBAAA,CAAuBA,QAAO,MAAM,CAAA;AAGzC,IAAA,IAAA,CAAK,sBAAA,CAAuBA,QAAO,MAAM,CAAA;AAGzC,IAAA,IAAA,CAAK,qBAAA,CAAsBA,QAAO,MAAM,CAAA;AAGxC,IAAA,IAAA,CAAK,yBAAA,CAA0BA,QAAO,MAAM,CAAA;AAG5C,IAAA,IAAA,CAAK,2BAAA,CAA4BA,QAAO,MAAM,CAAA;AAG9C,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,CAAA,IAAA,CAAM,MAAA,CAAO,MAAA,GAAS,IAAA,EAAK,CAAE,KAAA,IAAS,CAAA,KAAM,CAAA,EAAK;AACnE,MAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAA;AACb,MAAA,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAA;AACb,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,CAC3C,IAAA,CAAK,CAACE,EAAAA,EAAG,CAAA,KAAM,EAAE,CAAC,CAAA,GAAIA,EAAAA,CAAE,CAAC,CAAC,CAAA,CAC1B,MAAM,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,eAAA,GAAkB,CAAC,CAAA;AAE3C,IAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAA;AACb,MAAA,MAAMC,QAAAA,GAAU,WAAA,CAAY,GAAA,EAAI,GAAI,SAAA;AACpC,MAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAA,CAAKA,QAAO,CAAA;AACvC,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,UAAA,CAAW,CAAC,CAAA,GAAI,CAAC,CAAA,IAAK,CAAA,EAAG,IAAI,CAAA;AACvD,IAAA,MAAM,uBAAuB,UAAA,CAAW,GAAA,CAAI,CAAC,CAACC,QAAAA,EAAS,KAAK,CAAA,KAAM;AAChE,MAAA,MAAM,gBAAgB,KAAA,GAAQ,QAAA;AAE9B,MAAA,MAAMC,WAAAA,GAAa,IAAA,CAAK,GAAA,CAAI,aAAA,EAAe,GAAG,CAAA;AAC9C,MAAA,OAAO,EAAE,OAAA,EAAAD,QAAAA,EAAS,UAAA,EAAAC,WAAAA,EAAW;AAAA,IAC/B,CAAC,CAAA;AAGD,IAAA,MAAM,aAAA,GAAgB,IAAA;AACtB,IAAA,IAAI,oBAAA,CAAqB,CAAC,CAAA,EAAG,UAAA,GAAa,aAAA,EAAe;AACvD,MAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAA;AACb,MAAA,MAAMF,QAAAA,GAAU,WAAA,CAAY,GAAA,EAAI,GAAI,SAAA;AACpC,MAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAA,CAAKA,QAAO,CAAA;AACvC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,YAAA,GAAe,qBAAqB,CAAC,CAAA;AAC3C,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,IAC9D;AACA,IAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,KAAA,CAAM,CAAC,CAAA;AAEjD,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,EAAI,GAAI,SAAA;AACpC,IAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAA,CAAK,OAAO,CAAA;AAEvC,IAAA,OAAO;AAAA,MACL,SAAS,YAAA,CAAa,OAAA;AAAA,MACtB,YAAY,YAAA,CAAa,UAAA;AAAA,MACzB,YAAA,EAAc,YAAA,CAAa,MAAA,GAAS,CAAA,GAAI,YAAA,GAAe,MAAA;AAAA,MACvD,SAAA,EAAW,IAAA,CAAK,iBAAA,CAAkBH,MAAAA,EAAO,aAAa,OAAO;AAAA,KAC/D;AAAA,EACF;AAAA,EAEQ,sBAAA,CAAuBA,QAAuB,MAAA,EAAmC;AACvF,IAAA,MAAMM,SAAAA,GAAW,IAAA,CAAK,cAAA,CAAe,GAAA,CAAIN,MAAAA,CAAM,QAAQ,CAAA,IAAK,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC;AAE9F,IAAAM,SAAAA,CAAS,OAAA,CAAQ,CAACL,QAAAA,KAAY;AAC5B,MAAA,IAAI,KAAA,GAAQ,CAAA;AAGZ,MAAAA,QAAAA,CAAQ,QAAA,CAAS,OAAA,CAAQ,CAACM,MAAAA,KAAU;AAClC,QAAA,IAAIA,MAAAA,CAAM,IAAA,CAAKP,MAAAA,CAAM,UAAU,CAAA,EAAG;AAChC,UAAA,KAAA,IAASC,QAAAA,CAAQ,MAAA;AAAA,QACnB;AACA,QAAA,IAAIM,MAAAA,CAAM,IAAA,CAAKP,MAAAA,CAAM,QAAQ,CAAA,EAAG;AAC9B,UAAA,KAAA,IAASC,SAAQ,MAAA,GAAS,GAAA;AAAA,QAC5B;AAAA,MACF,CAAC,CAAA;AAED,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAAA,CAAQ,OAAO,CAAA,IAAK,CAAA;AACpD,QAAA,MAAA,CAAO,GAAA,CAAIA,QAAAA,CAAQ,OAAA,EAAS,YAAA,GAAe,KAAK,CAAA;AAAA,MAClD;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,sBAAA,CAAuBD,QAAuB,MAAA,EAAmC;AACvF,IAAA,MAAMM,SAAAA,GAAW,IAAA,CAAK,cAAA,CAAe,GAAA,CAAIN,MAAAA,CAAM,QAAQ,CAAA,IAAK,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC;AAE9F,IAAAM,SAAAA,CAAS,OAAA,CAAQ,CAACL,QAAAA,KAAY;AAC5B,MAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,MAAAA,QAAAA,CAAQ,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY;AACpC,QAAA,IAAID,OAAM,QAAA,CAAS,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,CAAA,EAAG;AAClD,UAAA,UAAA,EAAA;AAAA,QACF;AACA,QAAA,IAAIA,OAAM,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,CAAA,EAAG;AAChD,UAAA,UAAA,IAAc,GAAA;AAAA,QAChB;AAAA,MACF,CAAC,CAAA;AAED,MAAA,IAAI,aAAa,CAAA,EAAG;AAClB,QAAA,MAAM,KAAA,GAAQ,UAAA,GAAaC,QAAAA,CAAQ,MAAA,GAAS,GAAA;AAC5C,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAAA,CAAQ,OAAO,CAAA,IAAK,CAAA;AACpD,QAAA,MAAA,CAAO,GAAA,CAAIA,QAAAA,CAAQ,OAAA,EAAS,YAAA,GAAe,KAAK,CAAA;AAAA,MAClD;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,sBAAA,CAAuB,QAAwB,MAAA,EAAmC;AAExF,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AAClC,MAAA,MAAM,cAAc,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,cAAA,CAAe,SAAS,CAAC,CAAA;AAGtE,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,kBAAA,CAAmB,WAAA,IAAe,EAAE,CAAA;AACjE,MAAA,eAAA,CAAgB,OAAA,CAAQ,CAACG,QAAAA,KAAY;AACnC,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAO,CAAA,IAAK,CAAA;AAC5C,QAAA,MAAA,CAAO,GAAA,CAAIA,QAAAA,EAAS,YAAA,GAAe,GAAG,CAAA;AAAA,MACxC,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,qBAAA,CAAsBJ,QAAuB,MAAA,EAAmC;AAEtF,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,IAAA,EAAM,IAAA;AAAA;AAAA,MACN,QAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,IAAA,EAAM,GAAA;AAAA,MACN,GAAA,EAAK,GAAA;AAAA,MACL,MAAA,EAAQ,GAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAEA,IAAAA,MAAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,CAAC,MAAA,KAAW;AACjC,MAAA,MAAM,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,IAAkC,KAAK,aAAA,CAAc,OAAA;AAEzF,MAAA,QAAQ,OAAO,IAAA;AAAM,QACnB,KAAK,MAAA;AAAA,QACL,KAAK,UAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,OAAA,EAAS,MAAA,GAAS,CAAC,CAAA;AAC3C,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AACvC,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,CAAA;AACzC,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,OAAA,EAAS,MAAA,GAAS,GAAG,CAAA;AAC7C,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,MAAM,CAAA;AACzC,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,MAAA,GAAS,GAAG,CAAA;AAC/C,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA;AACxC,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA;AACxC,UAAA;AAAA;AACJ,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,yBAAA,CAA0B,QAAwB,MAAA,EAAmC;AAE3F,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG;AACpC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,cAAA,CAAe,KAAA,CAAM,GAAG,CAAA;AAC5C,IAAA,MAAM,IAAA,GAAO,GAAA;AAEb,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAEtC,MAAA,IAAI,CAAA,GAAI,KAAK,MAAA,CAAO,CAAC,MAAM,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,EAAG;AAG1C,MAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,GAAA,CAAI,EAAE,MAAA,CAAO,MAAA,GAAS,CAAA,GAAI,CAAA,CAAA,GAAK,GAAG,CAAA;AAC7D,MAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,MAAA,MAAA,CAAO,IAAI,GAAA,EAAA,CAAM,MAAA,CAAO,IAAI,GAAG,CAAA,IAAK,KAAK,MAAM,CAAA;AAAA,IACjD;AAGA,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,GAAS,GAAA,EAAK;AACpC,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,KAAA,CAAM,IAAI,CAAA;AAAA,IACtD;AAAA,EACF;AAAA,EAEQ,UAAA,CAAW,MAAA,EAA6BI,QAAAA,EAAiB,KAAA,EAAqB;AACpF,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAO,CAAA,IAAK,CAAA;AAC5C,IAAA,MAAA,CAAO,GAAA,CAAIA,QAAAA,EAAS,YAAA,GAAe,KAAK,CAAA;AAAA,EAC1C;AAAA,EAEQ,mBAAmBA,QAAAA,EAA2B;AACpD,IAAA,MAAM,aAAA,GAA0C;AAAA,MAC9C,OAAA,EAAS,CAAC,OAAA,EAAS,SAAA,EAAW,SAAS,CAAA;AAAA,MACvC,OAAA,EAAS,CAAC,OAAA,EAAS,SAAS,CAAA;AAAA,MAC5B,SAAA,EAAW,CAAC,OAAA,EAAS,OAAA,EAAS,SAAS,CAAA;AAAA,MACvC,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAA,MACnB,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAA,MACnB,OAAA,EAAS,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,MAC9B,QAAA,EAAU,CAAC,OAAA,EAAS,SAAS,CAAA;AAAA,MAC7B,SAAA,EAAW,CAAC,WAAA,EAAa,QAAQ;AAAA,KACnC;AAEA,IAAA,OAAO,aAAA,CAAcA,QAAO,CAAA,IAAK,EAAC;AAAA,EACpC;AAAA,EAEQ,iBAAA,CAAkBJ,QAAuB,QAAA,EAA0B;AACzE,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,IAAIA,MAAAA,CAAM,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAC7B,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,mBAAA,EAAsBA,MAAAA,CAAM,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,IAC5E;AAEA,IAAA,IAAIA,MAAAA,CAAM,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AAC7B,MAAA,MAAM,WAAA,GAAc,CAAC,GAAG,IAAI,GAAA,CAAIA,MAAAA,CAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAC,CAAC,CAAA;AAClE,MAAA,OAAA,CAAQ,KAAK,CAAA,gBAAA,EAAmB,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,IAC1D;AAEA,IAAA,OAAO,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,EAC1B;AAAA,EAEA,MAAM,WAAA,CAAY,MAAA,EAAgB,cAAA,EAAwB,WAAA,EAAqC;AAE7F,IAAA,IAAA,CAAK,cAAA,CAAe,KAAK,cAAc,CAAA;AACvC,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,GAAS,GAAA,EAAK;AACpC,MAAA,IAAA,CAAK,eAAe,KAAA,EAAM;AAAA,IAC5B;AAAA,EAIF;AAAA;AAAA,EAGA,UAAA,GAAa;AACX,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAM,IAAM,CAAA;AACrD,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA;AAAA,QACR,MAAA,EAAQ,CAAA;AAAA,QACR,KAAA,EAAO,CAAA;AAAA,QACP,SAAA,EAAW,CAAA;AAAA,QACX,kBAAA,EAAoB;AAAA,OACtB;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA,CAAE,KAAK,CAACE,EAAAA,EAAG,CAAA,KAAMA,EAAAA,GAAI,CAAC,CAAA;AAC9C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,SAAS,IAAI,CAAA;AAEhD,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,IAAK,CAAA;AAAA,MAC5B,MAAA,EAAQ,KAAA,CAAM,MAAA,CAAO,CAACA,EAAAA,EAAG,MAAMA,EAAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,KAAA,CAAM,MAAA;AAAA,MACjD,KAAA,EAAO,KAAK,OAAA,CAAQ,UAAA;AAAA,MACpB,SAAA,EAAW,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,CAAA,GACjC,KAAK,OAAA,CAAQ,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,UAAA,GACxC,CAAA;AAAA,MACJ,kBAAA,EAAoB,KAAK,OAAA,CAAQ;AAAA,KACnC;AAAA,EACF;AAAA,EAEQ,kBAAA,GAA2B;AAEjC,IAAA,MAAM,eAAA,GAAmC;AAAA;AAAA,MAEvC;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,WAAA;AAAA,UACA,SAAA;AAAA,UACA,oCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,MAAA,EAAQ,cAAc,OAAA,EAAS,OAAA,EAAS,YAAY,SAAS,CAAA;AAAA,QACxE,MAAA,EAAQ;AAAA;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,aAAA;AAAA,UACA,WAAA;AAAA,UACA,sCAAA;AAAA,UACA,gCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,QAAA,EAAU,OAAA,EAAS,WAAA,EAAa,UAAU,OAAO,CAAA;AAAA,QAC5D,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,cAAA;AAAA,UACA,YAAA;AAAA,UACA,kCAAA;AAAA,UACA,uBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,SAAA,EAAW,KAAA,EAAO,SAAS,SAAS,CAAA;AAAA,QAC/C,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,WAAA;AAAA,UACA,SAAA;AAAA,UACA,uDAAA;AAAA,UACA,8BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAA,EAAW,QAAQ,MAAA,EAAQ,aAAA,EAAe,QAAQ,OAAO,CAAA;AAAA,QAC5E,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,YAAA;AAAA,UACA,UAAA;AAAA,UACA,sCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,aAAa,QAAQ,CAAA;AAAA,QAC7D,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,gIAAA;AAAA,UACA,oDAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU;AAAA,UACR,OAAA;AAAA,UACA,QAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,4GAAA;AAAA,UACA,sDAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU;AAAA,UACR,OAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,mFAAA;AAAA,UACA,mCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,OAAA,EAAS,OAAA,EAAS,aAAa,MAAA,EAAQ,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,QAAQ,CAAA;AAAA,QACvF,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,mFAAA;AAAA,UACA,yBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,MAAA,EAAQ,SAAA,EAAW,QAAQ,aAAA,EAAe,KAAA,EAAO,YAAY,MAAM,CAAA;AAAA,QAC9E,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,2FAAA;AAAA,UACA,oBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,QAAA,EAAU,OAAA,EAAS,WAAW,SAAA,EAAW,UAAA,EAAY,YAAY,SAAS,CAAA;AAAA,QACrF,MAAA,EAAQ;AAAA,OACV;AAAA;AAAA,MAEA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,sFAAA;AAAA,UACA,6DAAA;AAAA,UACA,4CAAA;AAAA,UACA,2BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,UAAA,EAAY,YAAA,EAAc,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AAAA,QAC5G,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,yEAAA;AAAA,UACA,wBAAA;AAAA,UACA,4CAAA;AAAA,UACA,wCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,OAAA,EAAS,UAAA,EAAY,UAAU,MAAA,EAAQ,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAY,SAAS,CAAA;AAAA,QAC3F,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,4EAAA;AAAA,UACA,mDAAA;AAAA,UACA,wBAAA;AAAA,UACA,gDAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAQ,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,UAAA,EAAY,SAAS,CAAA;AAAA,QACxF,MAAA,EAAQ;AAAA,OACV;AAAA;AAAA,MAEA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,2DAAA;AAAA,UACA,0DAAA;AAAA,UACA,0CAAA;AAAA,UACA,wCAAA;AAAA,UACA,iDAAA;AAAA,UACA,6BAAA;AAAA,UACA,qDAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,QAAA,EAAU,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,IAAI,CAAA;AAAA,QAC5G,MAAA,EAAQ;AAAA;AACV,KACF;AAGA,IAAA,MAAM,gBAAA,GAAoC;AAAA;AAAA,MAExC;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,WAAA;AAAA,UACA,OAAA;AAAA,UACA,uBAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,oBAAA,EAAO,oBAAA,EAAO,0BAAA,EAAQ,4BAAQ,0BAAM,CAAA;AAAA,QAC/C,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,aAAA;AAAA,UACA,SAAA;AAAA,UACA,iBAAA;AAAA,UACA,wBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,gCAAA,EAAS,cAAA,EAAM,cAAA,EAAM,gBAAM,0BAAM,CAAA;AAAA,QAC5C,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,UAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,cAAA;AAAA,UACA,SAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,gCAAA,EAAS,QAAA,EAAK,KAAK,CAAA;AAAA,QAC9B,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,WAAA;AAAA,UACA,OAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,oBAAA,EAAO,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QAClC,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,YAAA;AAAA,UACA,QAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,0BAAA,EAAQ,QAAA,EAAK,sBAAO,cAAI,CAAA;AAAA,QACnC,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,0CAAA;AAAA,UACA,uBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,oBAAA,EAAO,cAAA,EAAM,kCAAS,cAAA,EAAM,oBAAA,EAAO,cAAA,EAAM,cAAA,EAAM,cAAI,CAAA;AAAA,QAC9D,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,sCAAA;AAAA,UACA,wBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,cAAA,EAAM,0BAAA,EAAQ,UAAK,0BAAA,EAAQ,gCAAA,EAAS,gBAAM,cAAI,CAAA;AAAA,QACzD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,sCAAA;AAAA,UACA,8BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,cAAA,EAAM,sBAAO,4CAAA,EAAW,0BAAA,EAAQ,gBAAM,cAAI,CAAA;AAAA,QACrD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,wBAAA;AAAA,UACA,sBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,oBAAA,EAAO,cAAA,EAAM,0BAAA,EAAQ,gBAAM,gCAAO,CAAA;AAAA,QAC7C,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,iCAAA;AAAA,UACA,qBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,0BAAA,EAAQ,gBAAM,cAAA,EAAM,gCAAA,EAAS,sBAAO,cAAI,CAAA;AAAA,QACnD,MAAA,EAAQ;AAAA,OACV;AAAA;AAAA,MAEA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,yBAAA;AAAA,UACA,0BAAA;AAAA,UACA,2BAAA;AAAA,UACA,8BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,QAAA,EAAK,cAAA,EAAM,oBAAA,EAAO,oBAAK,CAAA;AAAA,QAC1D,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,8BAAA;AAAA,UACA,uBAAA;AAAA,UACA,uBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,oBAAA,EAAO,cAAA,EAAM,UAAK,QAAA,EAAK,cAAA,EAAM,sBAAO,oBAAK,CAAA;AAAA,QACpD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,4BAAA;AAAA,UACA,4BAAA;AAAA,UACA,0BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,oBAAA,EAAO,QAAA,EAAK,4BAAQ,cAAA,EAAM,0BAAA,EAAQ,oBAAA,EAAO,cAAA,EAAM,cAAI,CAAA;AAAA,QAC9D,MAAA,EAAQ;AAAA,OACV;AAAA;AAAA,MAEA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,uCAAA;AAAA,UACA,6BAAA;AAAA,UACA,8BAAA;AAAA,UACA,4BAAA;AAAA,UACA,sBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,wCAAU,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,oBAAK,CAAA;AAAA,QAClE,MAAA,EAAQ;AAAA;AACV,KACF;AAGA,IAAA,MAAM,eAAA,GAAmC;AAAA,MACvC;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,mCAAA;AAAA,UACA,2BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,QAAA,EAAK,cAAA,EAAM,cAAI,CAAA;AAAA,QACxD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,8BAAA;AAAA,UACA,yBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,QAAA,EAAK,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QAClD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,4BAAA;AAAA,UACA,sBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QAC7C,MAAA,EAAQ;AAAA;AACV,KACF;AAGA,IAAA,MAAM,cAAA,GAAkC;AAAA,MACtC;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,kCAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAU,CAAC,cAAA,EAAM,0BAAA,EAAQ,gBAAM,oBAAA,EAAO,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACtD,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,+BAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,oBAAA,EAAO,cAAA,EAAM,0BAAA,EAAQ,gBAAM,oBAAK,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU;AAAA,UACR,iCAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAU,CAAC,oBAAA,EAAO,oBAAA,EAAO,gCAAA,EAAS,gBAAM,cAAI,CAAA;AAAA,QAC5C,MAAA,EAAQ;AAAA;AACV,KACF;AAGA,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,eAAe,CAAA;AAC7C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,gBAAgB,CAAA;AAC9C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,eAAe,CAAA;AAC7C,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,EAAM,cAAc,CAAA;AAAA,EAC9C;AAAA,EAEQ,2BAAA,CAA4BF,QAAuB,MAAA,EAAmC;AAE5F,IAAA,MAAM,aAAA,GAAgB,KAAK,YAAA,CAAa,aAAA;AAExC,IAAA,MAAM,SAAA,GAAYA,MAAAA,CAAM,UAAA,CAAW,IAAA,EAAK;AAGxC,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAAI,QAAAA,KAAW;AAC/B,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,qBAAA,CAAsB,SAAA,EAAWA,QAAO,CAAA;AAC9D,MAAA,MAAM,mBAAA,GAAsBA,QAAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AAC/C,MAAA,MAAM,oBAAA,GAAuB,IAAA,CAAK,qBAAA,CAAsB,SAAA,EAAW,mBAAmB,CAAA;AAGtF,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,oBAAoB,CAAA;AAG5D,MAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,QAAA,MAAM,UAAA,GAAa,CAAA;AACnB,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,GAAA,CAAIA,QAAO,CAAA,IAAK,CAAA;AAC5C,QAAA,MAAA,CAAO,IAAIA,QAAAA,EAAS,IAAA,CAAK,GAAA,CAAI,YAAA,EAAc,UAAU,CAAC,CAAA;AAAA,MACxD;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,qBAAA,CAAsB,IAAY,EAAA,EAAoB;AAE5D,IAAA,MAAM,OAAO,EAAA,CAAG,MAAA;AAChB,IAAA,MAAM,OAAO,EAAA,CAAG,MAAA;AAGhB,IAAA,MAAM,SAAqB,KAAA,CAAM,IAAA,GAAO,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA,CAAE,GAAA,CAAI,MAAM,MAAM,IAAA,GAAO,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAC,CAAA;AAGvF,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,IAAK,IAAA,EAAM,KAAK,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAC/C,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,IAAK,IAAA,EAAM,KAAK,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAG/C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,EAAM,CAAA,EAAA,EAAK;AAC9B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,EAAM,CAAA,EAAA,EAAK;AAC9B,QAAA,IAAI,GAAG,CAAA,GAAI,CAAC,MAAM,EAAA,CAAG,CAAA,GAAI,CAAC,CAAA,EAAG;AAC3B,UAAA,MAAA,CAAO,CAAC,EAAE,CAAC,CAAA,GAAI,OAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA;AAAA,QACpC,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA;AAAA,YAClB,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAAA;AAAA,YACnB,MAAA,CAAO,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA;AAAA,YACnB,OAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI;AAAA;AAAA,WACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,IAAI,CAAA,CAAE,IAAI,CAAA;AAAA,EAC1B;AACF,CAAA;;;ACjzBO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,MAAM,OAAA,CACJJ,MAAAA,EACAI,QAAAA,EACA,QAAA,EACkC;AAGlC,IAAA,QAAQA,QAAAA;AAAS,MACf,KAAK,OAAA;AACH,QAAA,OAAO,IAAA,CAAK,qBAAA,CAAsBJ,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACnD,KAAK,QAAA;AACH,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuBA,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACpD,KAAK,QAAA;AACH,QAAA,OAAO,IAAA,CAAK,sBAAA,CAAuBA,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACpD,KAAK,OAAA;AACH,QAAA,OAAO,IAAA,CAAK,qBAAA,CAAsBA,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACnD,KAAK,SAAA;AACH,QAAA,OAAO,IAAA,CAAK,uBAAA,CAAwBA,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACrD,KAAK,OAAA;AACH,QAAA,OAAO,IAAA,CAAK,yBAAA,CAA0BA,MAAAA,EAAO,QAAQ,CAAA;AAAA,MACvD;AACE,QAAA,OAAO,IAAA,CAAK,wBAAA,CAAyBA,MAAAA,EAAO,QAAQ,CAAA;AAAA;AACxD,EACF;AAAA,EAEQ,qBAAA,CAAsB,QAAgB,QAAA,EAA2C;AAIvF,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU;AAAA,MAC1D,OAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAA,CAAQ,WAAA,GAAc,YAAA;AAGtB,IAAkB,IAAA,CAAK,yBAAA,CAA0B,KAAK;AAKtD,IAAmB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAK7C,IAAkB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAI5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,sBAAA,CAAuB,QAAgB,QAAA,EAA2C;AAIxF,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU;AAAA,MACrD,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAA,CAAQ,MAAA,GAAS,OAAA;AAGjB,IAAe,IAAA,CAAK,cAAA,CAAe,KAAK;AAKxC,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,KAAK,CAAA;AAChD,IAAA,IAAI,WAAA,EAAa;AAAE,MAAe,UAAA,CAAW,KAAA;AAC3C,MAAA,OAAA,CAAQ,SAAS,UAAA,CAAW,MAAA;AAAA,IAC7B;AAED,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,sBAAA,CAAuB,QAAgB,QAAA,EAA2C;AAIxF,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU;AAAA,MAC1D,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,4CAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAA,CAAQ,WAAA,GAAc,YAAA;AAGtB,IAAkB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAK5C,IAAgB,IAAA,CAAK,iBAAA,CAAkB,KAAK;AAI5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,qBAAA,CAAsB,QAAgB,QAAA,EAA2C;AAIvF,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU;AAAA,MAC1D,OAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAA,CAAQ,WAAA,GAAc,YAAA;AAGtB,IAAkB,IAAA,CAAK,cAAA,CAAe,KAAK;AAK3C,IAAkB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAI5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,uBAAA,CAAwB,QAAgB,QAAA,EAA2C;AAIzF,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU;AAAA,MAC1D,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,gCAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAA,CAAQ,WAAA,GAAc,YAAA;AAGtB,IAAkB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAK5C,IAAe,IAAA,CAAK,iBAAA,CAAkB,KAAK;AAI3C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,yBAAA,CAA0B,QAAgB,QAAA,EAA2C;AAI3F,IAAoB,IAAA,CAAK,qBAAA,CAAsB,KAAK;AAIpD,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,wBAAA,CAAyB,QAAgB,QAAA,EAA2C;AAI1F,IAAA,MAAM,gBAAgB,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU,EAAE,CAAA;AAC/D,IAAA,OAAA,CAAQ,KAAA,GAAQ,aAAA;AAGhB,IAAkB,IAAA,CAAK,eAAA,CAAgB,KAAK;AAI5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,gBAAA,CAAiB,MAAA,EAAgBQ,UAAAA,EAAmBC,SAAAA,EAA4B;AACtF,IAAA,IAAI,OAAA,GAAU,MAAM,WAAA,EAAY;AAGhC,IAAAA,SAAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC5B,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,GAAA,EAAM,OAAO,OAAO,IAAI,CAAA;AAClD,MAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,IACtC,CAAC,CAAA;AAGD,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,GAAG,EAAE,IAAA,EAAK;AAE5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEQ,0BAA0BT,MAAAA,EAA8B;AAC9D,IAAA,MAAMU,UAAAA,GAAoC;AAAA,MACxC,UAAA,EAAY,gCAAA;AAAA,MACZ,UAAA,EAAY,sBAAA;AAAA,MACZ,MAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,EAAA,EAAI,kBAAA;AAAA,MACJ,GAAA,EAAK,kBAAA;AAAA,MACL,MAAA,EAAQ,kBAAA;AAAA,MACR,IAAA,EAAM,gBAAA;AAAA,MACN,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,cAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQA,UAAS,CAAA,EAAG;AACxD,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKV,MAAK,CAAA,EAAG;AACvB,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,gBAAgBA,MAAAA,EAA8B;AACpD,IAAA,MAAM,UAAA,GAAqC;AAAA,MACzC,KAAA,EAAO,sBAAA;AAAA,MACP,GAAA,EAAK,kBAAA;AAAA,MACL,OAAA,EAAS,gBAAA;AAAA,MACT,MAAA,EAAQ,yBAAA;AAAA,MACR,OAAA,EAAS,gBAAA;AAAA,MACT,MAAA,EAAQ,eAAA;AAAA,MACR,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,EAAO,4BAAA;AAAA,MACP,MAAA,EAAQ,eAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACX;AAEA,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC/D,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKA,MAAK,CAAA,EAAG;AACvB,QAAA,OAAO,UAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,eAAeA,MAAAA,EAA8B;AACnD,IAAA,MAAM,MAAA,GAAiC;AAAA,MACrC,SAAA,EAAW,sCAAA;AAAA,MACX,OAAA,EAAS,+BAAA;AAAA,MACT,QAAA,EAAU,iBAAA;AAAA,MACV,UAAA,EAAY,+BAAA;AAAA,MACZ,GAAA,EAAK,yBAAA;AAAA,MACL,MAAA,EAAQ,sBAAA;AAAA,MACR,IAAA,EAAM,6BAAA;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAEA,IAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACvD,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKA,MAAK,CAAA,EAAG;AACvB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,gBAAgBA,MAAAA,EAA8B;AACpD,IAAA,MAAM,YAAA,GAAe,qCAAA;AACrB,IAAA,MAAM,MAAA,GAASA,MAAAA,CAAM,KAAA,CAAM,YAAY,CAAA;AACvC,IAAA,OAAO,MAAA,GAAS,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AAAA,EAC9B;AAAA,EAEQ,kBAAkBA,MAAAA,EAAyD;AACjF,IAAA,MAAM,iBAAA,GAAoB,uBAAA;AAC1B,IAAA,MAAM,MAAA,GAASA,MAAAA,CAAM,KAAA,CAAM,iBAAiB,CAAA;AAE5C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,QAAA,CAAS,MAAA,CAAO,CAAC,GAAG,EAAE,CAAA;AAAA,QAC7B,MAAA,EAAQ,QAAA,CAAS,MAAA,CAAO,CAAC,GAAG,EAAE;AAAA,OAChC;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,gBAAgBA,MAAAA,EAA8B;AACpD,IAAA,MAAM,gBAAA,GAAmB,0CAAA;AACzB,IAAA,MAAM,MAAA,GAASA,MAAAA,CAAM,KAAA,CAAM,gBAAgB,CAAA;AAE3C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,MAAA,CAAO,CAAC,GAAG,EAAE,CAAA;AACrC,MAAc,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA;AAExB,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,EAAG;AAC1B,QAAA,OAAO,MAAA,GAAS,EAAA;AAAA,MAClB;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,kBAAkBA,MAAAA,EAA8B;AACtD,IAAA,MAAM,WAAW,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,QAAQ,KAAK,CAAA;AAEpD,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAE9B,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKA,MAAK,CAAA,EAAG;AACvB,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,eAAeA,MAAAA,EAA8B;AACnD,IAAA,MAAM,KAAA,GAAgC;AAAA,MACpC,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,oBAAA;AAAA,MACb,GAAA,EAAK,uBAAA;AAAA,MACL,WAAA,EAAa,yBAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAEA,IAAA,KAAA,MAAW,CAACW,KAAAA,EAAM,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AACpD,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKX,MAAK,CAAA,EAAG;AACvB,QAAA,OAAOW,KAAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,kBAAkBX,MAAAA,EAA8B;AACtD,IAAA,MAAM,OAAA,GAAkC;AAAA,MACtC,WAAA,EAAa,uCAAA;AAAA,MACb,QAAA,EAAU,oCAAA;AAAA,MACV,OAAA,EAAS,sCAAA;AAAA,MACT,MAAA,EAAQ,kCAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACxD,MAAA,IAAI,OAAA,CAAQ,IAAA,CAAKA,MAAK,CAAA,EAAG;AACvB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,sBAAsBA,MAAAA,EAA8B;AAC1D,IAAA,MAAM,WAAA,GAAwC;AAAA,MAC5C,IAAI,CAAC,SAAA,EAAW,cAAA,EAAM,cAAA,EAAM,gBAAM,gBAAW,CAAA;AAAA,MAC7C,IAAI,CAAC,UAAA,EAAY,oBAAA,EAAO,cAAA,EAAM,sBAAO,sBAAY,CAAA;AAAA,MACjD,IAAI,CAAC,SAAA,EAAW,oBAAA,EAAO,cAAA,EAAM,sBAAO,kBAAa,CAAA;AAAA,MACjD,IAAI,CAAC,QAAA,EAAU,oBAAA,EAAO,cAAA,EAAM,sBAAO,mBAAW,CAAA;AAAA,MAC9C,IAAI,CAAC,YAAA,EAAc,gCAAA,EAAS,oBAAA,EAAO,4BAAQ,sBAAY;AAAA,KACzD;AAEA,IAAoBA,OAAM,WAAA;AAE1B,IAAA,KAAA,MAAW,CAACY,KAAAA,EAAMN,SAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1D,MAAA,KAAA,MAAW,YAAYA,SAAAA,EAAU;AAC/B,QAAA,IAAI,UAAA,CAAW,QAAA,CAAS,QAAQ,CAAA,EAAG;AACjC,UAAA,OAAOM,KAAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;;;ACjdO,IAAM,yBAAN,MAA6B;AAAA,EAC1B,UAAA;AAAA,EACA,WAAA,GAAuB,KAAA;AAAA,EAE/B,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,UAAA,uBAAiB,GAAA,EAAI;AAAA,EAC5B;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,WAAA,EAAa;AAAC,MAAA;AAAA,IAAO;AAE9B,IAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA,EAEA,cAAA,CAAe,QAAA,EAAkBJ,UAAAA,GAAoB,IAAA,EAAiC;AACpF,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA,IAAK,IAAA;AAAA,EACzC;AAAA,EAEA,cAAA,CAAe,QAAA,EAAkB,QAAA,GAAmB,IAAA,EAAc;AAChE,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA;AAChD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,WAAW,OAAO,CAAA,UAAA,CAAA;AAAA,IAC3B;AAEA,IAAA,OAAO,YAAY,WAAA,CAAY,QAAQ,KAAK,WAAA,CAAY,WAAA,CAAY,IAAI,CAAA,IAAK,EAAA;AAAA,EAC/E;AAAA,EAEA,WAAA,CAAY,QAAA,EAAkB,QAAA,GAAmB,IAAA,EAAgB;AAC/D,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA;AAChD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,OAAO,WAAA,CAAY,SAAS,QAAQ,CAAA,IAAK,YAAY,QAAA,CAAS,IAAI,KAAK,EAAC;AAAA,EAC1E;AAAA,EAEA,WAAA,CAAY,QAAA,EAAkB,QAAA,GAAmB,IAAA,EAAgB;AAC/D,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA;AAChD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,OAAO,WAAA,CAAY,SAAS,QAAQ,CAAA,IAAK,YAAY,QAAA,CAAS,IAAI,KAAK,EAAC;AAAA,EAC1E;AAAA,EAEA,cAAA,GAA2B;AACzB,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA;AAAA,EAC1C;AAAA,EAEQ,gBAAA,GAAyB;AAE/B,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,OAAA,EAAS;AAAA,MAC3B,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iBAAA;AAAA,QACJ,EAAA,EAAI,gCAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI,gEAAA;AAAA,QACJ,EAAA,EAAI,oDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI;AAAA,UACF,OAAA;AAAA,UACA,QAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,EAAA,EAAI,CAAC,oBAAA,EAAO,cAAA,EAAM,gCAAA,EAAS,gBAAM,oBAAA,EAAO,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAI,CAAA;AAAA,QAC9D,EAAA,EAAI,CAAC,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,QAAA,EAAK,cAAA,EAAM,cAAA,EAAM,cAAI,CAAA;AAAA,QACxD,EAAA,EAAI,CAAC,cAAA,EAAM,0BAAA,EAAQ,gBAAM,oBAAA,EAAO,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAI;AAAA,OACxD;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,yBAAA,EAA2B,mBAAA,EAAqB,+BAA+B,CAAA;AAAA,QACpF,EAAA,EAAI,CAAC,+EAAA,EAAqB,kCAAA,EAAgB,wDAAW,CAAA;AAAA,QACrD,EAAA,EAAI,CAAC,qCAAA,EAAc,sBAAA,EAAc,sCAAQ,CAAA;AAAA,QACzC,EAAA,EAAI,CAAC,6CAAA,EAAiB,uBAAA,EAAe,8CAAW;AAAA;AAClD,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,OAAA,EAAS;AAAA,MAC3B,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iBAAA;AAAA,QACJ,EAAA,EAAI,gCAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,wBAAA;AAAA,QACJ,EAAA,EAAI,wDAAA;AAAA,QACJ,EAAA,EAAI,4CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,MAAA,EAAQ,SAAA,EAAW,QAAQ,aAAA,EAAe,KAAA,EAAO,UAAA,EAAY,MAAA,EAAQ,WAAW,CAAA;AAAA,QACrF,IAAI,CAAC,oBAAA,EAAO,gBAAM,0BAAA,EAAQ,cAAA,EAAM,kCAAS,cAAI,CAAA;AAAA,QAC7C,IAAI,CAAC,cAAA,EAAM,0BAAA,EAAQ,0BAAA,EAAQ,sBAAO,cAAI,CAAA;AAAA,QACtC,IAAI,CAAC,oBAAA,EAAO,cAAA,EAAM,cAAA,EAAM,4BAAQ,cAAI;AAAA,OACtC;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,kBAAA,EAAoB,0BAAA,EAA4B,wBAAwB,CAAA;AAAA,QAC7E,EAAA,EAAI,CAAC,oEAAA,EAAe,kDAAA,EAAY,oEAAa,CAAA;AAAA,QAC7C,EAAA,EAAI,CAAC,sCAAA,EAAU,sCAAA,EAAU,4CAAS,CAAA;AAAA,QAClC,EAAA,EAAI,CAAC,8CAAA,EAAa,8CAAA,EAAa,0DAAa;AAAA;AAC9C,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,SAAA,EAAW;AAAA,MAC7B,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,aAAA;AAAA,QACJ,EAAA,EAAI,4CAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,8BAAA;AAAA,QACJ,EAAA,EAAI,0EAAA;AAAA,QACJ,EAAA,EAAI,wDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,QAAA,EAAU,OAAA,EAAS,WAAW,SAAA,EAAW,UAAA,EAAY,UAAA,EAAY,SAAA,EAAW,SAAS,CAAA;AAAA,QAC1F,EAAA,EAAI,CAAC,0BAAA,EAAQ,cAAA,EAAM,gBAAM,gCAAA,EAAS,oBAAA,EAAO,gBAAM,cAAI,CAAA;AAAA,QACnD,EAAA,EAAI,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QAC7C,EAAA,EAAI,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,0BAAA,EAAQ,sBAAO,cAAI;AAAA,OAClD;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,kBAAA,EAAoB,wBAAA,EAA0B,sBAAsB,CAAA;AAAA,QACzE,EAAA,EAAI,CAAC,0EAAA,EAAgB,sCAAA,EAAU,oEAAa,CAAA;AAAA,QAC5C,EAAA,EAAI,CAAC,sCAAA,EAAU,gCAAA,EAAS,0BAAM,CAAA;AAAA,QAC9B,EAAA,EAAI,CAAC,kCAAA,EAAW,uCAAA,EAAW,iCAAQ;AAAA;AACrC,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,QAAA,EAAU;AAAA,MAC5B,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iBAAA;AAAA,QACJ,EAAA,EAAI,gCAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,iBAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU,QAAA,EAAU,QAAA,EAAU,MAAM,KAAK,CAAA;AAAA,QACjE,IAAI,CAAC,oBAAA,EAAO,gBAAM,0BAAA,EAAQ,cAAA,EAAM,MAAM,KAAK,CAAA;AAAA,QAC3C,IAAI,CAAC,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,MAAM,KAAK,CAAA;AAAA,QACxC,IAAI,CAAC,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,MAAM,KAAK;AAAA,OAC1C;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,iBAAA,EAAmB,YAAA,EAAc,oBAAoB,CAAA;AAAA,QAC1D,EAAA,EAAI,CAAC,qCAAA,EAAc,0BAAA,EAAa,8DAAY,CAAA;AAAA,QAC5C,EAAA,EAAI,CAAC,yBAAA,EAAY,oBAAA,EAAY,sCAAQ,CAAA;AAAA,QACrC,EAAA,EAAI,CAAC,0BAAA,EAAa,qBAAA,EAAa,wCAAU;AAAA;AAC3C,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,QAAA,EAAU;AAAA,MAC5B,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,yBAAA;AAAA,QACJ,EAAA,EAAI,8CAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI;AAAA,UACF,OAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,EAAA,EAAI,CAAC,cAAA,EAAM,0BAAA,EAAQ,UAAK,0BAAA,EAAQ,gCAAA,EAAS,cAAA,EAAM,cAAA,EAAM,0BAAM,CAAA;AAAA,QAC3D,EAAA,EAAI,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,QAAA,EAAK,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,cAAI,CAAA;AAAA,QAClD,EAAA,EAAI,CAAC,oBAAA,EAAO,cAAA,EAAM,4BAAQ,cAAA,EAAM,oBAAA,EAAO,sBAAO,oBAAK;AAAA,OACrD;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,2BAAA,EAA6B,YAAA,EAAc,sBAAsB,CAAA;AAAA,QACtE,EAAA,EAAI,CAAC,kDAAA,EAAY,gCAAA,EAAS,wDAAW,CAAA;AAAA,QACrC,EAAA,EAAI,CAAC,sCAAA,EAAU,0BAAA,EAAQ,8BAAU,CAAA;AAAA,QACjC,EAAA,EAAI,CAAC,8CAAA,EAAa,uCAAA,EAAW,8CAAW;AAAA;AAC1C,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,QAAA,EAAU;AAAA,MAC5B,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,yBAAA;AAAA,QACJ,EAAA,EAAI,8CAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,OAAA,EAAS,OAAA,EAAS,aAAa,MAAA,EAAQ,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,QAAQ,CAAA;AAAA,QACjF,EAAA,EAAI,CAAC,cAAA,EAAM,oBAAA,EAAO,8CAAW,0BAAA,EAAQ,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACrD,EAAA,EAAI,CAAC,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QAC7C,IAAI,CAAC,oBAAA,EAAO,sBAAO,gCAAA,EAAS,cAAA,EAAM,gBAAM,oBAAK;AAAA,OAC/C;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,sBAAA,EAAwB,oBAAA,EAAsB,uBAAuB,CAAA;AAAA,QAC1E,EAAA,EAAI,CAAC,wDAAA,EAAa,8DAAA,EAAc,0EAAc,CAAA;AAAA,QAC9C,EAAA,EAAI,CAAC,sCAAA,EAAU,0BAAA,EAAQ,sCAAQ,CAAA;AAAA,QAC/B,EAAA,EAAI,CAAC,oDAAA,EAAc,6CAAA,EAAY,gEAAc;AAAA;AAC/C,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,SAAA,EAAW;AAAA,MAC7B,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,sCAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI,mEAAA;AAAA,QACJ,EAAA,EAAI,2CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAI,CAAC,QAAA,EAAU,aAAa,OAAA,EAAS,KAAA,EAAO,WAAW,MAAM,CAAA;AAAA,QAC7D,IAAI,CAAC,0BAAA,EAAQ,sCAAA,EAAU,0BAAA,EAAQ,sBAAO,cAAI,CAAA;AAAA,QAC1C,IAAI,CAAC,cAAA,EAAM,cAAA,EAAM,OAAA,EAAS,gBAAM,cAAI,CAAA;AAAA,QACpC,IAAI,CAAC,oBAAA,EAAO,oBAAA,EAAO,OAAA,EAAS,gBAAM,cAAI;AAAA,OACxC;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,aAAA,EAAe,mBAAA,EAAqB,WAAW,CAAA;AAAA,QACpD,EAAA,EAAI,CAAC,4CAAA,EAAW,8DAAA,EAAc,4CAAS,CAAA;AAAA,QACvC,EAAA,EAAI,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,mBAAS,CAAA;AAAA,QAC9B,EAAA,EAAI,CAAC,iCAAA,EAAU,iCAAA,EAAU,oBAAU;AAAA;AACrC,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,QAAA,EAAU;AAAA,MAC5B,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,yBAAA;AAAA,QACJ,EAAA,EAAI,kDAAA;AAAA,QACJ,EAAA,EAAI,4CAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAI,CAAC,OAAA,EAAS,SAAS,MAAA,EAAQ,OAAA,EAAS,UAAU,OAAO,CAAA;AAAA,QACzD,IAAI,CAAC,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,kCAAS,0BAAM,CAAA;AAAA,QACtC,IAAI,CAAC,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACjC,IAAI,CAAC,cAAA,EAAM,oBAAA,EAAO,cAAA,EAAM,sBAAO,oBAAK;AAAA,OACtC;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,YAAA,EAAc,eAAA,EAAiB,oBAAoB,CAAA;AAAA,QACxD,EAAA,EAAI,CAAC,gCAAA,EAAS,sCAAA,EAAU,sCAAQ,CAAA;AAAA,QAChC,EAAA,EAAI,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAA;AAAA,QAC3B,EAAA,EAAI,CAAC,0BAAA,EAAQ,2BAAA,EAAS,iCAAQ;AAAA;AAChC,KACD,CAAA;AAID,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,OAAA,EAAS;AAAA,MAC3B,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI,wDAAA;AAAA,QACJ,EAAA,EAAI,gCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI,gFAAA;AAAA,QACJ,EAAA,EAAI,sCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,MAAA,EAAQ,YAAA,EAAc,SAAS,QAAA,EAAU,OAAA,EAAS,WAAW,KAAK,CAAA;AAAA,QACvE,IAAI,CAAC,oBAAA,EAAO,wCAAU,cAAA,EAAM,cAAA,EAAM,wCAAU,cAAI,CAAA;AAAA,QAChD,IAAI,CAAC,oBAAA,EAAO,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACxC,IAAI,CAAC,oBAAA,EAAO,gBAAM,cAAA,EAAM,cAAA,EAAM,4BAAQ,cAAI;AAAA,OAC5C;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,wBAAA,EAA0B,iBAAA,EAAmB,sBAAsB,CAAA;AAAA,QACxE,EAAA,EAAI,CAAC,oEAAA,EAAe,mEAAA,EAAmB,oEAAa,CAAA;AAAA,QACpD,EAAA,EAAI,CAAC,sCAAA,EAAU,+BAAA,EAAa,4CAAS,CAAA;AAAA,QACrC,EAAA,EAAI,CAAC,oDAAA,EAAc,2BAAA,EAAc,0DAAa;AAAA;AAChD,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,OAAA,EAAS;AAAA,MAC3B,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,kCAAA;AAAA,QACJ,EAAA,EAAI,kGAAA;AAAA,QACJ,EAAA,EAAI,wDAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAI,CAAC,MAAA,EAAQ,SAAS,QAAA,EAAU,eAAA,EAAiB,SAAS,UAAU,CAAA;AAAA,QACpE,IAAI,CAAC,oBAAA,EAAO,sBAAO,gCAAA,EAAS,sCAAA,EAAU,sBAAO,0BAAM,CAAA;AAAA,QACnD,IAAI,CAAC,cAAA,EAAM,gBAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACvC,IAAI,CAAC,oBAAA,EAAO,sBAAO,oBAAA,EAAO,cAAA,EAAM,sBAAO,cAAI;AAAA,OAC7C;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,WAAA,EAAa,eAAA,EAAiB,YAAY,CAAA;AAAA,QAC/C,EAAA,EAAI,CAAC,sCAAA,EAAU,sCAAA,EAAU,oBAAK,CAAA;AAAA,QAC9B,EAAA,EAAI,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAA;AAAA,QAC3B,EAAA,EAAI,CAAC,iCAAA,EAAU,2BAAA,EAAS,2BAAO;AAAA;AACjC,KACD,CAAA;AAED,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,OAAA,EAAS;AAAA,MAC3B,OAAA,EAAS,OAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI,cAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,kDAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAS,KAAA,EAAO,KAAA,EAAO,WAAW,MAAM,CAAA;AAAA,QAC7D,IAAI,CAAC,cAAA,EAAM,gBAAM,oBAAA,EAAO,0BAAA,EAAQ,kCAAS,oBAAK,CAAA;AAAA,QAC9C,IAAI,CAAC,cAAA,EAAM,cAAA,EAAM,cAAA,EAAM,gBAAM,cAAI,CAAA;AAAA,QACjC,IAAI,CAAC,cAAA,EAAM,oBAAA,EAAO,cAAA,EAAM,UAAK,cAAI;AAAA,OACnC;AAAA,MACA,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,CAAC,cAAA,EAAgB,UAAA,EAAY,SAAS,CAAA;AAAA,QAC1C,EAAA,EAAI,CAAC,4CAAA,EAAW,4CAAA,EAAW,gCAAO,CAAA;AAAA,QAClC,EAAA,EAAI,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,cAAI,CAAA;AAAA,QACzB,EAAA,EAAI,CAAC,2BAAA,EAAS,qBAAA,EAAQ,cAAI;AAAA;AAC5B,KACD,CAAA;AAAA,EAGH;AACF,CAAA;;;ACrYO,IAAM,mBAAN,MAAuB;AAAA,EACpB,gBAAA;AAAA,EACA,eAAA;AAAA,EAER,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,gBAAA,uBAAuB,GAAA,EAAI;AAChC,IAAA,IAAA,CAAK,eAAA,uBAAsB,GAAA,EAAI;AAC/B,IAAA,IAAA,CAAK,kBAAA,EAAmB;AAAA,EAC1B;AAAA,EAEA,MAAM,OAAO,IAAA,EAA0C;AACrD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,IAAI,CAAA;AAGxC,IAAA,MAAA,CAAO,KAAK,CAACN,EAAAA,EAAG,MAAM,CAAA,CAAE,KAAA,GAAQA,GAAE,KAAK,CAAA;AAGvC,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,EAAG,KAAA,IAAS,MAAA,CAAO,CAAC,CAAA,CAAE,KAAA,GAAQ,CAAA,EAAG;AAChE,MAAA,OAAO,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA;AAAA,IACnB;AAGA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,gBAAgB,IAAA,EAA+B;AACrD,IAAA,MAAM,MAAA,GAA0B;AAAA,MAC9B,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AAAA,MAC3B,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AAAA,MAC3B,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AAAA,MAC3B,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA,EAAE;AAAA,MAC3B,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA;AAAE,KAC7B;AAGA,IAAA,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,CAACI,SAAAA,EAAU,QAAA,KAAa;AACnD,MAAAA,SAAAA,CAAS,OAAA,CAAQ,CAACL,QAAAA,KAAY;AAC5B,QAAA,MAAMY,QAAAA,GAAU,IAAA,CAAK,KAAA,CAAMZ,QAAO,CAAA;AAClC,QAAA,IAAIY,QAAAA,EAAS;AACX,UAAA,MAAM,QAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,QAAQ,CAAA;AACxD,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,KAAA,CAAM,KAAA,IAASA,SAAQ,MAAA,GAAS,CAAA;AAAA,UAClC;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,gBAAA,CAAiB,OAAA,CAAQ,CAACP,SAAAA,EAAU,QAAA,KAAa;AACpD,MAAAA,SAAAA,CAAS,OAAA,CAAQ,CAACL,QAAAA,KAAY;AAC5B,QAAA,IAAIA,QAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACtB,UAAA,MAAM,QAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,QAAQ,CAAA;AACxD,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,KAAA,CAAM,KAAA,IAAS,CAAA;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAGD,IAAA,MAAM,YAAA,GACJ,oIAAA;AACF,IAAA,IAAI,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,EAAG;AAC3B,MAAA,MAAM,eAAe,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,IAAI,CAAA;AAC3D,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,YAAA,CAAa,KAAA,IAAS,CAAA;AAAA,MACxB;AAAA,IACF;AAGA,IAAA,MAAM,aAAa,IAAA,CAAK,MAAA;AACxB,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAU;AACxB,MAAA,IAAI,aAAa,CAAA,EAAG;AAClB,QAAA,KAAA,CAAM,KAAA,GAAS,KAAA,CAAM,KAAA,GAAQ,UAAA,GAAc,GAAA;AAAA,MAC7C;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,kBAAA,GAA2B;AAEjC,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,IAAA,EAAM;AAAA,MAC7B,kBAAA;AAAA;AAAA,MACA,kBAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,EAAM;AAAA,MAC9B,OAAA;AAAA;AAAA,MACA,OAAA;AAAA;AAAA,MACA,eAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,IAAA,EAAM;AAAA,MAC7B;AAAA;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,EAAM;AAAA,MAC9B,yBAAA;AAAA;AAAA,MACA,eAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,IAAA,EAAM;AAAA,MAC7B,kBAAA;AAAA;AAAA,MACA,kBAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,EAAM;AAAA,MAC9B,OAAA;AAAA;AAAA,MACA,aAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,IAAA,EAAM;AAAA,MAC7B;AAAA;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,EAAM;AAAA,MAC9B,uEAAA;AAAA;AAAA,MACA,wCAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACD,CAAA;AAGD,IAAA,IAAA,CAAK,eAAA,CAAgB,IAAI,IAAA,EAAM;AAAA,MAC7B;AAAA;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,EAAM;AAAA,MAC9B,6EAAA;AAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,gBAAgBW,KAAAA,EAAiC;AAC/C,IAAA,MAAM,KAAA,GAA2C;AAAA,MAC/C,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AACA,IAAA,OAAO,KAAA,CAAMA,KAAI,CAAA,IAAK,SAAA;AAAA,EACxB;AAAA,EAEA,YAAY,YAAA,EAAyD;AACnE,IAAA,OAAO,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA,CAAE,SAAS,YAAY,CAAA;AAAA,EAC7D;AACF,CAAA;;;AC1JO,IAAM,kBAAN,MAAsB;AAAA,EACnB,QAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA,GAAuB,KAAA;AAAA,EAE/B,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,WAAW,EAAC;AACjB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,sBAAA,EAAuB;AAAA,EAC/C;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,WAAA,EAAa;AAAC,MAAA;AAAA,IAAO;AAE9B,IAAA,MAAM,IAAA,CAAK,WAAW,UAAA,EAAW;AACjC,IAAA,IAAA,CAAK,YAAA,EAAa;AAClB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA,EAEA,MAAM,cAAA,CAAe,MAAA,EAAgB,QAAA,EAAkB,aAAqB,CAAA,EAAsB;AAChG,IAAA,MAAM,WAAA,GAAc,MAAM,WAAA,EAAY;AACtC,IAAA,MAAM,cAAyD,EAAC;AAEhE,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,MAAA,MAAM,QAAA,GACJ,OAAA,CAAQ,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,IAAK,OAAA,CAAQ,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC;AAC/E,MAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,MAAA,KAAA,MAAWE,WAAU,QAAA,EAAU;AAC7B,QAAA,IAAIA,OAAAA,CAAO,WAAA,EAAY,CAAE,QAAA,CAAS,WAAW,CAAA,EAAG;AAC9C,UAAA,KAAA,IAAS,CAAA;AAAA,QACX;AACA,QAAA,IAAIA,OAAAA,CAAO,WAAA,EAAY,CAAE,UAAA,CAAW,WAAW,CAAA,EAAG;AAChD,UAAA,KAAA,IAAS,CAAA;AAAA,QACX;AAAA,MACF;AAGA,MAAA,IAAI,QAAQ,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,CAAS,WAAW,CAAA,EAAG;AACvD,QAAA,KAAA,IAAS,CAAA;AAAA,MACX;AAEA,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,WAAA,CAAY,IAAA,CAAK,EAAE,OAAA,EAAS,OAAA,CAAQ,SAAS,KAAA,EAAO,KAAA,GAAQ,OAAA,CAAQ,QAAA,EAAU,CAAA;AAAA,MAChF;AAAA,IACF;AAGA,IAAA,OAAO,YACJ,IAAA,CAAK,CAACZ,IAAG,CAAA,KAAM,CAAA,CAAE,QAAQA,EAAAA,CAAE,KAAK,CAAA,CAChC,KAAA,CAAM,GAAG,UAAU,CAAA,CACnB,IAAI,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AAAA,EACzB;AAAA,EAEA,mBAAA,CAAoB,SAAiB,QAAA,EAAiC;AACpE,IAAqB,OAAO,WAAA;AAE5B,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,MAAA,MAAM,QAAA,GACJ,OAAA,CAAQ,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA,IAAK,OAAA,CAAQ,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC;AAE/E,MAAA,KAAA,MAAW,iBAAiB,QAAA,EAAU;AACpC,QAAA,IAAI,WAAA,CAAY,QAAA,CAAS,aAAA,CAAc,WAAA,EAAa,CAAA,EAAG;AACrD,UAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,YAAA,GAAqB;AAE3B,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB;AAAA,UACE,IAAA;AAAA,UACA,CAAC,YAAA,EAAc,aAAA,EAAe,eAAA,EAAiB,WAAA,EAAa,kBAAkB,SAAS;AAAA,SACzF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA,CAAC,4CAAA,EAAW,0BAAA,EAAQ,wDAAA,EAAa,wCAAU,sCAAQ;AAAA,SACrD;AAAA,QACA,CAAC,MAAM,CAAC,oBAAA,EAAO,4BAAQ,cAAA,EAAM,0BAAA,EAAQ,oBAAK,CAAC,CAAA;AAAA,QAC3C,CAAC,IAAA,EAAM,CAAC,6BAAS,0BAAA,EAAQ,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QAC5C,CAAC,IAAA,EAAM,CAAC,mBAAW,eAAA,EAAY,yBAAA,EAAgB,oBAAY,CAAC;AAAA,OAC7D,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,MAAM,CAAC,YAAA,EAAc,eAAe,eAAA,EAAiB,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,QAC/E,CAAC,IAAA,EAAM,CAAC,8CAAW,gCAAA,EAAS,4CAAA,EAAW,gCAAO,CAAC,CAAA;AAAA,QAC/C,CAAC,IAAA,EAAM,CAAC,sBAAO,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACtC,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QACrC,CAAC,IAAA,EAAM,CAAC,yBAAA,EAAiB,eAAA,EAAY,qCAAiB,CAAC;AAAA,OACxD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,MAAM,CAAC,aAAA,EAAe,cAAc,SAAA,EAAW,SAAA,EAAW,UAAU,CAAC,CAAA;AAAA,QACtE,CAAC,IAAA,EAAM,CAAC,8CAAW,0BAAA,EAAQ,0BAAA,EAAQ,kDAAU,CAAC,CAAA;AAAA,QAC9C,CAAC,IAAA,EAAM,CAAC,4BAAQ,0BAAA,EAAQ,cAAA,EAAM,cAAI,CAAC,CAAA;AAAA,QACnC,CAAC,IAAA,EAAM,CAAC,6BAAS,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACxC,CAAC,IAAA,EAAM,CAAC,oBAAc,oBAAA,EAAiB,qBAAA,EAAa,yBAAc,CAAC;AAAA,OACpE,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,MAAM,CAAC,cAAA,EAAgB,gBAAgB,cAAA,EAAgB,SAAA,EAAW,YAAY,CAAC,CAAA;AAAA,QAChF,CAAC,IAAA,EAAM,CAAC,8CAAW,gCAAA,EAAS,uBAAA,EAAU,0BAAW,CAAC,CAAA;AAAA,QAClD,CAAC,IAAA,EAAM,CAAC,4BAAQ,0BAAA,EAAQ,iBAAA,EAAS,oBAAU,CAAC,CAAA;AAAA,QAC5C,CAAC,IAAA,EAAM,CAAC,6BAAS,2BAAA,EAAS,kBAAA,EAAU,qBAAW,CAAC,CAAA;AAAA,QAChD,CAAC,IAAA,EAAM,CAAC,6BAAkB,qBAAA,EAAa,aAAA,EAAY,gBAAa,CAAC;AAAA,OAClE,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB;AAAA,UACE,IAAA;AAAA,UACA,CAAC,cAAA,EAAgB,gBAAA,EAAkB,cAAA,EAAgB,qBAAqB,gBAAgB;AAAA,SAC1F;AAAA,QACA,CAAC,IAAA,EAAM,CAAC,kCAAS,kDAAA,EAAY,gCAAA,EAAS,4CAAS,CAAC,CAAA;AAAA,QAChD,CAAC,IAAA,EAAM,CAAC,4BAAQ,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACvC,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,iCAAA,EAAU,6CAAU,CAAC,CAAA;AAAA,QACvC,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAgB,eAAA,EAAY,sBAAc,CAAC;AAAA,OACpD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,gBAAgB,gBAAA,EAAkB,gBAAA,EAAkB,eAAe,CAAC,CAAA;AAAA,QAC5E,CAAC,IAAA,EAAM,CAAC,sCAAA,EAAU,sCAAA,EAAU,8DAAY,CAAC,CAAA;AAAA,QACzC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,uCAAA,EAAW,6CAAU,CAAC,CAAA;AAAA,QACxC,CAAC,IAAA,EAAM,CAAC,gBAAA,EAAa,0BAAA,EAAiB,yBAAe,CAAC;AAAA,OACvD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,aAAA,EAAe,mBAAA,EAAqB,WAAW,CAAC,CAAA;AAAA,QACxD,CAAC,IAAA,EAAM,CAAC,sCAAA,EAAU,wDAAA,EAAa,4CAAS,CAAC,CAAA;AAAA,QACzC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,mBAAS,CAAC,CAAA;AAAA,QAClC,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QAC3B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAmB,sBAAc,CAAC;AAAA,OAC3C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,YAAA,EAAc,eAAA,EAAiB,OAAO,CAAC,CAAA;AAAA,QAC/C,CAAC,IAAA,EAAM,CAAC,gCAAA,EAAS,sCAAA,EAAU,oBAAK,CAAC,CAAA;AAAA,QACjC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,cAAI,CAAC,CAAA;AAAA,QAC7B,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,2BAAO,CAAC,CAAA;AAAA,QACxB,CAAC,IAAA,EAAM,CAAC,oBAAA,EAAc,6BAAgB,CAAC;AAAA,OACxC,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,cAAA,EAAgB,eAAA,EAAiB,WAAW,CAAC,CAAA;AAAA,QACrD,CAAC,IAAA,EAAM,CAAC,sCAAA,EAAU,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACjC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,cAAI,CAAC,CAAA;AAAA,QAC7B,CAAC,IAAA,EAAM,CAAC,cAAA,EAAM,2BAAA,EAAS,2BAAO,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,qBAAA,EAAa,wCAAiB,CAAC;AAAA,OACxC,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,WAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,eAAA,EAAiB,qBAAA,EAAuB,aAAa,CAAC,CAAA;AAAA,QAC9D,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,gCAAA,EAAS,4CAAS,CAAC,CAAA;AAAA,QACnC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAS,2BAAO,CAAC,CAAA;AAAA,QACzB,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAe,gCAAmB,CAAC;AAAA,OAC5C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,WAAA,EAAa,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AAAA,QACxD,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,4CAAS,CAAC,CAAA;AAAA,QAClC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAS,uCAAS,CAAC,CAAA;AAAA,QAC3B,CAAC,IAAA,EAAM,CAAC,kCAAA,EAAoB,yCAAkB,CAAC;AAAA,OAChD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,oBAAA,EAAsB,mBAAA,EAAqB,gBAAgB,CAAC,CAAA;AAAA,QACpE,CAAC,IAAA,EAAM,CAAC,wDAAA,EAAa,kDAAA,EAAY,kDAAU,CAAC,CAAA;AAAA,QAC5C,CAAC,IAAA,EAAM,CAAC,gCAAA,EAAS,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAChC,CAAC,IAAA,EAAM,CAAC,6CAAA,EAAY,iCAAQ,CAAC,CAAA;AAAA,QAC7B,CAAC,IAAA,EAAM,CAAC,kCAAA,EAAkB,iCAAe,CAAC;AAAA,OAC3C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,UAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,eAAA,EAAiB,gBAAA,EAAkB,UAAU,CAAC,CAAA;AAAA,QACtD,CAAC,IAAA,EAAM,CAAC,kDAAA,EAAY,sCAAA,EAAU,0BAAM,CAAC,CAAA;AAAA,QACrC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,gCAAA,EAAS,0BAAM,CAAC,CAAA;AAAA,QAChC,CAAC,IAAA,EAAM,CAAC,uCAAA,EAAW,2BAAO,CAAC,CAAA;AAAA,QAC3B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAgB,uCAAgB,CAAC;AAAA,OAC1C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,eAAA,EAAiB,eAAA,EAAiB,cAAc,CAAC,CAAA;AAAA,QACzD,CAAC,IAAA,EAAM,CAAC,gCAAA,EAAS,sCAAA,EAAU,kDAAU,CAAC,CAAA;AAAA,QACtC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,gCAAO,CAAC,CAAA;AAAA,QAChC,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QAC3B,CAAC,IAAA,EAAM,CAAC,kCAAA,EAAkB,gCAAc,CAAC;AAAA,OAC1C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,aAAA,EAAe,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAAA,QACzD,CAAC,IAAA,EAAM,CAAC,wDAAA,EAAa,0BAAA,EAAQ,kDAAU,CAAC,CAAA;AAAA,QACxC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,6CAAA,EAAY,2BAAO,CAAC,CAAA;AAAA,QAC5B,CAAC,IAAA,EAAM,CAAC,6BAAA,EAAgB,4BAAa,CAAC;AAAA,OACvC,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB;AAAA,UACE,IAAA;AAAA,UACA;AAAA;AAAA,YAEE,WAAA;AAAA,YAAa,SAAA;AAAA,YAAW,WAAA;AAAA,YAAa,eAAA;AAAA,YAAiB,mBAAA;AAAA,YACtD,cAAA;AAAA,YAAgB,eAAA;AAAA,YAAiB,YAAA;AAAA,YAAc,SAAA;AAAA,YAAW,WAAA;AAAA;AAAA,YAG1D,aAAA;AAAA,YAAe,cAAA;AAAA,YAAgB,gBAAA;AAAA,YAAkB,gBAAA;AAAA,YACjD,aAAA;AAAA,YAAe,aAAA;AAAA,YAAe,gBAAA;AAAA;AAAA,YAG9B,iBAAA;AAAA,YAAmB,UAAA;AAAA,YAAY,WAAA;AAAA,YAAa,oBAAA;AAAA,YAC5C,eAAA;AAAA,YAAiB,aAAA;AAAA,YAAe,eAAA;AAAA,YAAiB,aAAA;AAAA,YACjD,gBAAA;AAAA,YAAkB,cAAA;AAAA,YAAgB,cAAA;AAAA;AAAA,YAGlC,8BAAA;AAAA,YAAgC,gBAAA;AAAA,YAAkB,oBAAA;AAAA,YAClD,iBAAA;AAAA,YAAmB,iBAAA;AAAA,YAAmB,qBAAA;AAAA,YACtC,eAAA;AAAA,YAAiB,gBAAA;AAAA,YAAkB;AAAA;AACrC,SACF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA;AAAA;AAAA,YAEE,0BAAA;AAAA,YAAQ,4CAAA;AAAA,YAAW,gCAAA;AAAA,YAAS,gCAAA;AAAA,YAAS,sCAAA;AAAA;AAAA,YAGrC,kDAAA;AAAA,YAAY,kDAAA;AAAA,YAAY,gCAAA;AAAA,YAAS,gCAAA;AAAA,YACjC,wDAAA;AAAA,YAAa,wDAAA;AAAA;AAAA,YAGb,8DAAA;AAAA,YAAc,kDAAA;AAAA,YAAY,4CAAA;AAAA,YAC1B,4CAAA;AAAA,YAAW,sCAAA;AAAA,YAAU,kDAAA;AAAA;AAAA,YAGrB,sCAAA;AAAA,YAAU,gCAAA;AAAA,YAAS,gCAAA;AAAA,YAAS,kDAAA;AAAA,YAC5B,wDAAA;AAAA,YAAa,gCAAA;AAAA,YAAS,0BAAA;AAAA;AAAA,YAGtB,oBAAA;AAAA,YAAO,gCAAA;AAAA,YAAS,sCAAA;AAAA,YAAU,oBAAA;AAAA,YAC1B,kDAAA;AAAA,YAAY,gCAAA;AAAA,YAAS;AAAA;AACvB,SACF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA;AAAA,YACE,cAAA;AAAA,YAAM,cAAA;AAAA,YAAM,0BAAA;AAAA,YAAQ,gCAAA;AAAA,YAAS,0BAAA;AAAA,YAC7B,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ,cAAA;AAAA,YAAM,cAAA;AAAA,YAC9B,oBAAA;AAAA,YAAO,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ,cAAA;AAAA,YAAM,gCAAA;AAAA,YAC7B,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ;AAAA;AAC1B,SACF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA;AAAA,YACE,0BAAA;AAAA,YAAQ,oBAAA;AAAA,YAAO,iCAAA;AAAA,YAAU,2BAAA;AAAA,YAAS,2BAAA;AAAA,YAClC,2BAAA;AAAA,YAAS,2BAAA;AAAA,YAAS,2BAAA;AAAA,YAAS,uCAAA;AAAA,YAC3B,2BAAA;AAAA,YAAS,0BAAA;AAAA,YAAQ,0BAAA;AAAA,YAAQ;AAAA;AAC3B,SACF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA;AAAA,YACE,iBAAA;AAAA,YAAW,mBAAA;AAAA,YAAW,sBAAA;AAAA,YAAgB,gBAAA;AAAA,YAAU,4BAAA;AAAA,YAChD,iBAAA;AAAA,YAAgB,eAAA;AAAA,YAAY,gBAAA;AAAA,YAAa,mBAAA;AAAA,YAAW;AAAA;AACtD;AACF,OACD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB;AAAA,UACE,IAAA;AAAA,UACA;AAAA,YACE,mBAAA;AAAA,YAAqB,gBAAA;AAAA,YAAkB,cAAA;AAAA,YACvC,2BAAA;AAAA,YAA6B,eAAA;AAAA,YAAiB,oBAAA;AAAA,YAC9C,SAAA;AAAA,YAAW,oBAAA;AAAA,YAAsB;AAAA;AACnC,SACF;AAAA,QACA;AAAA,UACE,IAAA;AAAA,UACA;AAAA,YACE,wDAAA;AAAA,YAAa,4CAAA;AAAA,YAAW,gCAAA;AAAA,YACxB,kDAAA;AAAA,YAAY,wDAAA;AAAA,YAAa;AAAA;AAC3B,SACF;AAAA,QACA,CAAC,IAAA,EAAM,CAAC,kCAAS,sCAAA,EAAU,gCAAA,EAAS,4CAAS,CAAC,CAAA;AAAA,QAC9C,CAAC,IAAA,EAAM,CAAC,6CAAA,EAAY,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QACvC,CAAC,IAAA,EAAM,CAAC,mCAAA,EAAmB,iDAAA,EAAqB,iDAAuB,CAAC;AAAA,OACzE,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,eAAA,EAAiB,aAAA,EAAe,aAAa,CAAC,CAAA;AAAA,QACtD,CAAC,IAAA,EAAM,CAAC,kDAAA,EAAY,kDAAA,EAAY,kDAAU,CAAC,CAAA;AAAA,QAC3C,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,uCAAA,EAAW,uCAAS,CAAC,CAAA;AAAA,QAC7B,CAAC,IAAA,EAAM,CAAC,uBAAA,EAAiB,0BAAgB,CAAC;AAAA,OAC3C,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,aAAA,EAAe,eAAA,EAAiB,cAAc,CAAC,CAAA;AAAA,QACvD,CAAC,IAAA,EAAM,CAAC,4CAAA,EAAW,sCAAA,EAAU,0BAAM,CAAC,CAAA;AAAA,QACpC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAS,iCAAQ,CAAC,CAAA;AAAA,QAC1B,CAAC,IAAA,EAAM,CAAC,uCAAA,EAAuB,uCAAqB,CAAC;AAAA,OACtD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,SAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,cAAA,EAAgB,eAAA,EAAiB,aAAa,CAAC,CAAA;AAAA,QACvD,CAAC,IAAA,EAAM,CAAC,4CAAA,EAAW,sCAAA,EAAU,gCAAO,CAAC,CAAA;AAAA,QACrC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,2BAAA,EAAS,iCAAQ,CAAC,CAAA;AAAA,QAC1B,CAAC,IAAA,EAAM,CAAC,kCAAA,EAAqB,2CAAoB,CAAC;AAAA,OACnD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,cAAA,EAAgB,YAAA,EAAc,eAAe,CAAC,CAAA;AAAA,QACtD,CAAC,IAAA,EAAM,CAAC,gCAAA,EAAS,4CAAA,EAAW,sCAAQ,CAAC,CAAA;AAAA,QACrC,CAAC,IAAA,EAAM,CAAC,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,iCAAQ,CAAC,CAAA;AAAA,QAC3B,CAAC,IAAA,EAAM,CAAC,uBAAA,EAAgB,aAAU,CAAC;AAAA,OACpC,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,aAAa,SAAA,EAAW,eAAA,EAAiB,YAAY,CAAC,CAAA;AAAA,QAC9D,CAAC,IAAA,EAAM,CAAC,kCAAS,oBAAA,EAAO,sCAAA,EAAU,oBAAK,CAAC,CAAA;AAAA,QACxC,CAAC,IAAA,EAAM,CAAC,4BAAQ,oBAAA,EAAO,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACtC,CAAC,IAAA,EAAM,CAAC,iCAAA,EAAU,oBAAA,EAAO,2BAAO,CAAC,CAAA;AAAA,QACjC,CAAC,IAAA,EAAM,CAAC,qCAAA,EAAqB,gBAAA,EAAY,wBAAgB,CAAC;AAAA,OAC3D,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,MAAM,CAAC,MAAA,EAAQ,QAAQ,SAAA,EAAW,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,QAClD,CAAC,MAAM,CAAC,cAAA,EAAM,gBAAM,gCAAA,EAAS,0BAAA,EAAQ,oBAAK,CAAC,CAAA;AAAA,QAC3C,CAAC,IAAA,EAAM,CAAC,gBAAM,cAAA,EAAM,cAAA,EAAM,cAAI,CAAC,CAAA;AAAA,QAC/B,CAAC,IAAA,EAAM,CAAC,gBAAM,oBAAA,EAAO,cAAA,EAAM,cAAI,CAAC,CAAA;AAAA,QAChC,CAAC,IAAA,EAAM,CAAC,YAAS,kBAAA,EAAY,oBAAA,EAAY,cAAM,CAAC;AAAA,OACjD,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,MACjB,OAAA,EAAS,OAAA;AAAA,MACT,cAAA,sBAAoB,GAAA,CAAI;AAAA,QACtB,CAAC,IAAA,EAAM,CAAC,mBAAmB,iBAAA,EAAmB,cAAA,EAAgB,mBAAmB,CAAC,CAAA;AAAA,QAClF,CAAC,IAAA,EAAM,CAAC,4BAAQ,sCAAA,EAAU,0BAAA,EAAQ,sCAAQ,CAAC,CAAA;AAAA,QAC3C,CAAC,IAAA,EAAM,CAAC,4BAAQ,0BAAA,EAAQ,0BAAA,EAAQ,0BAAM,CAAC,CAAA;AAAA,QACvC,CAAC,IAAA,EAAM,CAAC,6BAAS,2BAAA,EAAS,2BAAA,EAAS,uCAAS,CAAC,CAAA;AAAA,QAC7C,CAAC,IAAA,EAAM,CAAC,kCAAgB,8BAAA,EAAmB,uCAAA,EAAoB,yCAAqB,CAAC;AAAA,OACtF,CAAA;AAAA,MACD,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACF,CAAA;;;AC3cO,IAAM,sBAAN,MAA0B;AAAA,EACvB,WAA0B,EAAC;AAAA,EAC3B,WAAA,GAAuB,KAAA;AAAA,EAE/B,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,WAAA,EAAa;AAAC,MAAA;AAAA,IAAO;AAG9B,IAAA,IAAA,CAAK,YAAA,EAAa;AAClB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACrB;AAAA,EAEA,MAAM,aAAA,CAAc,MAAA,EAAgB,MAAA,EAAsC;AACxE,IAAA,MAAM,QAAA,GAAwB;AAAA,MAC5B,KAAA;AAAA,MACA,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB,OAAA,EAAS;AAAA;AAAA,KACX;AAEA,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,QAAQ,CAAA;AAG3B,IAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,GAAS,GAAA,EAAM;AAC/B,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAK,CAAA;AAAA,IAC3C;AAEA,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB;AAAA,EAEA,MAAM,cAAA,CAAe,MAAA,EAAgB,cAAA,EAAwB,UAAA,EAAoC;AAE/F,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,CACnB,KAAA,EAAM,CACN,OAAA,EAAQ,CACR,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,KAAK,CAAA;AAEhC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAA,CAAQ,OAAA,GAAU,UAAA;AAClB,MAAA,IAAI,CAAC,UAAA,EAAY;AAEf,QAAA,IAAA,CAAK,SAAS,IAAA,CAAK;AAAA,UACjB,KAAA;AAAA,UACA,OAAA,EAAS,cAAA;AAAA,UACT,UAAA,EAAY,CAAA;AAAA,UACZ,SAAA,sBAAe,IAAA,EAAK;AAAA,UACpB,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB;AAAA,EAEA,eAAA,GAA0C;AACxC,IAAA,MAAMa,SAAgC,EAAC;AAEvC,IAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,QAAA,KAAa;AAClC,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAAA,MAAAA,CAAM,QAAQ,OAAO,CAAA,GAAA,CAAKA,OAAM,OAAA,CAAQ,OAAO,KAAK,CAAA,IAAK,CAAA;AAAA,MAC3D;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAOA,MAAAA;AAAA,EACT;AAAA,EAEA,qBAAqBf,MAAAA,EAA8B;AACjD,IAAyB,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM;AACnD,MAAA,OAAO,EAAE,OAAA,IAAW,IAAA,CAAK,oBAAoB,CAAA,CAAE,KAAA,EAAOA,MAAK,CAAA,GAAI,GAAA;AAAA,IACjE,CAAC;AAED,IAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAAC,MAAA,OAAO,IAAA;AAAA,IAAK;AAI/C,IAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC7B,MAAA,aAAA,CAAc,GAAA,CAAI,EAAE,OAAA,EAAA,CAAU,aAAA,CAAc,IAAI,CAAA,CAAE,OAAO,CAAA,IAAK,CAAA,IAAK,CAAC,CAAA;AAAA,IACtE,CAAC,CAAA;AAGD,IAAA,IAAI,QAAA,GAAW,CAAA;AACf,IAAA,IAAI,UAAA,GAA4B,IAAA;AAEhC,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,KAAA,EAAOI,QAAAA,KAAY;AACxC,MAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,UAAA,GAAaA,QAAAA;AAAA,MACf;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,UAAA;AAAA,EACT;AAAA,EAEQ,mBAAA,CAAoB,OAAe,IAAA,EAAsB;AAC/D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,SAAS,IAAA,GAAO,IAAA;AACnD,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,SAAS,IAAA,GAAO,IAAA;AAEpD,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AAAC,MAAA,OAAO,CAAA;AAAA,IAAI;AAErC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,mBAAA,CAAoB,OAAA,EAAS,QAAQ,CAAA;AAC5D,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAA,GAAS,SAAA,IAAa,MAAA,CAAO,MAAA;AAAA,EAC9C;AAAA,EAEQ,mBAAA,CAAoB,OAAe,IAAA,EAAsB;AAC/D,IAAA,MAAM,SAAqB,EAAC;AAE5B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAA,CAAO,CAAC,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA;AAAA,IACjB;AAEA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAI,IAAA,CAAK,OAAO,CAAA,GAAI,CAAC,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,EAAG;AAC7C,UAAA,MAAA,CAAO,CAAC,EAAE,CAAC,CAAA,GAAI,OAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA;AAAA,QACpC,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA;AAAA,YAClB,OAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,YACvB,MAAA,CAAO,CAAC,CAAA,CAAE,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,YACnB,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI;AAAA,WACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,KAAK,MAAM,CAAA;AAAA,EACxC;AAAA,EAEA,MAAM,UAAA,GAA+B;AACnC,IAAA,OAAO;AAAA,MACL,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,KAAA,EAAO,KAAK,eAAA;AAAgB,KAC9B;AAAA,EACF;AAAA,EAEA,MAAM,WAAWY,KAAAA,EAA8B;AAC7C,IAAA,IAAI,OAAOA,KAAAA,KAAS,QAAA,IAAYA,KAAAA,KAAS,IAAA,IAAQ,cAAcA,KAAAA,EAAM;AAEnE,MAAA,IAAA,CAAK,WAAW,QAAA,CAAS,QAAA;AACzB,MAAA,IAAA,CAAK,YAAA,EAAa;AAAA,IACpB;AAAA,EACF;AAAA,EAEQ,YAAA,GAAqB;AAG3B,IAAA,IAAA,CAAK,WAAW,EAAC;AAAA,EACnB;AAAA,EAEQ,YAAA,GAAqB;AAAA,EAG7B;AACF,CAAA;ACpJO,IAAM,wBAAA,GAAN,cAAuC,YAAA,CAAa;AAAA,EACjD,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,mBAAA;AAAA,EAEA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA,GAAyB,KAAA;AAAA,EAEjC,WAAA,CAAY,OAAA,GAAwB,EAAC,EAAG;AACtC,IAAA,KAAA,EAAM;AAEN,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACZ,mBAAA,EAAqB,QAAQ,mBAAA,IAAuB,IAAA;AAAA,MACpD,cAAA,EAAgB,QAAQ,cAAA,IAAkB,IAAA;AAAA,MAC1C,kBAAA,EAAoB,QAAQ,kBAAA,IAAsB,CAAC,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAAA,MAC/E,kBAAA,EAAoB,QAAQ,kBAAA,IAAsB,IAAA;AAAA,MAClD,eAAA,EAAiB,QAAQ,eAAA,IAAmB;AAAA,KAC9C;AAEA,IAAA,IAAA,CAAK,OAAA,GAAU;AAAA,MACb,aAAA,EAAe,CAAA;AAAA,MACf,gBAAA,EAAkB,CAAA;AAAA,MAClB,YAAA,EAAc,CAAA;AAAA,MACd,iBAAA,EAAmB,CAAA;AAAA,MACnB,mBAAA,EAAqB,CAAA;AAAA,MACrB,iBAAA,sBAAuB,GAAA;AAAI,KAC7B;AAEA,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,wBAAA,EAAyB;AACjD,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAI,gBAAA,CAAiB,IAAA,CAAK,MAAM,CAAA;AACxD,IAAA,IAAA,CAAK,kBAAA,GAAqB,IAAI,kBAAA,EAAmB;AACjD,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,sBAAA,EAAuB;AAC7C,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAI,gBAAA,EAAiB;AAC7C,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC3C,IAAA,IAAA,CAAK,mBAAA,GAAsB,IAAI,mBAAA,EAAoB;AAAA,EACrD;AAAA,EAEA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI,KAAK,aAAA,EAAe;AAAC,MAAA;AAAA,IAAO;AAEhC,IAAA,IAAI;AAIF,MAAA,MAAM,QAAQ,GAAA,CAAI;AAAA,QAChB,IAAA,CAAK,WAAW,UAAA,EAAW;AAAA,QAC3B,IAAA,CAAK,gBAAgB,UAAA,EAAW;AAAA,QAChC,IAAA,CAAK,aAAa,UAAA,EAAW;AAAA,QAC7B,IAAA,CAAK,iBAAiB,UAAA,EAAW;AAAA,QACjC,IAAA,CAAK,oBAAoB,UAAA;AAAW,OACrC,CAAA;AAED,MAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AACrB,MAAA,IAAA,CAAK,KAAK,aAAa,CAAA;AAAA,IAGzB,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAMC,MAAA,CAAM,GAAA,CAAI,0CAA0C,GAAG,MAAM,CAAA;AAC3E,MAAA,MAAM,MAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,MAAMjB,MAAAA,EAA8C;AACxD,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AACvB,MAAA,MAAM,KAAK,UAAA,EAAW;AAAA,IACxB;AAEA,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAC5B,IAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,EAAA;AAEb,IAAA,IAAI;AAEF,MAAA,MAAMQ,UAAAA,GAAY,MAAM,IAAA,CAAK,gBAAA,CAAiB,OAAOR,MAAK,CAAA;AAE1D,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,kBAAA,CAAmB,QAAA,CAASQ,UAAS,CAAA,EAAG;AAAA,MAGzD;AAGA,MAAA,MAAM,iBAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,OAAA,CAAQR,QAAOQ,UAAS,CAAA;AAGvE,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,gBAAA,CAAiB,UAAU,cAAc,CAAA;AAEnE,MAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,UAAA,GAAa,IAAA,CAAK,OAAO,mBAAA,EAAqB;AAClE,QAAA,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAA;AACb,QAAA,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,EAAE,KAAA,EAAAR,MAAAA,EAAO,SAAA,EAAAQ,UAAAA,EAAW,UAAA,EAAY,MAAA,EAAQ,UAAA,IAAc,CAAA,EAAG,CAAA;AACnF,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,kBAAA,CAAmB,QAAQR,MAAAA,EAAO,MAAA,CAAO,SAASQ,UAAS,CAAA;AAG1F,MAAA,MAAM,aAAA,GAA+B;AAAA,QACnC,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,YAAY,MAAA,CAAO,UAAA;AAAA,QACnB,WAAA;AAAA,QACA,aAAA,EAAeR,MAAAA;AAAA,QACf,SAAA,EAAAQ,UAAAA;AAAA,QACA,cAAc,MAAA,CAAO;AAAA,OACvB;AAGA,MAAA,IAAI,IAAA,CAAK,OAAO,cAAA,EAAgB;AAC9B,QAAA,MAAM,IAAA,CAAK,mBAAA,CAAoB,aAAA,CAAcR,MAAAA,EAAO,aAAa,CAAA;AAAA,MACnE;AAGA,MAAA,IAAA,CAAK,OAAA,CAAQ,gBAAA,EAAA;AACb,MAAA,IAAA,CAAK,aAAA,CAAc,OAAO,UAAA,EAAY,IAAA,CAAK,KAAI,GAAI,UAAA,EAAY,OAAO,OAAO,CAAA;AAE7E,MAAA,IAAA,CAAK,IAAA,CAAK,iBAAiB,aAAa,CAAA;AAExC,MAAA,OAAO,aAAA;AAAA,IACT,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAA;AACb,MAAA,IAAA,CAAK,KAAK,cAAA,EAAgB,EAAE,KAAA,EAAAA,MAAAA,EAAO,QAAQ,CAAA;AAC3C,MAAA,OAAA,CAAQ,KAAA,CAAMiB,MAAA,CAAM,GAAA,CAAI,iBAAiB,GAAG,MAAM,CAAA;AAClD,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,YAAA,EAAyC;AAC5D,IAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AACvB,MAAA,MAAM,KAAK,UAAA,EAAW;AAAA,IACxB;AAEA,IAAA,IAAI;AACF,MAAA,MAAMT,UAAAA,GAAY,MAAM,IAAA,CAAK,gBAAA,CAAiB,OAAO,YAAY,CAAA;AACjE,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,cAAA;AAAA,QAC9C,YAAA;AAAA,QACAA,UAAAA;AAAA,QACA,KAAK,MAAA,CAAO;AAAA,OACd;AAEA,MAAA,OAAO,YAAA;AAAA,IACT,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,+BAA+B,MAAM,CAAA;AACnD,MAAA,OAAO,EAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,qBAAA,CAAsB,QAAA,EAAkB,QAAA,GAAmB,IAAA,EAAuB;AACtF,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,cAAA,CAAe,OAAA,EAAS,QAAQ,CAAA;AAAA,EACzD;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAyC;AAC/D,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,kBAAA,EAAoB;AAAC,MAAA,OAAO,KAAA;AAAA,IAAM;AAInD,IAAA,MAAM,cAAA,GAAiB,mBAAA,CAAoB,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AAClE,IAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,GAAa,GAAA;AAE7C,IAAA,OAAO,cAAA,IAAkB,gBAAA;AAAA,EAC3B;AAAA,EAEA,UAAA,GAA4B;AAC1B,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,OAAA,EAAQ;AAAA,EAC3B;AAAA,EAEA,YAAA,GAAqB;AACnB,IAAA,IAAA,CAAK,OAAA,GAAU;AAAA,MACb,aAAA,EAAe,CAAA;AAAA,MACf,gBAAA,EAAkB,CAAA;AAAA,MAClB,YAAA,EAAc,CAAA;AAAA,MACd,iBAAA,EAAmB,CAAA;AAAA,MACnB,mBAAA,EAAqB,CAAA;AAAA,MACrB,iBAAA,sBAAuB,GAAA;AAAI,KAC7B;AAAA,EACF;AAAA,EAEQ,aAAA,CAAc,WAAA,EAAqB,YAAA,EAAsBJ,QAAAA,EAAuB;AAEtF,IAAA,MAAM,mBAAmB,IAAA,CAAK,OAAA,CAAQ,iBAAA,IAAqB,IAAA,CAAK,QAAQ,gBAAA,GAAmB,CAAA,CAAA;AAC3F,IAAA,IAAA,CAAK,OAAA,CAAQ,iBAAA,GAAA,CAAqB,gBAAA,GAAmB,UAAA,IAAc,KAAK,OAAA,CAAQ,gBAAA;AAGhF,IAAA,MAAM,qBACJ,IAAA,CAAK,OAAA,CAAQ,mBAAA,IAAuB,IAAA,CAAK,QAAQ,gBAAA,GAAmB,CAAA,CAAA;AACtE,IAAA,IAAA,CAAK,OAAA,CAAQ,mBAAA,GAAA,CACV,kBAAA,GAAqB,YAAA,IAAgB,KAAK,OAAA,CAAQ,gBAAA;AAGrD,IAAA,MAAM,gBAAgB,IAAA,CAAK,OAAA,CAAQ,iBAAA,CAAkB,GAAA,CAAIA,QAAO,CAAA,IAAK,CAAA;AACrE,IAAA,IAAA,CAAK,OAAA,CAAQ,iBAAA,CAAkB,GAAA,CAAIA,QAAAA,EAAS,gBAAgB,CAAC,CAAA;AAAA,EAC/D;AAAA,EAEA,MAAM,eAAA,CAAgB,MAAA,EAAgB,cAAA,EAAwB,UAAA,EAAoC;AAChG,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,cAAA,EAAgB;AAAC,MAAA;AAAA,IAAO;AAEzC,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,mBAAA,CAAoB,cAAA,CAAe,KAAA,EAAO,gBAAgB,UAAU,CAAA;AAC/E,MAAA,MAAM,IAAA,CAAK,gBAAA,CAAiB,WAAA,CAAY,KAAA,EAAO,gBAAgB,UAAU,CAAA;AAEzE,MAAA,IAAA,CAAK,KAAK,mBAAA,EAAqB,EAAE,KAAA,EAAO,cAAA,EAAgB,YAAY,CAAA;AAAA,IACtE,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,MAAM,CAAA;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,sBAAA,GAAiC;AAC/B,IAAA,OAAO,KAAK,MAAA,CAAO,mBAAA;AAAA,EACrB;AAAA,EAEA,uBAAuB,SAAA,EAAyB;AAC9C,IAAA,IAAI,SAAA,GAAY,CAAA,IAAK,SAAA,GAAY,CAAA,EAAG;AAClC,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAChE;AACA,IAAA,IAAA,CAAK,OAAO,mBAAA,GAAsB,SAAA;AAAA,EACpC;AAAA,EAEA,qBAAA,GAAkC;AAChC,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,MAAA,CAAO,kBAAkB,CAAA;AAAA,EAC3C;AAAA,EAEA,oBAAoB,QAAA,EAA2B;AAC7C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,kBAAA,CAAmB,QAAA,CAAS,QAAQ,CAAA;AAAA,EACzD;AAAA,EAEA,MAAM,kBAAA,GAAuC;AAC3C,IAAA,OAAO,IAAA,CAAK,oBAAoB,UAAA,EAAW;AAAA,EAC7C;AAAA,EAEA,MAAM,mBAAmBY,KAAAA,EAA8B;AACrD,IAAA,MAAM,IAAA,CAAK,mBAAA,CAAoB,UAAA,CAAWA,KAAI,CAAA;AAAA,EAChD;AAAA,EAEA,OAAA,GAAgB;AACd,IAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,IAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AAAA,EACvB;AACF;;;ACjOO,IAAM,uBAAN,MAAoD;AAAA,EACjD,cAAA,uBAAiD,GAAA,EAAI;AAAA,EACtD,eAAA;AAAA;AAAA,EAGC,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,uBAAkC,GAAA,EAAI;AAAA,EACtC,eAAA,uBAAyC,GAAA,EAAI;AAAA,EAErD,YAAY,OAAA,EAAwB;AAClC,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,YAAA,GAAe;AAAA,MAClB,KAAA,sBAAW,GAAA,EAAI;AAAA,MACf,KAAA,sBAAW,GAAA,EAAI;AAAA,MACf,UAAU;AAAC,KACb;AACA,IAAA,IAAA,CAAK,kBAAA,GAAqB;AAAA,MACxB,UAAU,EAAC;AAAA,MACX,UAAU,EAAC;AAAA,MACX,WAAW;AAAC,KACd;AACA,IAAA,IAAA,CAAK,cAAA,GAAiB;AAAA,MACpB,cAAc,EAAC;AAAA,MACf,cAAc,EAAC;AAAA,MACf,eAAe,EAAC;AAAA,MAChB,WAAW;AAAC,KACd;AACA,IAAA,IAAA,CAAK,eAAA,GAAkB,KAAK,4BAAA,EAA6B;AAAA,EAC3D;AAAA,EAEA,IAAI,mBAAA,GAAuC;AACzC,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,CAAA,CAC3C,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,UAAA,EAAY,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAChF,IAAA,CAAK,CAACd,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,UAAA,GAAaA,EAAAA,CAAE,UAAU,CAAA;AAAA,EAC/C;AAAA,EAEA,IAAI,aAAA,GAA8B;AAChC,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA,EAEA,IAAI,gBAAA,GAAuC;AACzC,IAAA,OAAO,IAAA,CAAK,kBAAA;AAAA,EACd;AAAA,EAEA,IAAI,YAAA,GAA+B;AACjC,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA;AAAA,EAGA,MAAM,iBACJS,KAAAA,EACA,IAAA,EACA,SACA,SAAA,EACA,QAAA,GAAkC,EAAC,EACX;AACxB,IAAA,MAAM,KAAA,GAAuB;AAAA,MAC3B,EAAA,EAAI,IAAA,CAAK,cAAA,CAAeA,KAAAA,EAAM,IAAI,CAAA;AAAA,MAClC,IAAA,EAAAA,KAAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,EAAa,GAAA;AAAA,MACb,YAAA,sBAAkB,IAAA,EAAK;AAAA,MACvB,WAAA,EAAa,CAAA;AAAA,MACb,QAAA,EAAU;AAAA,QACR,UAAA,EAAY,QAAA;AAAA,QACZ,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAW,GAAA;AAAA,QACX,GAAG;AAAA;AACL,KACF;AAEA,IAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,KAAK,CAAA;AACtC,IAAA,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,IAAI,KAAK,CAAA;AAG1C,IAAA,IAAI,IAAA,CAAK,cAAA,CAAe,IAAA,GAAO,IAAA,CAAK,OAAO,iBAAA,EAAmB;AAC5D,MAAA,MAAM,KAAK,qBAAA,EAAsB;AAAA,IACnC;AAEA,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,MAAM,iBAAiBO,GAAAA,EAA2C;AAChE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,cAAA,CAAe,GAAA,CAAIA,GAAE,CAAA;AACxC,IAAA,IAAI,KAAA,EAAO;AAET,MAAA,IAAA,CAAK,YAAA,uBAAmB,IAAA,EAAK;AAC7B,MAAA,IAAA,CAAK,WAAA,EAAA;AACL,MAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAIA,GAAAA,kBAAI,IAAI,MAAM,CAAA;AAGvC,MAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,KAAA,IAAS,IAAA;AAAA,EAClB;AAAA,EAEA,MAAM,oBAAA,CACJ,KAAA,EACA,cAAA,EACA,QAAgB,EAAA,EACU;AAC1B,IAAA,MAAM,SAAA,GAAY,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC1C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA;AACxC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,QAAQ,CAAA,CACrD,GAAA,CAAI,CAACC,KAAAA,MAAU;AAAA,MACd,IAAA,EAAAA,KAAAA;AAAA,MACA,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,cAAA,EAAgBA,MAAK,SAAS;AAAA,KAC3E,CAAE,CAAA,CACD,MAAA,CAAO,CAAC,EAAE,UAAA,EAAW,KAAM,UAAA,GAAa,GAAG,CAAA,CAC3C,IAAA,CAAK,CAACjB,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,UAAA,GAAaA,EAAAA,CAAE,UAAU,CAAA,CAC1C,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,CACd,GAAA,CAAI,CAAC,EAAE,KAAA,EAAM,KAAM,KAAK,CAAA;AAG3B,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAA;AAClC,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAM,mBAAA,CAAoB,GAAA,EAAa,OAAA,EAAmD;AACxF,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,EAAE,CAAA;AACxC,IAAA,IAAI,CAAC,KAAA,EAAO;AAAC,MAAA,OAAO,KAAA;AAAA,IAAM;AAE1B,IAAA,MAAA,CAAO,MAAA,CAAO,OAAO,OAAO,CAAA;AAC5B,IAAA,IAAA,CAAK,YAAA,uBAAmB,IAAA,EAAK;AAC7B,IAAA,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,EAAA,EAAI,KAAK,CAAA;AAGrC,IAAA,IAAA,CAAK,eAAA,CAAgB,CAAA,MAAA,EAAS,EAAE,CAAA,CAAE,CAAA;AAElC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,eACJ,QAAA,EACA,QAAA,EACAS,OACA,MAAA,GAAiB,CAAA,EACjBN,cAAqB,GAAA,EACC;AACtB,IAAA,MAAM,IAAA,GAAoB;AAAA,MACxB,IAAI,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAIM,KAAI,IAAI,QAAQ,CAAA,CAAA;AAAA,MACnC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAAA,KAAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA,EAAAN;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,IAAI,IAAI,CAAA;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,kBAAA,CAAmB,OAAA,EAAiB,QAAA,GAAmB,CAAA,EAA6B;AACxF,IAAA,MAAM,SAAA,GAAY,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAChD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA;AACxC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AAEjC,IAAA,MAAM,QAAyC,CAAC,EAAE,IAAI,MAAA,EAAQ,KAAA,EAAO,GAAG,CAAA;AAExE,IAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACvB,MAAA,MAAM,EAAE,EAAA,EAAAa,GAAAA,EAAI,KAAA,EAAM,GAAI,MAAM,KAAA,EAAM;AAElC,MAAA,IAAI,OAAA,CAAQ,GAAA,CAAIA,GAAE,CAAA,IAAK,SAAS,QAAA,EAAU;AAAC,QAAA;AAAA,MAAS;AACpD,MAAA,OAAA,CAAQ,IAAIA,GAAE,CAAA;AAGd,MAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,QAAO,EAAG;AACnD,QAAA,IAAI,IAAA,CAAK,aAAaA,GAAAA,IAAM,CAAC,QAAQ,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA,EAAG;AACvD,UAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,QAAQ,CAAA;AACzB,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,IAAA,CAAK,UAAU,KAAA,EAAO,KAAA,GAAQ,GAAG,CAAA;AAAA,QACpD;AACA,QAAA,IAAI,IAAA,CAAK,aAAaA,GAAAA,IAAM,CAAC,QAAQ,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA,EAAG;AACvD,UAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,QAAQ,CAAA;AACzB,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,IAAA,CAAK,UAAU,KAAA,EAAO,KAAA,GAAQ,GAAG,CAAA;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,WAAW,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,CACjC,GAAA,CAAI,CAACA,GAAAA,KAAO,IAAA,CAAK,cAAA,CAAe,GAAA,CAAIA,GAAE,CAAC,CAAA,CACvC,OAAO,CAACC,KAAAA,KAAgCA,UAAS,MAAS,CAAA;AAE7D,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAA;AAClC,IAAA,OAAO,QAAA;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,eAAe,QAAA,EAAyD;AAC5E,IAAA,MAAM,WAAA,GAA2B;AAAA,MAC/B,EAAA,EAAI,IAAA,CAAK,iBAAA,CAAkB,OAAA,CAAQ,IAAI,CAAA;AAAA,MACvC,GAAG;AAAA,KACL;AAEA,IAAA,IAAA,CAAK,cAAA,CAAe,YAAA,CAAa,IAAA,CAAK,WAAW,CAAA;AACjD,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,gBAAA,CACJ,QAAA,EACA,SAAA,EACA,OAAA,EACA,QAAgB,EAAA,EACQ;AACxB,IAAA,MAAM,SAAA,GAAY,aAAa,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,OAAO,IAAI,KAAK,CAAA,CAAA;AACxE,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA;AACxC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,IAAI,SAAA,GAAY,KAAK,cAAA,CAAe,YAAA;AAEpC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,SAAA,GAAY,SAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,QAAQ,CAAA;AAAA,IAC5D;AACA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,SAAA,GAAY,SAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,IAC9D;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,SAAA,GAAY,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa,CAAC,CAAA;AAAA,IAC5F;AAEA,IAAA,MAAM,QAAA,GAAW,SAAA,CACd,IAAA,CAAK,CAACjB,IAAG,CAAA,KAAM;AAEd,MAAA,MAAM,oBAAoB,EAAE,QAAA,EAAU,GAAG,YAAA,EAAc,CAAA,EAAG,UAAU,CAAA,EAAE;AACtE,MAAA,OAAA,CAAQ,iBAAA,CAAkBA,GAAE,UAAU,CAAA,IAAK,MAAM,iBAAA,CAAkB,CAAA,CAAE,UAAU,CAAA,IAAK,CAAA,CAAA;AAAA,IACtF,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AAEjB,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAA;AAClC,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,YAAA,EAA6D;AAChF,IAAA,MAAM,QAAA,GAAwB;AAAA,MAC5B,EAAA,EAAI,IAAA,CAAK,iBAAA,CAAkB,WAAA,CAAY,IAAI,CAAA;AAAA,MAC3C,GAAG;AAAA,KACL;AAEA,IAAA,IAAA,CAAK,cAAA,CAAe,YAAA,CAAa,IAAA,CAAK,QAAQ,CAAA;AAC9C,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAM,mBAAmBU,KAAAA,EAAsC;AAC7D,IAAA,MAAM,WAA0B,EAAC;AAEjC,IAAA,KAAA,MAAWQ,YAAAA,IAAe,IAAA,CAAK,cAAA,CAAe,YAAA,EAAc;AAC1D,MAAA,KAAA,MAAW,IAAA,IAAQA,aAAY,cAAA,EAAgB;AAC7C,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,IAAA,CAAK,SAAS,IAAI,CAAA;AAC5C,UAAA,IAAI,KAAA,CAAM,IAAA,CAAKR,KAAI,CAAA,EAAG;AACpB,YAAA,QAAA,CAAS,KAAKQ,YAAW,CAAA;AACzB,YAAA;AAAA,UACF;AAAA,QACF,SAAS,MAAA,EAAQ;AACf,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,yBAAA,EAA4B,IAAA,CAAK,OAAO,IAAI,MAAM,CAAA;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,QAAA,CAAS,IAAA,CAAK,CAAClB,EAAAA,EAAG,CAAA,KAAM;AAC7B,MAAA,MAAM,eAAA,GAAkB,EAAE,QAAA,EAAU,CAAA,EAAG,MAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAClE,MAAA,OAAA,CAAQ,eAAA,CAAgB,EAAE,QAAQ,CAAA,IAAK,MAAM,eAAA,CAAgBA,EAAAA,CAAE,QAAQ,CAAA,IAAK,CAAA,CAAA;AAAA,IAC9E,CAAC,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,cAAc,OAAA,EAAuC;AACzD,IAAA,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAG7C,IAAA,KAAA,MAAWE,QAAAA,IAAW,QAAQ,QAAA,EAAU;AACtC,MAAA,MAAM,IAAA,CAAK,qBAAqBA,QAAO,CAAA;AAAA,IACzC;AAGA,IAAA,MAAM,KAAK,mBAAA,EAAoB;AAG/B,IAAA,IAAI,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,MAAA,GAAS,GAAA,EAAM;AAClD,MAAA,IAAA,CAAK,mBAAmB,QAAA,GAAW,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,IAChF;AAAA,EACF;AAAA,EAEA,MAAM,qBAAqBA,QAAAA,EAAgC;AACzD,IAAA,IAAI,WAAA,GAAc,KAAK,kBAAA,CAAmB,QAAA,CAAS,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAA,KAAYA,QAAO,CAAA;AAEpF,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,WAAA,GAAc;AAAA,QACZ,OAAA,EAAAA,QAAAA;AAAA,QACA,UAAA,EAAY,CAAA;AAAA,QACZ,QAAA,sBAAc,IAAA,EAAK;AAAA,QACnB,WAAA,EAAa,CAAA;AAAA,QACb,oBAAA,EAAsB,CAAA;AAAA,QACtB,gBAAA,EAAkB;AAAA,OACpB;AACA,MAAA,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,IAAA,CAAK,WAAW,CAAA;AAAA,IACnD;AAEA,IAAA,WAAA,CAAY,SAAA,EAAA;AACZ,IAAA,WAAA,CAAY,QAAA,uBAAe,IAAA,EAAK;AAAA,EAClC;AAAA,EAEA,MAAM,mBAAA,CAAoB,KAAA,GAAgB,EAAA,EAA+B;AACvE,IAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAC5B,IAAA,CAAK,CAACF,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAA,GAAYA,EAAAA,CAAE,SAAS,CAAA,CACxC,KAAA,CAAM,GAAG,KAAK,CAAA;AAAA,EACnB;AAAA,EAEA,MAAM,iBAAA,CAAkB,KAAA,GAAgB,EAAA,EAA+B;AACrE,IAAA,OAAO,KAAK,kBAAA,CAAmB,QAAA,CAC5B,KAAK,CAACA,EAAAA,EAAG,MAAM,CAAA,CAAE,QAAA,CAAS,OAAA,EAAQ,GAAIA,GAAE,QAAA,CAAS,OAAA,EAAS,CAAA,CAC1D,KAAA,CAAM,GAAG,KAAK,CAAA;AAAA,EACnB;AAAA;AAAA,EAGA,MAAM,sBAAsB,OAAA,EAAoD;AAC9E,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,OAAO,CAAA;AAC3C,IAAA,IAAA,CAAK,gBAAgB,aAAa,CAAA;AAAA,EACpC;AAAA,EAEA,MAAM,kBACJ,GAAA,EAC+B;AAC/B,IAAA,OAAO,IAAA,CAAK,gBAAgB,GAAG,CAAA;AAAA,EACjC;AAAA;AAAA,EAGA,MAAM,mBAAmB,KAAA,EAAmC;AAC1D,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,iBAAA;AACH,QAAA,MAAM,IAAA,CAAK,2BAA2B,KAAK,CAAA;AAC3C,QAAA;AAAA,MACF,KAAK,qBAAA;AACH,QAAA,MAAM,IAAA,CAAK,+BAA+B,KAAK,CAAA;AAC/C,QAAA;AAAA,MACF,KAAK,iBAAA;AACH,QAAA,MAAM,IAAA,CAAK,2BAA2B,KAAK,CAAA;AAC3C,QAAA;AAGA;AAIJ,IAAA,IAAA,CAAK,gBAAgB,GAAA,CAAI,KAAA,CAAM,EAAA,kBAAI,IAAI,MAAM,CAAA;AAAA,EAC/C;AAAA;AAAA,EAGA,MAAM,qBAAA,GAAuC;AAC3C,IAAqB,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,SAAS;AAC7D,IAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,IAAA,CAAK,CAACA,IAAG,CAAA,KAAM;AAChD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,mBAAA,CAAoBA,EAAAA,CAAE,CAAC,CAAC,CAAA;AAC7C,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,mBAAA,CAAoB,CAAA,CAAE,CAAC,CAAC,CAAA;AAC7C,MAAA,OAAO,OAAA,GAAU,OAAA;AAAA,IACnB,CAAC,CAAA;AAGD,IAAA,MAAM,eAAe,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,oBAAoB,GAAG,CAAA;AACnE,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,gBAAgB,CAAA,GAAI,aAAA,CAAc,QAAQ,CAAA,EAAA,EAAK;AACjE,MAAA,MAAM,MAAA,GAAS,eAAe,CAAC,CAAA;AAC/B,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,CAACmB,OAAM,CAAA,GAAI,MAAA;AACjB,QAAA,IAAA,CAAK,cAAA,CAAe,OAAOA,OAAM,CAAA;AACjC,QAAA,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,MAAA,CAAOA,OAAM,CAAA;AACrC,QAAA,IAAA,CAAK,eAAA,CAAgB,CAAA,MAAA,EAASA,OAAM,CAAA,CAAE,CAAA;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAA,GAAgC;AAEpC,IAAA,MAAM,WAAA,GAAc,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,KAAQ,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI,CAAA;AAClE,IAAA,IAAA,CAAK,kBAAA,CAAmB,QAAA,GAAW,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,MAAA;AAAA,MAClE,CAAC,OAAA,KAAY,OAAA,CAAQ,SAAA,GAAY;AAAA,KACnC;AAGA,IAAA,MAAM,KAAK,mBAAA,EAAoB;AAG/B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AAAA;AAAA,EAGQ,cAAA,CAAe,OAAe,IAAA,EAAsB;AAC1D,IAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACtC;AAAA,EAEQ,kBAAkB,IAAA,EAAsB;AAC9C,IAAA,OAAO,CAAA,SAAA,EAAY,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACvC;AAAA,EAEQ,yBAAA,CAA0B,IAAc,CAAA,EAAqB;AACnE,IAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,MAAA,EAAQ;AAAC,MAAA,OAAO,CAAA;AAAA,IAAE;AAErC,IAAA,IAAI,UAAA,GAAa,CAAA;AACjB,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,IAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,CAAA,CAAE,UAAU,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACjD,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,IAAK,CAAA;AACtB,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,IAAK,CAAA;AACtB,MAAA,UAAA,IAAc,KAAA,GAAQ,KAAA;AACtB,MAAA,KAAA,IAAS,KAAA,GAAQ,KAAA;AACjB,MAAA,KAAA,IAAS,KAAA,GAAQ,KAAA;AAAA,IACnB;AAEA,IAAA,OAAO,cAAc,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA,CAAK,KAAK,KAAK,CAAA,CAAA;AAAA,EACzD;AAAA,EAEQ,iBAAiB,KAAA,EAA4B;AACnD,IAAA,MAAM,gBAAA,GAAA,CAAoB,IAAA,CAAK,GAAA,EAAI,GAAI,IAAA,CAAK,aAAa,OAAA,EAAQ,KAAM,GAAA,GAAO,EAAA,GAAK,EAAA,GAAK,EAAA,CAAA;AACxF,IAAA,MAAM,eAAe,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,CAAK,MAAA,CAAO,kBAAkB,gBAAgB,CAAA;AAC7E,IAAA,IAAA,CAAK,UAAA,IAAc,YAAA;AAGnB,IAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,YAAY,GAAG,CAAA;AAAA,EACjD;AAAA,EAEQ,oBAAoB,KAAA,EAA8B;AACxD,IAAA,MAAM,QAAA,GAAA,CAAY,IAAA,CAAK,GAAA,EAAI,GAAI,IAAA,CAAK,aAAa,OAAA,EAAQ,KAAM,GAAA,GAAO,EAAA,GAAK,EAAA,GAAK,EAAA,CAAA;AAChF,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,cAAc,CAAC,CAAA;AAChD,IAAA,MAAM,cAAc,IAAA,CAAK,UAAA;AACzB,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,CAAS,OAAA;AAE/B,IAAA,OAAA,CAAQ,UAAA,GAAa,WAAA,GAAc,QAAA,KAAa,CAAA,GAAI,QAAA,GAAW,GAAA,CAAA;AAAA,EACjE;AAAA,EAEQ,gBAAgBpB,QAAAA,EAAuB;AAC7C,IAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK,EAAG;AACnC,MAAA,IAAI,GAAA,CAAI,QAAA,CAASA,QAAO,CAAA,EAAG;AACzB,QAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBAAA,GAAqC;AAEjD,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,MAAM,GAAG,CAAA;AAIlE,IAAA,KAAA,MAAW,WAAW,eAAA,EAAiB;AACrC,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,SAAA,CAAU,QAAA,EAAS;AACzC,MAAA,WAAA,CAAY,IAAI,KAAA,EAAA,CAAQ,WAAA,CAAY,IAAI,KAAK,CAAA,IAAK,KAAK,CAAC,CAAA;AAAA,IAC1D;AAIA,IAAA,KAAA,MAAW,WAAW,eAAA,EAAiB;AACrC,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAQ,QAAA,CAAS,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACpD,QAAA,MAAM,SAAA,GAAY,CAAA,EAAG,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAC,CAAA,IAAA,EAAO,OAAA,CAAQ,QAAA,CAAS,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AACtE,QAAA,SAAA,CAAU,IAAI,SAAA,EAAA,CAAY,SAAA,CAAU,IAAI,SAAS,CAAA,IAAK,KAAK,CAAC,CAAA;AAAA,MAC9D;AAAA,IACF;AAGA,IAAA,KAAA,MAAW,CAAC,SAAA,EAAW,UAAU,CAAA,IAAK,SAAA,CAAU,SAAQ,EAAG;AACzD,MAAA,IAAI,cAAc,CAAA,EAAG;AAEnB,QAAA,MAAM,QAAA,GAAyB;AAAA,UAC7B,IAAI,CAAA,IAAA,EAAO,SAAS,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,UAClC,IAAA,EAAM,YAAA;AAAA,UACN,QAAA,EAAU,SAAA;AAAA,UACV,UAAA;AAAA,UACA,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,UAAA,GAAa,IAAI,CAAG,CAAA;AAAA,UAC1C,YAAY;AAAC,SACf;AAEA,QAAA,IAAA,CAAK,kBAAA,CAAmB,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,2BAA2B,KAAA,EAAmC;AAE1E,IAAc,KAAA,CAAM;AAEpB,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,QAAA,EAAU;AAE9B,MAAA,MAAM,YAAY,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,IAAA,EAAM,KAAK,QAAQ,CAAA;AAEnE,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,QAAA,MAAM,IAAA,CAAK,eAAe,QAAQ,CAAA;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,+BAA+B,KAAA,EAAmC;AAE9E,IAAc,KAAA,CAAM;AAEpB,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,IAAA,CAAK,SAAS,CAAA;AACrF,MAAA,IAAI,QAAA,IAAY,IAAA,CAAK,OAAA,KAAY,MAAA,EAAW;AAE1C,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,OAAA,GAAU,GAAA,GAAM,KAAA;AAEzC,QAAA,OAAA,CAAQ,IAAI,CAAA,QAAA,EAAW,IAAA,CAAK,SAAS,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,2BAA2B,KAAA,EAAmC;AAE1E,IAAc,KAAA,CAAM;AAMpB,IAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,KAAA,KAAU,MAAA,EAAW;AAE/C,MAAA,MAAM,IAAA,CAAK,qBAAqB,IAAA,CAAK,UAAA,EAAY,KAAK,KAAA,EAAO,IAAA,CAAK,cAAc,GAAG,CAAA;AAAA,IACrF;AAAA,EACF;AAAA,EAEQ,mBAAA,CAAoB,OAAe,QAAA,EAA6C;AAEtF,IAAA,MAAM,YAAuC,EAAC;AAI9C,IAAA,IAAI,KAAA;AAEJ,IAAA,OAAA,CAAQ,KAAA,GAAQ,aAAA,CAAc,IAAA,CAAK,IAAI,OAAO,IAAA,EAAM;AAClD,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,IAAA,EAAM,CAAA,UAAA,EAAa,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,QAC3B,WAAA,EAAa,CAAA,qCAAA,CAAA;AAAA,QACb,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA,QACb,QAAA;AAAA,QACA,OAAA,EAAS,qBAAA;AAAA,QACT,UAAA,EAAY,cAAA;AAAA,QACZ,WAAA,EAAa;AAAA,UACX,cAAA,EAAgB,MAAA;AAAA,UAChB,eAAA,EAAiB;AAAA,SACnB;AAAA,QACA,UAAU;AAAC,OACZ,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,SAAA;AAAA,EACT;AAAA,EAEA,MAAc,oBAAA,CACZ,UAAA,EACA,KAAA,EACAI,WAAAA,EACe;AAGf,IAAA,OAAA,CAAQ,IAAI,CAAA,oBAAA,EAAuB,UAAU,OAAO,KAAK,CAAA,eAAA,EAAkBA,WAAU,CAAA,CAAA,CAAG,CAAA;AAAA,EAC1F;AAAA,EAEA,MAAc,mBAAA,GAAqC;AAEjD,IAAA,MAAM,SAAA,GAAY,KAAK,cAAA,CAAe,YAAA;AACtC,IAAA,MAAM,SAAwB,EAAC;AAG/B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,eAAA,GAAkB,UAAU,CAAC,CAAA;AACnC,MAAA,IAAI,CAAC,eAAA,IAAmB,SAAA,CAAU,GAAA,CAAI,cAAA,CAAe,EAAE,CAAA,EAAG;AAAC,QAAA;AAAA,MAAS;AAEpE,MAAA,MAAM,QAAA,GAAW,SAAA,CACd,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,CACX,MAAA;AAAA,QACC,CAAC,CAAA,KACC,CAAA,IACA,CAAC,SAAA,CAAU,IAAI,CAAA,CAAE,EAAE,CAAA,IACnB,CAAA,CAAE,aAAa,cAAA,CAAe,QAAA,IAC9B,KAAK,0BAAA,CAA2B,eAAA,EAAiB,CAAC,CAAA,GAAI;AAAA,OAC1D;AAEF,MAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AAEtB,QAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,aAAA,CAAc,eAAA,EAAiB,QAAQ,CAAA;AACnE,QAAA,MAAA,CAAO,KAAK,cAAc,CAAA;AAE1B,QAAA,SAAA,CAAU,GAAA,CAAI,eAAe,EAAE,CAAA;AAC/B,QAAA,OAAA,CAAQ,QAAQ,CAAC,CAAA,KAAM,UAAU,GAAA,CAAI,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,MAC5C,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,KAAK,eAAe,CAAA;AAC3B,QAAA,SAAA,CAAU,GAAA,CAAI,eAAe,EAAE,CAAA;AAAA,MACjC;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,eAAe,YAAA,GAAe,MAAA;AAAA,EACrC;AAAA,EAEQ,0BAAA,CAA2B,IAAiB,CAAA,EAAwB;AAE1E,IAAA,MAAM,gBACJ,CAAA,CAAE,IAAA,CAAK,aAAY,CAAE,QAAA,CAAS,EAAE,IAAA,CAAK,WAAA,EAAa,CAAA,IAClD,CAAA,CAAE,KAAK,WAAA,EAAY,CAAE,SAAS,CAAA,CAAE,IAAA,CAAK,aAAa,CAAA;AACpD,IAAA,MAAM,mBAAmB,CAAA,CAAE,OAAA,CAAQ,aAAY,KAAM,CAAA,CAAE,QAAQ,WAAA,EAAY;AAE3E,IAAA,OAAA,CAAQ,aAAA,GAAgB,GAAA,GAAM,CAAA,KAAM,gBAAA,GAAmB,GAAA,GAAM,CAAA,CAAA;AAAA,EAC/D;AAAA,EAEQ,aAAA,CAAc,UAAuB,QAAA,EAAsC;AAEjF,IAAA,OAAO;AAAA,MACL,GAAG,OAAA;AAAA,MACH,aAAa,CAAA,EAAG,OAAA,CAAQ,WAAW,CAAA,cAAA,EAAiB,OAAA,CAAQ,SAAS,CAAC,CAAA,WAAA,CAAA;AAAA,MACtE,QAAA,EAAU,CAAC,GAAG,OAAA,CAAQ,QAAA,EAAU,GAAG,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,CAAC;AAAA,KACvE;AAAA,EACF;AAAA,EAEQ,4BAAA,GAAkD;AACxD,IAAA,OAAO;AAAA,MACL,gBAAA,EAAkB;AAAA,QAChB,QAAA,EAAU,WAAA;AAAA,QACV,kBAAA,EAAoB;AAAA,UAClB,EAAE,UAAU,YAAA,EAAc,WAAA,EAAa,gBAAgB,UAAA,EAAY,GAAA,EAAK,YAAY,CAAA,EAAE;AAAA,UACtF,EAAE,UAAU,YAAA,EAAc,WAAA,EAAa,gBAAgB,UAAA,EAAY,GAAA,EAAK,YAAY,CAAA;AAAE,SACxF;AAAA,QACA,qBAAA,EAAuB;AAAA,UACrB,EAAE,MAAM,KAAA,EAAO,WAAA,EAAa,KAAK,UAAA,EAAY,CAAA,EAAG,gBAAgB,GAAA;AAAI,SACtE;AAAA,QACA,mBAAA,EAAqB,YAAA;AAAA,QACrB,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,wBAAA,EAA0B;AAAA,QACxB,SAAA,EAAW,UAAA;AAAA,QACX,gBAAA,EAAkB,cAAA;AAAA,QAClB,gBAAA,EAAkB,QAAA;AAAA,QAClB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,eAAA,EAAiB;AAAA,QACf,GAAA,EAAK,CAAC,QAAA,EAAU,UAAU,CAAA;AAAA,QAC1B,UAAA,EAAY;AAAA,UACV,EAAE,MAAM,OAAA,EAAS,QAAA,EAAU,YAAY,WAAA,EAAa,GAAA,EAAK,YAAY,CAAA,EAAE;AAAA,UACvE,EAAE,MAAM,SAAA,EAAW,QAAA,EAAU,WAAW,WAAA,EAAa,GAAA,EAAK,YAAY,CAAA;AAAE,SAC1E;AAAA,QACA,SAAA,EAAW,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,WAAA,EAAa,GAAA,EAAK,UAAA,EAAY,CAAA,EAAG,CAAA;AAAA,QACpF,UAAA,EAAY,CAAC,SAAA,EAAW,MAAM,CAAA;AAAA,QAC9B,YAAA,EAAc,CAAC,MAAA,EAAQ,QAAQ;AAAA,OACjC;AAAA,MACA,aAAA,EAAe;AAAA,QACb,gBAAA,EAAkB;AAAA,UAChB,EAAE,IAAA,EAAM,UAAA,EAAY,aAAA,EAAe,GAAA,EAAK,YAAY,CAAA,EAAE;AAAA,UACtD,EAAE,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,GAAA,EAAK,YAAY,CAAA;AAAE,SACtD;AAAA,QACA,IAAA,EAAM,UAAA;AAAA,QACN,UAAA,EAAY,mBAAA;AAAA,QACZ,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa;AAAA,UACX,EAAE,MAAA,EAAQ,iBAAA,EAAmB,SAAA,EAAW,EAAA,EAAI,UAAU,MAAA,EAAO;AAAA,UAC7D,EAAE,MAAA,EAAQ,aAAA,EAAe,SAAA,EAAW,EAAA,EAAI,UAAU,MAAA;AAAO,SAC3D;AAAA,QACA,YAAA,EAAc,EAAA;AAAA,QACd,aAAA,EAAe;AAAA,UACb,QAAA,EAAU,IAAA;AAAA,UACV,KAAA,EAAO,UAAA;AAAA,UACP,OAAA,EAAS,CAAC,UAAA,EAAY,OAAO;AAAA,SAC/B;AAAA,QACA,WAAA,EAAa;AAAA,UACX,YAAA,EAAc,GAAA;AAAA,UACd,UAAA,EAAY,GAAA;AAAA,UACZ,WAAA,EAAa,GAAA;AAAA,UACb,QAAA,EAAU;AAAA,SACZ;AAAA,QACA,QAAA,EAAU;AAAA,UACR,YAAA,EAAc;AAAA,YACZ;AAAA,cACE,IAAA,EAAM,gBAAA;AAAA,cACN,WAAA,EAAa,sBAAA;AAAA,cACb,QAAA,EAAU,MAAA;AAAA,cACV,SAAA,EAAW;AAAA;AACb,WACF;AAAA,UACA,UAAA,EAAY,CAAC,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,YAAA,EAAc,CAAC,iBAAiB,CAAA,EAAG,CAAA;AAAA,UAClF,eAAA,EAAiB;AAAA;AACnB;AACF,KACF;AAAA,EACF;AACF;;;ACvrBO,IAAM,uBAAN,MAAoD;AAAA,EACjD,eAAA,uBAAmD,GAAA,EAAI;AAAA,EACvD,cAAA;AAAA,EACA,aAAA,uBAA+C,GAAA,EAAI;AAAA,EACnD,YAAA,uBAA6C,GAAA,EAAI;AAAA,EACjD,iBAAA,uBAAsD,GAAA,EAAI;AAAA,EAC1D,MAAA;AAAA,EACA,aAAA,uBAA0C,GAAA,EAAI;AAAA,EAEtD,YAAY,OAAA,EAAwB;AAClC,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,cAAA,GAAiB,KAAK,wBAAA,EAAyB;AAAA,EACtD;AAAA,EAEA,IAAI,cAAA,GAAmC;AACrC,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,eAAA,CAAgB,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,MAC/C,CAACH,IAAG,CAAA,KAAM,CAAA,CAAE,UAAU,OAAA,EAAQ,GAAIA,EAAAA,CAAE,SAAA,CAAU,OAAA;AAAQ,KACxD;AAAA,EACF;AAAA,EAEA,IAAI,iBAAA,GAAoC;AACtC,IAAA,OAAO,IAAA,CAAK,cAAA;AAAA,EACd;AAAA,EAEA,IAAI,eAAA,GAAgC;AAElC,IAAe,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,QAAQ;AACrD,IAAA,OACE,KAAA,CAAM,IAAA;AAAA,MACJ,CAACA,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,WAAA,CAAY,OAAA,EAAQ,GAAIA,EAAAA,CAAE,QAAA,CAAS,WAAA,CAAY,OAAA;AAAQ,KAC9E,CAAE,CAAC,CAAA,IAAK,IAAA,CAAK,uBAAA,EAAwB;AAAA,EAEzC;AAAA,EAEA,IAAI,sBAAA,GAAwC;AAC1C,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,CAAA,CACzC,MAAA;AAAA,MACC,CAAC,YAAA,KAAiB,WAAA,CAAY,MAAA,KAAW,UAAA,IAAc,YAAY,MAAA,KAAW;AAAA,KAChF,CACC,KAAK,CAACA,EAAAA,EAAG,MAAM,CAAA,CAAE,QAAA,GAAWA,GAAE,QAAQ,CAAA;AAAA,EAC3C;AAAA,EAEA,IAAI,cAAA,GAAoC;AACtC,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,iBAAA,CAAkB,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,MACjD,CAACA,IAAG,CAAA,KAAM,CAAA,CAAE,UAAU,OAAA,EAAQ,GAAIA,EAAAA,CAAE,SAAA,CAAU,OAAA;AAAQ,KACxD;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,mBAAA,CAAoB,QAAA,EACxB,WAAA,EACyB;AACzB,IAAA,MAAM,MAAA,GAAyB;AAAA,MAC7B,EAAA,EAAI,KAAK,eAAA,EAAgB;AAAA,MACzB,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB,OAAA;AAAA,MACA,OAAO,EAAC;AAAA,MACR,UAAA,EAAY,EAAA;AAAA,MACZ,UAAA,EAAY,CAAA;AAAA,MACZ,cAAc,EAAC;AAAA,MACf,QAAA,EAAU;AAAA,QACR,WAAA,EAAa,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAA;AAAA,QAC1C,MAAA,EAAQ,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AAAA,QACnC,YAAY,EAAC;AAAA,QACb,YAAA,EAAc,CAAA;AAAA,QACd,cAAA,EAAgB;AAAA;AAClB,KACF;AAEA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,IAAA,CAAK,gBAAA,CAAiB,KAAA,CAAM,EAAA,EAAI;AAAA,QACpC,IAAA,EAAM,UAAA;AAAA,QACN,WAAA,EAAa,2BAAA;AAAA,QACb,OAAO,OAAA,CAAQ,OAAA;AAAA,QACf,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAEA,IAAA,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,KAAA,CAAM,EAAA,EAAI,MAAM,CAAA;AACzC,IAAA,MAAM,KAAK,gBAAA,EAAiB;AAE5B,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,gBAAA,CACJ,OAAA,EACA,QAAA,EACwB;AACxB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA;AAC/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,OAAO,CAAA,WAAA,CAAa,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAE5B,IAAA,MAAM,IAAA,GAAsB;AAAA,MAC1B,EAAA,EAAI,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AAAA,MAC/B,UAAA,EAAY,IAAA,CAAK,uBAAA,CAAwB,QAAA,EAAU,MAAM,CAAA;AAAA,MACzD,QAAA,EAAU,CAAA;AAAA;AAAA,MACV,YAAA,EAAc,IAAA,CAAK,oBAAA,CAAqB,QAAA,EAAU,MAAM,KAAK,CAAA;AAAA,MAC7D,GAAG;AAAA,KACL;AAEA,IAAA,KAAA,CAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AACrB,IAAA,KAAA,CAAM,QAAA,CAAS,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AAG5C,IAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,GAAA,EAAI,GAAI,UAAA;AAG7B,IAAA,MAAM,IAAA,CAAK,mBAAmB,MAAM,CAAA;AAEpC,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,sBAAA,CACJ,OAAA,EACA,UAAA,EACAG,WAAAA,EACyB;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA;AAC/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,OAAO,CAAA,WAAA,CAAa,CAAA;AAAA,IAC1D;AAEA,IAAA,KAAA,CAAM,UAAA,GAAa,UAAA;AACnB,IAAA,KAAA,CAAM,UAAA,GAAaA,WAAAA;AACnB,IAAA,KAAA,CAAM,QAAA,CAAS,YAAA,GAAe,MAAM,IAAA,CAAK,0BAA0B,MAAM,CAAA;AACzE,IAAA,KAAA,CAAM,SAAS,cAAA,GAAiB,KAAA,CAAM,QAAA,CAAS,YAAA,GAAe,KAAK,MAAA,CAAO,gBAAA;AAG1E,IAAA,MAAM,IAAA,CAAK,+BAA+B,MAAM,CAAA;AAGhD,IAAA,MAAM,IAAA,CAAK,2BAA2B,MAAM,CAAA;AAE5C,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,uBAAA,CACJ,OAAA,EACA,WAAA,EAC+B;AAC/B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA;AAC/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,OAAO,CAAA,WAAA,CAAa,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,YAAA,GAAqC;AAAA,MACzC,EAAA,EAAI,IAAA,CAAK,qBAAA,CAAsB,OAAO,CAAA;AAAA,MACtC,GAAG;AAAA,KACL;AAEA,IAAA,KAAA,CAAM,YAAA,CAAa,KAAK,YAAY,CAAA;AACpC,IAAA,OAAO,YAAA;AAAA,EACT;AAAA,EAEA,MAAM,kBAAkB,OAAA,EAAiD;AACvE,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,GAAA,CAAI,OAAO,CAAA,IAAK,IAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,qBAAA,CACJ,KAAA,EAMA,KAAA,GAAgB,EAAA,EACW;AAC3B,IAAA,MAAM,YAAY,CAAA,iBAAA,EAAoB,IAAA,CAAK,UAAU,KAAK,CAAC,IAAI,KAAK,CAAA,CAAA;AACpE,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAChD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,IAAI,UAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AAEtD,IAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,MAAA,OAAA,GAAU,MAAA,CAAO,OAAO,CAAC,MAAA,KAAW,MAAM,QAAA,CAAS,MAAA,KAAW,MAAM,MAAM,CAAA;AAAA,IAC5E;AAEA,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAA,OAAA,GAAU,MAAA,CAAO,OAAO,CAAC,MAAA,KAAW,MAAM,QAAA,CAAS,UAAA,KAAe,MAAM,UAAU,CAAA;AAAA,IACpF;AAEA,IAAA,IAAI,KAAA,CAAM,eAAe,MAAA,EAAW;AAClC,MAAA,OAAA,GAAU,MAAA,CAAO,OAAO,CAAC,MAAA,KAAW,MAAM,QAAA,CAAS,YAAA,KAAiB,KAAA,CAAM,UAAA,IAAc,CAAA,CAAE,CAAA;AAAA,IAC5F;AAEA,IAAA,IAAI,MAAM,SAAA,EAAW;AACnB,MAAA,OAAA,GAAU,MAAA,CAAO,MAAA;AAAA,QACf,CAAC,MAAA,KACC,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,UAAW,KAAA,IAAS,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,SAAA,CAAW;AAAA,OACrF;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,OAAA,CACd,IAAA,CAAK,CAACH,IAAG,CAAA,KAAM,CAAA,CAAE,QAAA,CAAS,YAAA,GAAeA,GAAE,QAAA,CAAS,YAAY,CAAA,CAChE,KAAA,CAAM,GAAG,KAAK,CAAA;AAEjB,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAA,EAAW,QAAQ,CAAA;AAC1C,IAAA,OAAO,QAAA;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,kBAAA,CAAmB,OAAA,EAAiB,gBAAA,EAAiD;AACzF,IAAA,MAAM,KAAA,GAAsB;AAAA,MAC1B,EAAA,EAAI,IAAA,CAAK,sBAAA,CAAuB,MAAM,CAAA;AAAA,MACtC,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,MAAA;AAAA,QACJ,IAAA,EAAM,WAAA;AAAA,QACN,WAAA,EAAa,gBAAA;AAAA,QACb,UAAU,EAAC;AAAA,QACX,UAAA,EAAY,GAAA;AAAA,QACZ,UAAU,EAAC;AAAA,QACX,cAAc;AAAC,OACjB;AAAA,MACA,QAAA,EAAU;AAAA,QACR,MAAA;AAAA,QACA,WAAA,EAAa,CAAA;AAAA,QACb,QAAA,EAAU,GAAA;AAAA,QACV,WAAA,sBAAiB,IAAA,EAAK;AAAA,QACtB,UAAA,EAAY;AAAA;AACd,KACF;AAEA,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,KAAK,CAAA;AACrC,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,MAAM,eAAA,CACJoB,OAAAA,EACA,YAAA,EACA,KAAA,EACuB;AACvB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,GAAA,CAAIA,OAAM,CAAA;AAC3C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkBA,OAAM,CAAA,WAAA,CAAa,CAAA;AAAA,IACvD;AAEA,IAAA,MAAM,OAAA,GAAwB;AAAA,MAC5B,EAAA,EAAI,IAAA,CAAK,cAAA,CAAeA,OAAM,CAAA;AAAA,MAC9B,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,UAAU,YAAY,CAAA;AACrE,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,UAAA,CAAW,QAAA,CAAS,KAAK,OAAO,CAAA;AAChC,MAAA,IAAA,CAAK,QAAA,CAAS,UAAA,GAAa,IAAA,CAAK,uBAAA,CAAwB,KAAK,QAAQ,CAAA;AACrE,MAAA,IAAA,CAAK,QAAA,CAAS,WAAA,mBAAc,IAAI,IAAA,EAAK;AAAA,IACvC;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,MAAM,WAAA,CAAY,OAAA,EAAiBD,OAAAA,EAAgB,QAAA,EAAmC;AACpF,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,MAAM,CAAA;AAC3C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,MAAM,CAAA,WAAA,CAAa,CAAA;AAAA,IACvD;AAEA,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,UAAUA,OAAM,CAAA;AACzD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,QAAA,CAAS,KAAK,QAAQ,CAAA;AAG3B,MAAA,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,uBAAA,CAAwB,IAAA,CAAK,QAAQ,CAAA;AAC5D,MAAA,IAAA,CAAK,QAAA,CAAS,WAAA,mBAAc,IAAI,IAAA,EAAK;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,MAAM,iBAAA,CACJC,OAAAA,EACAC,QAAAA,EACyB;AACzB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,GAAA,CAAID,OAAM,CAAA;AAC3C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,IAAA,CAAK,QAAA,CAAS,UAAA,EAAA;AACd,IAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,IAAA,CAAK,QAAA,EAAUC,QAAO,CAAA;AAAA,EACzD;AAAA;AAAA,EAGA,MAAM,mBAAmB,YAAA,EAAwE;AAC/F,IAAA,MAAM,cAAA,GAA8B;AAAA,MAClC,EAAA,EAAI,KAAK,qBAAA,EAAsB;AAAA,MAC/B,MAAA,EAAQ,UAAA;AAAA,MACR,GAAG;AAAA,KACL;AAEA,IAAA,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,cAAA,CAAe,EAAA,EAAI,cAAc,CAAA;AAGvD,IAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,cAAc,CAAA,EAAG;AAC1C,MAAA,cAAA,CAAe,MAAA,GAAS,UAAA;AAAA,IAC1B;AAEA,IAAA,OAAO,cAAA;AAAA,EACT;AAAA,EAEA,MAAM,uBAAA,CACJ,aAAA,EACA,MAAA,EACA,QAAA,EACkB;AAClB,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,aAAa,CAAA;AACxD,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,sBAAA,EAAyB,QAAQ,CAAA,CAAE,CAAA;AAAA,IACjD;AAEA,IAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AAErB,IAAA,IAAI,WAAW,WAAA,EAAa;AAC1B,MAAA,MAAM,IAAA,CAAK,0BAA0B,YAAY,CAAA;AAAA,IACnD;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,sBAAsBZ,KAAAA,EAAmD;AAC7E,IAAA,OAAO,KAAA,CAAM,KAAK,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,CACzC,OAAO,CAAC,YAAA,KAAiB,YAAY,IAAA,KAASA,KAAI,EAClD,IAAA,CAAK,CAACT,IAAG,CAAA,KAAM,CAAA,CAAE,QAAA,GAAWA,EAAAA,CAAE,QAAQ,CAAA;AAAA,EAC3C;AAAA;AAAA,EAGA,MAAM,kBAAA,CACJ,OAAA,EACA,aACA,QAAA,EACAsB,QAAAA,EACAnB,cAAqB,GAAA,EACK;AAC1B,IAAA,MAAM,WAAA,GAA+B;AAAA,MACnC,EAAA,EAAI,KAAK,oBAAA,EAAqB;AAAA,MAC9B,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB,OAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA,EAAAmB,QAAAA;AAAA,MACA,aAAa,EAAC;AAAA,MACd,UAAA,EAAAnB;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,UAAA,CAAW,EAAA,EAAI,WAAW,CAAA;AAGrD,IAAA,MAAM,IAAA,CAAK,oBAAoB,WAAW,CAAA;AAE1C,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,aAAA,CACJ,YAAA,EACA,UAAA,EACqB;AACrB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,YAAY,CAAA;AAC3D,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,YAAY,CAAA,WAAA,CAAa,CAAA;AAAA,IAC/D;AAEA,IAAA,MAAM,MAAA,GAAqB;AAAA,MACzB,EAAA,EAAI,IAAA,CAAK,oBAAA,CAAqB,YAAY,CAAA;AAAA,MAC1C,MAAA,EAAQ,MAAA;AAAA,MACR,GAAG;AAAA,KACL;AAEA,IAAA,UAAA,CAAW,WAAA,CAAY,KAAK,MAAM,CAAA;AAClC,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,qBAAA,CACJ,SAAA,EACA,aAAA,GAAwB,GAAA,EACI;AAC5B,IAAA,IAAI,cAAc,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,iBAAA,CAAkB,QAAQ,CAAA;AAE5D,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,WAAA,GAAc,WAAA,CAAY,MAAA;AAAA,QACxB,CAAC,MAAM,CAAA,CAAE,SAAA,IAAa,UAAU,KAAA,IAAS,CAAA,CAAE,aAAa,SAAA,CAAU;AAAA,OACpE;AAAA,IACF;AAEA,IAAA,OAAO,WAAA,CACJ,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,UAAA,IAAc,aAAa,CAAA,CAC3C,IAAA,CAAK,CAACH,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,UAAA,GAAaA,GAAE,UAAU,CAAA;AAAA,EAC/C;AAAA;AAAA,EAGA,MAAM,mBAAmB,KAAA,EAAmC;AAC1D,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,iBAAA;AACH,QAAA,MAAM,IAAA,CAAK,2BAA2B,KAAK,CAAA;AAC3C,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,MAAM,IAAA,CAAK,mBAAmB,KAAK,CAAA;AACnC,QAAA;AAAA,MACF,KAAK,qBAAA;AACH,QAAA,MAAM,IAAA,CAAK,+BAA+B,KAAK,CAAA;AAC/C,QAAA;AAAA,MACF;AACE,QAAA,MAAM,IAAA,CAAK,oBAAoB,KAAK,CAAA;AACpC,QAAA;AAAA;AACJ,EACF;AAAA;AAAA,EAGA,MAAM,iBAAA,CACJU,KAAAA,EACA,QAAA,EACAW,QAAAA,EAC6B;AAE7B,IAAA,IAAIA,QAAAA,EAAS;AACX,MAAA,OAAA,CAAQ,GAAA,CAAI,wBAAA,EAA0B,MAAA,CAAO,IAAA,CAAKA,QAAO,CAAC,CAAA;AAAA,IAC5D;AACA,IAAA,MAAM,YAAY,CAAA,SAAA,EAAY,IAAA,CAAK,SAASX,KAAI,CAAC,IAAK,QAAS,CAAA,CAAA;AAC/D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAChD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAMa,QAAAA,GAA8B;AAAA,MAClC,eAAA,EAAiB,MAAM,IAAA,CAAK,wBAAA,CAAyBb,OAAM,SAAS,CAAA;AAAA,MACpE,WAAA,EAAa,MAAM,IAAA,CAAK,oBAAA,CAAqBA,OAAM,SAAS,CAAA;AAAA,MAC5D,WAAA,EAAa,MAAM,IAAA,CAAK,oBAAA,CAAqBA,OAAM,SAAS,CAAA;AAAA,MAC5D,WAAA,EAAa,MAAM,IAAA,CAAK,oBAAA,CAAqBA,OAAM,SAAS,CAAA;AAAA,MAC5D,QAAA,EAAU,MAAM,IAAA,CAAK,iBAAA,CAAkBA,OAAM,SAAS,CAAA;AAAA,MACtD,UAAA,EAAY,MAAM,IAAA,CAAK,mBAAA,CAAoBA,OAAM,SAAS,CAAA;AAAA,MAC1D,WAAA,EAAa,MAAM,IAAA,CAAK,6BAAA,CAA8BA,OAAM,SAAS;AAAA,KACvE;AAEA,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAA,EAAWa,QAAO,CAAA;AACzC,IAAA,OAAOA,QAAAA;AAAA,EACT;AAAA,EAEA,MAAM,qBAAqBA,QAAAA,EAAiD;AAC1E,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgBA,QAAO,CAAA;AAAA,EAC5C;AAAA;AAAA,EAGQ,eAAA,GAA0B;AAChC,IAAA,OAAO,CAAA,OAAA,EAAU,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EACxE;AAAA,EAEQ,eAAe,OAAA,EAAyB;AAC9C,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACtC;AAAA,EAEQ,sBAAsB,OAAA,EAAyB;AACrD,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,KAAA,EAAQ,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACrC;AAAA,EAEQ,uBAAuBC,OAAAA,EAAwB;AACrD,IAAA,OAAO,CAAA,MAAA,EAASA,OAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACtC;AAAA,EAEQ,eAAeJ,OAAAA,EAAwB;AAC7C,IAAA,OAAO,CAAA,EAAGA,OAAM,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EACtC;AAAA,EAEQ,qBAAA,GAAgC;AACtC,IAAA,OAAO,CAAA,aAAA,EAAgB,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EAC9E;AAAA,EAEQ,oBAAA,GAA+B;AACrC,IAAA,OAAO,CAAA,YAAA,EAAe,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EAC7E;AAAA,EAEQ,qBAAqB,YAAA,EAA8B;AACzD,IAAA,OAAO,CAAA,EAAG,YAAY,CAAA,QAAA,EAAW,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,EAC7C;AAAA,EAEQ,iBAAiB,QAAA,EAC6B;AACpD,IAAiB;AAAA,MACf,OAAA,CAAQ,MAAM,MAAA,GAAS,CAAA;AAAA,MACvB,OAAA,CAAQ,YAAY,MAAA,GAAS,CAAA;AAAA,MAC7B,OAAA,CAAQ,YAAY,MAAA,GAAS,CAAA;AAAA,MAC7B,OAAA,CAAQ,QAAQ,MAAA,GAAS;AAAA;AAG3B,IAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA;AAEjD,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAAC,MAAA,OAAO,QAAA;AAAA,IAAS;AAC7C,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAAC,MAAA,OAAO,UAAA;AAAA,IAAW;AAC/C,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAAC,MAAA,OAAO,SAAA;AAAA,IAAU;AAC9C,IAAA,OAAO,cAAA;AAAA,EACT;AAAA,EAEQ,eAAeC,QAAAA,EAAmC;AACxD,IAAiBA,QAAAA,CAAQ,OAAA,CAAQ,WAAA;AAEjC,IAAA,IAAI,QAAQ,QAAA,CAAS,aAAa,KAAK,OAAA,CAAQ,QAAA,CAAS,cAAc,CAAA,EAAG;AACvE,MAAA,OAAO,aAAA;AAAA,IACT;AACA,IAAA,IAAI,QAAQ,QAAA,CAAS,UAAU,KAAK,OAAA,CAAQ,QAAA,CAAS,eAAe,CAAA,EAAG;AACrE,MAAA,OAAO,UAAA;AAAA,IACT;AACA,IAAA,IAAI,QAAQ,QAAA,CAAS,cAAc,KAAK,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,EAAG;AAClE,MAAA,OAAO,cAAA;AAAA,IACT;AACA,IAAA,IAAI,QAAQ,QAAA,CAAS,KAAK,KAAK,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,EAAG;AACxD,MAAA,OAAO,WAAA;AAAA,IACT;AAEA,IAAA,OAAO,SAAA;AAAA,EACT;AAAA,EAEQ,uBAAA,CACN,UACA,MAAA,EACQ;AACR,IAAA,IAAIlB,WAAAA,GAAa,GAAA;AAGjB,IAAA,QAAQ,SAAS,IAAA;AAAM,MACrB,KAAK,UAAA;AACH,QAAAA,WAAAA,GAAa,GAAA;AACb,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAAA,WAAAA,GAAa,GAAA;AACb,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAAA,WAAAA,GAAa,GAAA;AACb,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAAA,WAAAA,GAAa,GAAA;AACb,QAAA;AAAA;AAIJ,IAAA,IAAI,QAAA,CAAS,KAAA,CAAM,MAAA,GAAS,GAAA,EAAK;AAAC,MAAAA,WAAAA,IAAc,GAAA;AAAA,IAAI;AACpD,IAAA,IAAI,QAAA,CAAS,MAAA,CAAO,MAAA,GAAS,GAAA,EAAK;AAAC,MAAAA,WAAAA,IAAc,GAAA;AAAA,IAAI;AAGrD,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,UAAA,KAAe,QAAA,EAAU;AAAC,MAAAA,WAAAA,IAAc,GAAA;AAAA,IAAI;AAC/D,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,UAAA,KAAe,cAAA,EAAgB;AAAC,MAAAA,WAAAA,IAAc,GAAA;AAAA,IAAI;AAErE,IAAA,OAAO,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAKA,WAAU,CAAC,CAAA;AAAA,EAChD;AAAA,EAEQ,oBAAA,CACN,UACA,aAAA,EACU;AACV,IAAA,MAAM,eAAyB,EAAC;AAGhC,IAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,MAAA,IAAI,QAAA,CAAS,MAAM,QAAA,CAAS,IAAA,CAAK,OAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,EAAG;AACrD,QAAA,YAAA,CAAa,IAAA,CAAK,KAAK,EAAE,CAAA;AAAA,MAC3B;AAAA,IACF;AAEA,IAAA,OAAO,YAAA;AAAA,EACT;AAAA,EAEA,MAAc,mBAAmB,MAAA,EAAuC;AAEtE,IAAA,MAAM,UAAA,GAAa,MAAM,KAAA,CAAM,MAAA;AAC/B,IAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,UAAA,EAAY,CAAC,CAAA,GAAI,UAAA;AACrF,IAAA,MAAM,YAAA,GAAe,MAAM,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,UAAU,CAAA;AACxE,IAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,YAAY,CAAA;AAE5E,IAAA,IAAI,WAAW,cAAA,GAAiB,GAAA;AAChC,IAAA,IAAI,YAAA,EAAc;AAAC,MAAA,QAAA,IAAY,GAAA;AAAA,IAAI;AACnC,IAAA,IAAI,cAAA,EAAgB;AAAC,MAAA,QAAA,IAAY,GAAA;AAAA,IAAI;AAErC,IAAA,KAAA,CAAM,QAAA,CAAS,eAAe,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAC,CAAA;AAAA,EACjE;AAAA,EAEA,MAAc,0BAA0BsB,MAAAA,EAAwC;AAC9E,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,UAAA,EAAY,IAAA,CAAK,kBAAA,CAAmBA,MAAK,CAAA;AAAA,MACzC,aAAA,EAAe,IAAA,CAAK,qBAAA,CAAsBA,MAAK,CAAA;AAAA,MAC/C,QAAA,EAAU,IAAA,CAAK,iBAAA,CAAkBA,MAAK,CAAA;AAAA,MACtC,UAAA,EAAY,IAAA,CAAK,mBAAA,CAAoBA,MAAK,CAAA;AAAA,MAC1C,WAAA,EAAa,IAAA,CAAK,mBAAA,CAAoBA,MAAK;AAAA,KAC7C;AAEA,IAAA,OACE,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,CAAE,OAAO,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,GAAM,OAAO,CAAC,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA;AAAA,EAE3F;AAAA,EAEQ,mBAAmB,MAAA,EAAgC;AAEzD,IAAA,IAAI,YAAA,GAAe,CAAA;AACnB,IAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC3C,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA;AAC/B,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAG3B,MAAA,MAAM,UAAA,GAAa,KAAA,EAAO,KAAA,CAAM,QAAA,CAAS,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,IAAK,EAAE,CAAA,GAAI,CAAA,GAAI,GAAA;AACjF,MAAA,YAAA,IAAgB,UAAA;AAChB,MAAA,SAAA,EAAA;AAAA,IACF;AAEA,IAAA,OAAO,SAAA,GAAY,CAAA,GAAI,YAAA,GAAe,SAAA,GAAY,GAAA;AAAA,EACpD;AAAA,EAEQ,sBAAsB,MAAA,EAAgC;AAE5D,IAAsB,IAAI,GAAA,CAAI,KAAA,CAAM,KAAA,CAAM,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAc,CAAC;AAE5E,IAAA,MAAM,aAAA,GACJ,iBAAA,CAAkB,MAAA,CAAO,CAAChB,KAAAA,KAAS,YAAA,CAAa,GAAA,CAAIA,KAAI,CAAC,CAAA,CAAE,MAAA,GAAS,iBAAA,CAAkB,MAAA;AACxF,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EAEQ,kBAAkB,MAAA,EAAgC;AAExD,IAAA,MAAM,cAAA,GACJ,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,UAAA,EAAY,CAAC,CAAA,GAAI,MAAM,KAAA,CAAM,MAAA;AAC5E,IAAA,MAAM,iBAAA,GAAoB,KAAA,CAAM,YAAA,CAAa,MAAA,GAAS,IAAI,GAAA,GAAM,CAAA;AAEhE,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,cAAA,GAAiB,iBAAiB,CAAA;AAAA,EACvD;AAAA,EAEQ,oBAAoB,MAAA,EAAgC;AAE1D,IAAA,MAAM,WAAA,GAAc,EAAE,MAAA,EAAQ,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,OAAA,EAAS,CAAA,EAAG,WAAA,EAAa,CAAA,EAAE,CACvE,KAAA,CAAM,SAAS,UACjB,CAAA;AACA,IAAA,MAAM,eAAA,GAAkB,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,WAAA,IAAe,GAAG,CAAA;AAElF,IAAA,OAAO,eAAA;AAAA,EACT;AAAA,EAEQ,oBAAoB,MAAA,EAAgC;AAE1D,IAAA,MAAM,oBAAoB,IAAI,GAAA,CAAI,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA,CAAE,IAAA;AAC7D,IAAA,MAAM,iBAAA,GAAoB,MAAM,YAAA,CAAa,MAAA;AAE7C,IAAA,MAAM,WAAA,GAAc,KAAK,GAAA,CAAI,CAAA,EAAG,oBAAoB,GAAA,GAAM,iBAAA,GAAoB,MAAM,GAAG,CAAA;AACvF,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,MAAc,+BAA+B,MAAA,EAAuC;AAClF,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,YAAA,GAAe,GAAA,EAAK;AACrC,MAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,QAC5B,IAAA,EAAM,UAAA;AAAA,QACN,WAAA,EAAa,CAAA,+BAAA,EAAkC,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA,SAAA,CAAA;AAAA,QACpE,MAAA,EAAQ;AAAA,UACN,YAAA,EAAc,CAAA;AAAA,UACd,WAAA,EAAa,CAAA;AAAA,UACb,SAAA,EAAW,CAAA;AAAA,UACX,aAAA,EAAe,CAAA;AAAA,UACf,kBAAA,EAAoB,CAAC,WAAA,EAAa,iBAAiB;AAAA,SACrD;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,MAAA,EAAQ;AAAA,YACN;AAAA,cACE,EAAA,EAAI,UAAA;AAAA,cACJ,IAAA,EAAM,kBAAA;AAAA,cACN,WAAA,EAAa,yCAAA;AAAA,cACb,QAAA,EAAU,CAAA;AAAA,cACV,YAAA,EAAc,CAAC,kBAAA,EAAoB,kBAAkB,CAAA;AAAA,cACrD,cAAc;AAAC;AACjB,WACF;AAAA,UACA,QAAA,EAAU,CAAA;AAAA,UACV,SAAA,EAAW;AAAA,YACT;AAAA,cACE,IAAA,EAAM,WAAA;AAAA,cACN,QAAA,EAAU,CAAA;AAAA,cACV,QAAA,EAAU;AAAA;AACZ,WACF;AAAA,UACA,cAAc,EAAC;AAAA,UACf,KAAA,EAAO;AAAA,YACL;AAAA,cACE,EAAA,EAAI,aAAA;AAAA,cACJ,WAAA,EAAa,2CAAA;AAAA,cACb,WAAA,EAAa,GAAA;AAAA,cACb,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY,qCAAA;AAAA,cACZ,WAAA,EAAa;AAAA;AACf;AACF,SACF;AAAA,QACA,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAc,2BAA2BgB,MAAAA,EAAsC;AAE7E,IAA0B,KAAK,cAAA,CAAe;AAE9C,IAAA,IAAA,CAAK,eAAe,gBAAA,GAAmB;AAAA,MACrC,aAAa,gBAAA,CAAiB,SAAA,GAAY,IAAA,CAAK,kBAAA,CAAmBA,MAAK,CAAA,IAAK,CAAA;AAAA,MAC5E,gBAAgB,gBAAA,CAAiB,YAAA,GAAe,IAAA,CAAK,qBAAA,CAAsBA,MAAK,CAAA,IAAK,CAAA;AAAA,MACrF,WAAW,gBAAA,CAAiB,QAAA,GAAW,IAAA,CAAK,iBAAA,CAAkBA,MAAK,CAAA,IAAK,CAAA;AAAA,MACxE,aAAa,gBAAA,CAAiB,UAAA,GAAa,IAAA,CAAK,mBAAA,CAAoBA,MAAK,CAAA,IAAK,CAAA;AAAA,MAC9E,cAAc,gBAAA,CAAiB,UAAA,GAAa,IAAA,CAAK,mBAAA,CAAoBA,MAAK,CAAA,IAAK;AAAA,KACjF;AAAA,EACF;AAAA,EAEQ,uBAAA,GAAwC;AAC9C,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,OAAA;AAAA,MACJ,QAAA,EAAU;AAAA,QACR,EAAA,EAAI,MAAA;AAAA,QACJ,IAAA,EAAM,WAAA;AAAA,QACN,WAAA,EAAa,+BAAA;AAAA,QACb,UAAU,EAAC;AAAA,QACX,UAAA,EAAY,CAAA;AAAA,QACZ,UAAU,EAAC;AAAA,QACX,cAAc;AAAC,OACjB;AAAA,MACA,QAAA,EAAU;AAAA,QACR,MAAA,EAAQ,SAAA;AAAA,QACR,WAAA,EAAa,CAAA;AAAA,QACb,QAAA,EAAU,CAAA;AAAA,QACV,WAAA,sBAAiB,IAAA,EAAK;AAAA,QACtB,UAAA,EAAY;AAAA;AACd,KACF;AAAA,EACF;AAAA,EAEQ,gBAAA,CAAiB,OAAqBN,OAAAA,EAAqC;AACjF,IAAA,IAAI,IAAA,CAAK,OAAOA,OAAAA,EAAQ;AAAC,MAAA,OAAO,IAAA;AAAA,IAAK;AAErC,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,QAAA,EAAU;AACjC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAOA,OAAM,CAAA;AAClD,MAAA,IAAI,MAAA,EAAQ;AAAC,QAAA,OAAO,MAAA;AAAA,MAAO;AAAA,IAC7B;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,wBAAwBO,KAAAA,EAA4B;AAC1D,IAAA,IAAI,QAAA,GAAW,CAAA;AACf,IAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAqB,KAAA,KAAkB;AACxD,MAAA,SAAA,EAAA;AACA,MAAA,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,KAAK,CAAA;AAEnC,MAAA,KAAA,MAAW,KAAA,IAAS,KAAK,QAAA,EAAU;AACjC,QAAA,SAAA,CAAU,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,MAC5B;AAAA,IACF,CAAA;AAEA,IAAA,SAAA,CAAUA,OAAM,CAAC,CAAA;AACjB,IAAA,OAAO,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AAAA,EACtC;AAAA,EAEQ,wBAAwB,QAAA,EAA8B;AAC5D,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AAAC,MAAA,OAAO,GAAA;AAAA,IAAI;AAEvC,IAAA,MAAM,YAAA,GAAe,SAAS,MAAA,CAAO,CAAC,KAAK,CAAA,KAAM,GAAA,GAAM,CAAA,CAAE,QAAA,EAAU,CAAC,CAAA;AACpE,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,GAAe,SAAS,MAAM,CAAA;AAAA,EACnD;AAAA,EAEQ,oBAAA,CACNT,OACAI,QAAAA,EACgB;AAChB,IAAA,MAAMM,KAAAA,GAAuB,CAACV,KAAI,CAAA;AAGlC,IAAA,KAAA,MAAW,KAAA,IAASA,MAAK,QAAA,EAAU;AACjC,MAAA,IAAI,MAAM,IAAA,KAAS,WAAA,IAAe,KAAK,iBAAA,CAAkB,KAAA,EAAOI,QAAO,CAAA,EAAG;AACxE,QAAAM,MAAK,IAAA,CAAK,GAAG,KAAK,oBAAA,CAAqB,KAAA,EAAON,QAAO,CAAC,CAAA;AACtD,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAOM,KAAAA;AAAA,EACT;AAAA,EAEQ,iBAAA,CAAkB,OAAqB,QAAA,EAA4C;AAEzF,IAAA,OAAO,KAAK,UAAA,GAAa,GAAA;AAAA,EAC3B;AAAA,EAEQ,kBAAkB,YAAA,EAAoC;AAC5D,IAAA,OACE,WAAA,CAAY,OAAO,SAAA,IAAa,CAAA,IAChC,YAAY,MAAA,CAAO,YAAA,IAAgB,CAAA,IACnC,WAAA,CAAY,QAAA,IAAY,CAAA;AAAA,EAE5B;AAAA,EAEA,MAAc,0BAA0B,YAAA,EAA0C;AAEhF,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mCAAA,EAAsC,WAAA,CAAY,WAAW,CAAA,CAAE,CAAA;AAAA,EAI7E;AAAA,EAEA,MAAc,oBAAoB,WAAA,EAA6C;AAE7E,IAAiB,UAAA,CAAW,OAAA,CAAQ,WAAA;AAEpC,IAAA,IAAI,QAAQ,QAAA,CAAS,SAAS,KAAK,OAAA,CAAQ,QAAA,CAAS,UAAU,CAAA,EAAG;AAC/D,MAAA,MAAM,IAAA,CAAK,aAAA,CAAc,UAAA,CAAW,EAAA,EAAI;AAAA,QACtC,WAAA,EAAa,CAAA,gCAAA,EAAmC,UAAA,CAAW,OAAO,CAAA,CAAA;AAAA,QAClE,QAAA,EAAU,CAAA;AAAA,QACV,OAAA,EAAS,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI;AAAA;AAAA,OACvD,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,QAAQ,QAAA,CAAS,OAAO,KAAK,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,EAAG;AAC1D,MAAA,MAAM,IAAA,CAAK,aAAA,CAAc,UAAA,CAAW,EAAA,EAAI;AAAA,QACtC,WAAA,EAAa,CAAA,oBAAA,EAAuB,UAAA,CAAW,OAAO,CAAA,CAAA;AAAA,QACtD,QAAA,EAAU,CAAA;AAAA,QACV,OAAA,EAAS,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,KAAQ,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAI;AAAA;AAAA,OACxD,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAc,2BAA2B,KAAA,EAAmC;AAC1E,IAAc,KAAA,CAAM;AAEpB,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,QAAA,EAAU;AAC9B,MAAiB,MAAM,IAAA,CAAK,kBAAkB,IAAA,CAAK,IAAA,EAAM,KAAK,QAAQ;AAEtE,MAAA,IAAI,OAAA,CAAQ,kBAAkB,EAAA,EAAI;AAChC,QAAA,MAAM,IAAA,CAAK,kBAAA;AAAA,UACT,0BAAA;AAAA,UACA,CAAA,4CAAA,EAA+C,QAAQ,eAAe,CAAA,CAAA;AAAA,UACtE,qEAAA;AAAA,UACA,6DAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBAAmB,KAAA,EAAmC;AAClE,IAAc,KAAA,CAAM;AAEpB,IAAA,IAAI,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,SAAA,EAAW;AAClC,MAAA,MAAM,IAAA,CAAK,kBAAA;AAAA,QACT,CAAA,SAAA,EAAY,KAAK,OAAO,CAAA,CAAA;AAAA,QACxB,CAAA,MAAA,EAAS,IAAA,CAAK,OAAO,CAAA,IAAA,EAAO,KAAK,SAAS,CAAA,QAAA,CAAA;AAAA,QAC1C,8DAAA;AAAA,QACA,IAAA,CAAK,SAAA,GAAY,EAAA,GACb,0DAAA,GACA,sBAAA;AAAA,QACJ;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,+BAA+B,KAAA,EAAmC;AAC9E,IAAc,KAAA,CAAM;AAEpB,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,QAC5B,IAAA,EAAM,UAAA;AAAA,QACN,WAAA,EAAa,CAAA,qBAAA,EAAwB,IAAA,CAAK,WAAW,CAAA,CAAA;AAAA,QACrD,MAAA,EAAQ;AAAA,UACN,YAAA,EAAc,KAAK,MAAA,IAAU,CAAA;AAAA,UAC7B,WAAA,EAAa,CAAA;AAAA,UACb,SAAA,EAAW,CAAA;AAAA,UACX,aAAA,EAAe,CAAA;AAAA,UACf,kBAAA,EAAoB,CAAC,eAAe;AAAA,SACtC;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,QAAQ,EAAC;AAAA,UACT,QAAA,EAAU,CAAA;AAAA,UACV,WAAW,EAAC;AAAA,UACZ,cAAc,EAAC;AAAA,UACf,OAAO;AAAC,SACV;AAAA,QACA,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAc,oBAAoB,KAAA,EAAmC;AAEnE,IAAA,OAAA,CAAQ,IAAI,CAAA,0BAAA,EAA6B,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,MAAM,IAAI,CAAA;AAAA,EACnE;AAAA,EAEA,MAAc,gBAAA,GAAkC;AAC9C,IAAA,IAAI,IAAA,CAAK,eAAA,CAAgB,IAAA,GAAO,IAAA,CAAK,OAAO,kBAAA,EAAoB;AAC9D,MAAgB,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,eAAA,CAAgB,SAAS;AACzD,MAAA,MAAM,mBAAmB,MAAA,CAAO,IAAA;AAAA,QAC9B,CAAC3B,EAAAA,EAAG,CAAA,KAAMA,EAAAA,CAAE,CAAC,CAAA,CAAE,QAAA,CAAS,YAAA,GAAe,CAAA,CAAE,CAAC,CAAA,CAAE,QAAA,CAAS;AAAA,OACvD;AAGA,MAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,QACxB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,qBAAqB,GAAG,CAAA;AAAA,QAC/C,eAAA,CAAgB;AAAA,OAClB;AACA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,EAAc,CAAA,EAAA,EAAK;AACrC,QAAA,MAAM,WAAA,GAAc,iBAAiB,CAAC,CAAA;AACtC,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,WAAA,CAAY,CAAC,CAAC,CAAA;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,MAAc,wBAAA,CAAyB,KAAA,EAAeM,UAAAA,EAAoC;AAExF,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,QAAQ,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,GAAM,IAAA,CAAK,SAAS,GAAG,CAAA;AAAA;AAAA,MAC3C,QAAA,EAAA,CAAY,IAAA,CAAK,KAAA,CAAM,eAAe,CAAA,IAAK,EAAC,EAAG,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA,GAAU,GAAA;AAAA,MACnF,WAAA,EAAa,GAAA,GAAM,IAAA,CAAK,wBAAA,CAAyB,IAAI,CAAA,GAAI;AAAA,KAC3D;AAEA,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACV,CAAA;AAAA,MACA,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,MAAA,CAAO,OAAO,QAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ,GAAA,GAAM,GAAA,EAAK,CAAC,IAAI,CAAC;AAAA,KAC9E;AAAA,EACF;AAAA,EAEA,MAAc,oBAAA,CAAqB,KAAA,EAAeA,UAAAA,EAAoC;AAEpF,IAAe,IAAA,CAAK,KAAA,CAAM,IAAI;AAC9B,IAAA,MAAM,cAAA,GACJ,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,MAAM,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA,GAAI,MAAM,MAAA,GAAS,CAAA;AACxF,IAAA,MAAM,oBAAoB,IAAA,CAAK,GAAA,CAAI,GAAG,GAAA,GAAA,CAAO,cAAA,GAAiB,MAAM,CAAC,CAAA;AAErE,IAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,iBAAiB,CAAC,CAAA;AAAA,EACrD;AAAA,EAEA,MAAc,oBAAA,CAAqB,KAAA,EAAeA,UAAAA,EAAoC;AAEpF,IAAA,MAAM,aAAA,GAAgB,6BAAA,CAA8B,IAAA,CAAK,IAAI,CAAA;AAC7D,IAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA;AAC/C,IAAA,MAAM,YAAA,GAAe,CAAC,wBAAA,CAAyB,IAAA,CAAK,IAAI,CAAA;AAExD,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,IAAI,aAAA,EAAe;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AAChC,IAAA,IAAI,WAAA,EAAa;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AAC9B,IAAA,IAAI,YAAA,EAAc;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AAE/B,IAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,EACzC;AAAA,EAEA,MAAc,oBAAA,CAAqB,KAAA,EAAeA,UAAAA,EAAoC;AAEpF,IAAA,MAAM,mBAAmB,IAAA,CAAK,KAAA,CAAM,YAAY,CAAA,IAAK,IAAI,MAAA,GAAS,CAAA;AAClE,IAAA,MAAM,aAAA,GAAgB,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAC/C,IAAA,MAAM,oBAAoB,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA,IAAK,IAAI,MAAA,GAAS,CAAA;AAEhE,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,IAAI,eAAA,EAAiB;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AAClC,IAAA,IAAI,aAAA,IAAiB,CAAC,gBAAA,EAAkB;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AACrD,IAAA,IAAI,gBAAA,EAAkB;AAAC,MAAA,KAAA,IAAS,EAAA;AAAA,IAAG;AAEnC,IAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,EACzC;AAAA,EAEA,MAAc,iBAAA,CAAkB,KAAA,EAAeA,UAAAA,EAAoC;AAEjF,IAAA,MAAM,gBAAA,GAAmB;AAAA,MACvB,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACF;AAEA,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,KAAA,MAAWP,YAAW,gBAAA,EAAkB;AACtC,MAAA,IAAIA,QAAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACtB,QAAA,KAAA,IAAS,EAAA;AAAA,MACX;AAAA,IACF;AAEA,IAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,EACzC;AAAA,EAEA,MAAc,mBAAA,CAAoB,KAAA,EAAeO,UAAAA,EAAoC;AAEnF,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,YAAA;AAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,kBAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACF;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA;AAChC,IAAA,IAAI,QAAA,GAAW,CAAA;AAEf,IAAA,KAAA,MAAWP,YAAW,YAAA,EAAc;AAClC,MAAA,QAAA,IAAA,CAAa,IAAA,CAAK,KAAA,CAAMA,QAAO,CAAA,IAAK,EAAC,EAAG,MAAA;AAAA,IAC1C;AAEA,IAAA,OAAQ,WAAW,MAAA,GAAU,GAAA;AAAA,EAC/B;AAAA,EAEA,MAAc,6BAAA,CAA8B,KAAA,EAAeO,UAAAA,EAAoC;AAC7F,IAAA,OAAO,IAAA,CAAK,yBAAyB,IAAI,CAAA;AAAA,EAC3C;AAAA,EAEQ,yBAAyBI,KAAAA,EAAsB;AAErD,IAAA,MAAM,mBAAA,GAAsB;AAAA,MAC1B,UAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA;AAAA,MACA;AAAA;AAAA,KACF;AAEA,IAAA,IAAI,WAAA,GAAc,CAAA;AAElB,IAAA,KAAA,MAAWX,YAAW,mBAAA,EAAqB;AACzC,MAAA,WAAA,IAAA,CAAgBW,KAAAA,CAAK,KAAA,CAAMX,QAAO,CAAA,IAAK,EAAC,EAAG,MAAA;AAAA,IAC7C;AAEA,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEQ,SAAS,GAAA,EAAqB;AACpC,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,UAAA,CAAW,CAAC,CAAA;AAC9B,MAAA,IAAA,GAAA,CAAQ,IAAA,IAAQ,KAAK,IAAA,GAAO,KAAA;AAC5B,MAAA,IAAA,GAAO,IAAA,GAAO,IAAA;AAAA,IAChB;AACA,IAAA,OAAO,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,EACzB;AAAA,EAEQ,wBAAA,GAA2C;AACjD,IAAA,OAAO;AAAA,MACL,WAAA,EAAa;AAAA,QACX,eAAA,EAAiB,EAAA;AAAA,QACjB,WAAA,EAAa,EAAA;AAAA,QACb,WAAA,EAAa,EAAA;AAAA,QACb,WAAA,EAAa,EAAA;AAAA,QACb,QAAA,EAAU,EAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,UAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,IAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,WAAA,EAAa;AAAA,OACf;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,UAAA,EAAY,GAAA;AAAA,QACZ,cAAA,EAAgB,IAAA;AAAA,QAChB,cAAA,EAAgB,EAAA;AAAA,QAChB,cAAA,EAAgB,CAAA;AAAA,QAChB,cAAc;AAAC,OACjB;AAAA,MACA,iBAAA,EAAmB;AAAA,QACjB,cAAA,EAAgB,MAAA;AAAA,QAChB,eAAA,EAAiB,MAAA;AAAA,QACjB,YAAY;AAAC;AACf,KACF;AAAA,EACF;AACF;;;ACjhCO,IAAM,mBAAN,MAAuB;AAAA,EACpB,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAA4B,EAAC;AAAA,EAC7B,cAAA,GAAiB,KAAA;AAAA,EACjB,gBAAA,uBAAuB,GAAA,EAAiE;AAAA,EAEhG,YAAY,OAAA,EAAiC;AAC3C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,IAClE;AAEA,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAChE;AAEA,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAChE;AAEA,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,oBAAA,CAAqB,OAAA,CAAQ,OAAO,CAAA;AACvD,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,oBAAA,CAAqB,OAAA,CAAQ,OAAO,CAAA;AACvD,IAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,iBAAA,EAAkB;AAG/C,IAAA,IAAA,CAAK,yBAAA,EAA0B;AAAA,EACjC;AAAA;AAAA,EAIA,MAAM,MAAmB,WAAA,EAAsD;AAC7E,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAC5B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,gBAAA,CAAiB,WAAW,CAAA;AAGlD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA;AACjD,IAAA,IAAI,MAAA,IAAU,IAAA,CAAK,YAAA,CAAa,MAAM,CAAA,EAAG;AACvC,MAAA,MAAA,CAAO,IAAA,EAAA;AACP,MAAA,IAAA,CAAK,gBAAA,CAAiB,eAAA,EAAA;AACtB,MAAA,OAAO;AAAA,QACL,OAAO,MAAA,CAAO,MAAA;AAAA,QACd,MAAA,EAAQ,MAAA;AAAA,QACR,UAAA,EAAY,GAAA;AAAA,QACZ,OAAA,EAAS,IAAA,CAAK,GAAA,EAAI,GAAI,UAAA;AAAA,QACtB,MAAA,EAAQ;AAAA,OACV;AAAA,IACF;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,oBAAA,CAAqB,WAAW,CAAA;AAC7D,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,sBAAA,CAA0B,aAAa,SAAS,CAAA;AAG3E,MAAA,IAAI,MAAA,CAAO,aAAa,GAAA,EAAK;AAC3B,QAAA,IAAA,CAAK,gBAAA,CAAiB,IAAI,QAAA,EAAU;AAAA,UAClC,SAAS,MAAA,CAAO,KAAA;AAAA,UAChB,SAAA,sBAAe,IAAA,EAAK;AAAA,UACpB,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAGA,MAAA,IAAA,CAAK,uBAAuB,SAAA,EAAW,IAAA,CAAK,GAAA,EAAI,GAAI,YAAY,IAAI,CAAA;AAEpE,MAAA,OAAO,OAAA;AAAA,IACT,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,uBAAuB,MAAA,EAAQ,IAAA,CAAK,GAAA,EAAI,GAAI,YAAY,KAAK,CAAA;AAClE,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,qBAAA,EAAwB,MAAA,YAAkB,KAAA,GAAQ,KAAA,CAAM,UAAU,gBAAgB,CAAA;AAAA,OACpF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,KAAA,EAAmC;AAE7C,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,KAAK,CAAA;AAG1B,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,QAAA,KAAa,UAAA,EAAY;AAC1C,MAAA,MAAM,IAAA,CAAK,aAAa,KAAK,CAAA;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,MAAM,KAAA,CACJD,MAAAA,EACA,MAAA,EACAuB,UACA,OAAA,EACe;AACf,IAAA,MAAM,aAAA,GAA6B;AAAA,MACjC,EAAA,EAAI,CAAA,MAAA,EAAS,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA,MACvB,IAAA,EAAM,iBAAA;AAAA,MACN,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB,MAAA,EAASA,QAAAA,CAAQ,QAAQ,CAAA,IAAgB,WAAA;AAAA,MACzC,SAAA,EAAYA,QAAAA,CAAQ,WAAW,CAAA,IAAgB,SAAA;AAAA,MAC/C,OAAO,EAAE,KAAA,EAAAvB,QAAO,MAAA,EAAQ,OAAA,EAAAuB,UAAS,OAAA,EAAQ;AAAA,MACzC,QAAA,EAAU;AAAA,QACR,UAAA,EAAY,UAAU,GAAA,GAAM,GAAA;AAAA,QAC5B,MAAA,EAAQ,YAAA;AAAA,QACR,QAAA,EAAU,QAAA;AAAA,QACV,IAAA,EAAM,CAAC,UAAA,EAAY,YAAY;AAAA;AACjC,KACF;AAEA,IAAA,MAAM,IAAA,CAAK,MAAM,aAAa,CAAA;AAAA,EAChC;AAAA;AAAA,EAIA,MAAM,aAAA,CACJ,KAAA,EACA,SAAA,EACA,QAAgB,EAAA,EAC0B;AAC1C,IAAA,OAAO,KAAK,KAAA,CAAuB;AAAA,MACjC,IAAA,EAAM,WAAA;AAAA,MACN,KAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAA,CACJ,QAAA,EACA,SAAA,EACA,OAAA,EACA,QAAgB,EAAA,EACwB;AACxC,IAAA,OAAO,KAAK,KAAA,CAAqB;AAAA,MAC/B,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAA,EAAG,QAAA,IAAY,EAAE,CAAA,CAAA,EAAI,SAAA,IAAa,EAAE,CAAA,CAAA,EAAI,OAAA,IAAW,EAAE,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACpE,OAAA,EAAS,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAQ;AAAA,MACxC,KAAA;AAAA,MACA,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAA,CACJG,OAAAA,EACA,UAAA,EACA,UAAA,EAC2C;AAC3C,IAAA,OAAO,KAAK,KAAA,CAAwB;AAAA,MAClC,IAAA,EAAM,WAAA;AAAA,MACN,KAAA,EAAO,GAAGA,OAAAA,IAAU,EAAE,IAAI,UAAA,IAAc,EAAE,GAAG,IAAA,EAAK;AAAA,MAClD,OAAA,EAAS,EAAE,MAAA,EAAAA,OAAAA,EAAQ,YAAY,UAAA,EAAW;AAAA,MAC1C,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,kBAAA,GAA8D;AAClE,IAAA,OAAO,KAAK,KAAA,CAAsB;AAAA,MAChC,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,0BAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,kBAAA,GAAiE;AACrE,IAAA,OAAO,KAAK,KAAA,CAAyB;AAAA,MACnC,IAAA,EAAM,YAAA;AAAA,MACN,KAAA,EAAO,kBAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,OAAA,EAA8E;AACzF,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,KAAA,CAAM;AAAA,QAC/B,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,OAAO,OAAA,CAAQ,KAAA;AAAA,QACf,KAAA,EAAO,QAAQ,KAAA,IAAS;AAAA,OACzB,CAAA;AAED,MAAA,OAAO,KAAA,CAAM,QAAQ,MAAA,CAAO,KAAK,IAAI,MAAA,CAAO,KAAA,GAAQ,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,IACnE,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,IAAA,CAAK,yBAAyB,MAAM,CAAA;AAC5C,MAAA,OAAO,EAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAM,WAAA,GAA6B;AACjC,IAAA,IAAI;AAEF,MAAA,IAAA,CAAK,iBAAiB,KAAA,EAAM;AAC5B,MAAA,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA;AAGzB,MAAA,IAAA,CAAK,YAAA,EAAa;AAElB,MAAA,OAAA,CAAQ,IAAI,6BAA6B,CAAA;AAAA,IAC3C,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,MAAM,CAAA;AAC/C,MAAA,MAAM,MAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAIA,MAAc,qBAAqB,KAAA,EAA6D;AAC9F,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,OAAA,EAAS,IAAA,CAAK,eAAA,CAAgB,KAAA,CAAM,OAAO,CAAA;AAAA,MAC3C,UAAA,EAAY,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA;AAAA,MAC5C,IAAA,EAAM,IAAA,CAAK,iBAAA,CAAkB,KAAA,CAAM,IAAI,CAAA;AAAA,MACvC,WAAA,EAAa,IAAA,CAAK,cAAA,CAAe,KAAK;AAAA,KACxC;AAEA,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,qBAAA,CAAsB,QAAQ,CAAA;AACzD,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,qBAAA,CAAsB,QAAQ,CAAA;AAGzD,IAAA,QAAQ,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,0BAAA;AAA4B,MAC1D,KAAK,kBAAA;AACH,QAAA,OAAO,aAAA,GAAgB,MAAM,SAAA,GAAY,MAAA;AAAA,MAE3C,KAAK,kBAAA;AACH,QAAA,OAAO,aAAA,GAAgB,MAAM,SAAA,GAAY,MAAA;AAAA,MAE3C,KAAK,UAAA;AAAA,MACL;AACE,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,aAAA,GAAgB,aAAa,IAAI,GAAA,EAAK;AACjD,UAAA,OAAO,MAAA;AAAA,QACT;AACA,QAAA,OAAO,aAAA,GAAgB,gBAAgB,SAAA,GAAY,SAAA;AAAA;AACvD,EACF;AAAA,EAEQ,gBAAgB,OAAA,EAA0B;AAChD,IAAA,QAAQ,OAAA;AAAS,MACf,KAAK,UAAA;AACH,QAAA,OAAO,CAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAA,OAAO,GAAA;AAAA,MACT,KAAK,QAAA;AACH,QAAA,OAAO,GAAA;AAAA,MACT,KAAK,KAAA;AACH,QAAA,OAAO,GAAA;AAAA,MACT;AACE,QAAA,OAAO,GAAA;AAAA;AACX,EACF;AAAA,EAEQ,sBAAsB,KAAA,EAA4B;AACxD,IAAA,IAAI,UAAA,GAAa,GAAA;AAGjB,IAAA,IAAI,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,GAAA,EAAK;AAAC,MAAA,UAAA,IAAc,GAAA;AAAA,IAAI;AACjD,IAAA,IAAI,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,GAAA,EAAK;AAAC,MAAA,UAAA,IAAc,GAAA;AAAA,IAAI;AAGjD,IAAA,IAAI,KAAA,CAAM,WAAW,MAAA,CAAO,IAAA,CAAK,MAAM,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AAAC,MAAA,UAAA,IAAc,GAAA;AAAA,IAAI;AAG/E,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,WAAA;AACH,QAAA,UAAA,IAAc,GAAA;AACd,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,UAAA,IAAc,GAAA;AACd,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,UAAA,IAAc,GAAA;AACd,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,UAAA,IAAc,GAAA;AACd,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,UAAA,IAAc,CAAA;AACd,QAAA;AAAA;AAGJ,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAK,UAAU,CAAA;AAAA,EACjC;AAAA,EAEQ,kBAAkBf,KAAAA,EAAoD;AAC5E,IAAA,QAAQA,KAAAA;AAAM,MACZ,KAAK,WAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA,MACtC,KAAK,SAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA,MACtC,KAAK,YAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA,MACtC,KAAK,WAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA,MACtC,KAAK,SAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA,MACtC;AACE,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAAA;AACxC,EACF;AAAA,EAEQ,eAAe,KAAA,EAA4B;AACjD,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAA;AAC5C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,gBAAA,CAAiB,GAAA,CAAI,QAAQ,CAAA;AACjD,IAAA,OAAO,SAAS,GAAA,GAAM,GAAA;AAAA,EACxB;AAAA,EAEQ,sBAAsB,QAAA,EAAkC;AAC9D,IAAA,MAAM,cAAA,GAAiB,QAAQ,OAAA,GAAU,GAAA;AACzC,IAAA,MAAM,kBAAA,GAAA,CAAsB,CAAA,GAAI,OAAA,CAAQ,UAAA,IAAc,GAAA;AACtD,IAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,IAAA,CAAK,OAAA,GAAU,GAAA;AAC/C,IAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,GAAc,GAAA;AAE1C,IAAA,OAAO,cAAA,GAAiB,qBAAqB,eAAA,GAAkB,WAAA;AAAA,EACjE;AAAA,EAEQ,sBAAsB,QAAA,EAAkC;AAC9D,IAAA,MAAM,gBAAA,GAAmB,QAAQ,UAAA,GAAa,GAAA;AAC9C,IAAA,MAAM,eAAA,GAAA,CAAmB,CAAA,GAAI,OAAA,CAAQ,OAAA,IAAW,GAAA;AAChD,IAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,IAAA,CAAK,OAAA,GAAU,GAAA;AAC/C,IAAA,MAAM,aAAA,GAAgB,GAAA;AAEtB,IAAA,OAAO,gBAAA,GAAmB,kBAAkB,eAAA,GAAkB,aAAA;AAAA,EAChE;AAAA;AAAA,EAIA,MAAc,sBAAA,CACZ,KAAA,EACA,QAAA,EAC4B;AAC5B,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,SAAA;AACH,QAAA,OAAO,IAAA,CAAK,wBAAwB,KAAK,CAAA;AAAA,MAE3C,KAAK,SAAA;AACH,QAAA,OAAO,IAAA,CAAK,wBAAwB,KAAK,CAAA;AAAA,MAE3C,KAAK,MAAA;AACH,QAAA,OAAO,IAAA,CAAK,yBAAyB,KAAK,CAAA;AAAA,MAE5C;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsB,QAAQ,CAAA,CAAE,CAAA;AAAA;AACpD,EACF;AAAA,EAEA,MAAc,wBAA2B,KAAA,EAAgD;AACvF,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAC5B,IAAA,IAAI,OAAA;AAEJ,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,WAAA;AACH,QAAA,OAAA,GAAW,MAAM,KAAK,OAAA,CAAQ,oBAAA;AAAA,UAC5B,KAAA,CAAM,KAAA;AAAA,UACN,KAAA,CAAM,aAAa,EAAC;AAAA,UACpB,KAAA,CAAM;AAAA,SACR;AACA,QAAA;AAAA,MAEF,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,SAAQ,GAAI,KAAA,CAAM,WAAW,EAAC;AAC3D,QAAA,OAAA,GAAW,MAAM,KAAK,OAAA,CAAQ,gBAAA;AAAA,UAC5B,QAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,KAAA,CAAM;AAAA,SACR;AACA,QAAA;AAAA,MACF;AAAA,MAEA,KAAK,YAAA;AACH,QAAA,OAAA,GAAW,MAAM,IAAA,CAAK,OAAA,CAAQ,iBAAA,CAAkB,eAAe,CAAA;AAC/D,QAAA;AAAA,MAEF;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA;AAGtE,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,OAAA;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,GAAA;AAAA,MACZ,OAAA,EAAS,IAAA,CAAK,GAAA,EAAI,GAAI,UAAA;AAAA,MACtB,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAAA,EAEA,MAAc,wBAA2B,KAAA,EAAgD;AACvF,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAC5B,IAAA,IAAI,OAAA;AAEJ,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,EAAE,QAAAe,OAAAA,EAAQ,UAAA,EAAY,YAAW,GAAI,KAAA,CAAM,WAAW,EAAC;AAC7D,QAAA,OAAA,GAAW,MAAM,KAAK,OAAA,CAAQ,qBAAA;AAAA,UAC5B;AAAA,YACE,MAAA,EAAQA,OAAAA;AAAA,YACR,UAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,CAAM;AAAA,SACR;AACA,QAAA;AAAA,MACF;AAAA,MAEA,KAAK,SAAA;AACH,QAAA,OAAA,GAAU,KAAK,OAAA,CAAQ,iBAAA;AACvB,QAAA;AAAA,MAEF;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA;AAGtE,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,OAAA;AAAA,MACP,MAAA,EAAQ,SAAA;AAAA,MACR,UAAA,EAAY,GAAA;AAAA,MACZ,OAAA,EAAS,IAAA,CAAK,GAAA,EAAI,GAAI,UAAA;AAAA,MACtB,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAAA,EAEA,MAAc,yBAA4B,KAAA,EAAgD;AACxF,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,EAAI;AAE5B,IAAA,IAAI;AAEF,MAAA,MAAM,CAAC,aAAA,EAAe,aAAa,CAAA,GAAI,MAAM,QAAQ,UAAA,CAAW;AAAA,QAC9D,KAAK,uBAAA,CAA2B,KAAK,CAAA,CAAE,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA,QACvD,KAAK,uBAAA,CAA2B,KAAK,CAAA,CAAE,KAAA,CAAM,MAAM,IAAI;AAAA,OACxD,CAAA;AAGD,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,cAAA,CAAkB,KAAA,EAAO,eAAe,aAAa,CAAA;AAElF,MAAA,OAAO;AAAA,QACL,OAAO,cAAA,CAAe,KAAA;AAAA,QACtB,MAAA,EAAQ,MAAA;AAAA,QACR,YAAY,cAAA,CAAe,UAAA;AAAA,QAC3B,OAAA,EAAS,IAAA,CAAK,GAAA,EAAI,GAAI,UAAA;AAAA,QACtB,MAAA,EAAQ,KAAA;AAAA,QACR,aAAa,cAAA,CAAe;AAAA,OAC9B;AAAA,IACF,SAAS,MAAA,EAAQ;AAEf,MAAA,MAAM,oBACJ,KAAA,CAAM,IAAA,KAAS,eAAe,KAAA,CAAM,IAAA,KAAS,YAAY,SAAA,GAAY,SAAA;AACvE,MAAA,OAAO,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,iBAAiB,CAAA;AAAA,IAC7D;AAAA,EACF;AAAA,EAEQ,cAAA,CACN,KAAA,EACA,aAAA,EACA,aAAA,EAC+D;AAC/D,IAAA,MAAM,UAAU,aAAA,CAAc,MAAA,KAAW,WAAA,GAAc,aAAA,CAAc,OAAO,KAAA,GAAQ,IAAA;AACpF,IAAA,MAAM,UAAU,aAAA,CAAc,MAAA,KAAW,WAAA,GAAc,aAAA,CAAc,OAAO,KAAA,GAAQ,IAAA;AAGpF,IAAA,IAAI,WAAW,OAAA,EAAS;AAEtB,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA,GAAI,GAAA;AACxD,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,cAAc,OAAA,GAAU,OAAA;AAAA,QAC/B,UAAA,EAAY,IAAA;AAAA,QACZ,WAAA,EAAa,IAAA,CAAK,2BAAA,CAA4B,OAAA,EAAS,OAAO;AAAA,OAChE;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,GAAA,EAAI;AAAA,IAC3C;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,IAAA,EAAK;AAAA,IAC5C;AAGA,IAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,EAC3D;AAAA,EAEQ,2BAAA,CAA+B,SAAY,OAAA,EAA2B;AAE5E,IAAA,OAAO;AAAA,MACL;AAAA,QACE,EAAA,EAAI,CAAA,WAAA,EAAc,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA;AAAA,QAC5B,IAAA,EAAM,aAAA;AAAA,QACN,WAAA,EAAa,mDAAA;AAAA,QACb,MAAA,EAAQ;AAAA,UACN,YAAA,EAAc,CAAA;AAAA,UACd,WAAA,EAAa,CAAA;AAAA,UACb,SAAA,EAAW,CAAA;AAAA,UACX,aAAA,EAAe,CAAA;AAAA,UACf,kBAAA,EAAoB,CAAC,eAAe;AAAA,SACtC;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,QAAQ,EAAC;AAAA,UACT,QAAA,EAAU,CAAA;AAAA,UACV,WAAW,EAAC;AAAA,UACZ,cAAc,EAAC;AAAA,UACf,OAAO;AAAC,SACV;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,aAAa,KAAA,EAAmC;AACpD,IAAA,IAAI;AAEF,MAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,qBAAA,CAAsB,KAAK,CAAA;AAEzD,MAAA,MAAM,QAAQ,GAAA,CAAI;AAAA,QAChB,eAAA,CAAgB,UAAU,IAAA,CAAK,OAAA,CAAQ,mBAAmB,KAAK,CAAA,GAAI,QAAQ,OAAA,EAAQ;AAAA,QACnF,eAAA,CAAgB,UAAU,IAAA,CAAK,OAAA,CAAQ,mBAAmB,KAAK,CAAA,GAAI,QAAQ,OAAA;AAAQ,OACpF,CAAA;AAGD,MAAA,MAAM,IAAA,CAAK,eAAe,KAAK,CAAA;AAAA,IACjC,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,8BAAA,EAAiC,KAAA,CAAM,EAAE,KAAK,MAAM,CAAA;AAAA,IACpE;AAAA,EACF;AAAA,EAEQ,sBAAsB,KAAA,EAA4D;AACxF,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,iBAAA;AAAA,MACL,KAAK,qBAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAAA,MAEzC,KAAK,SAAA;AAAA,MACL,KAAK,qBAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,IAAA,EAAK;AAAA,MAEzC,KAAK,iBAAA;AAAA,MACL,KAAK,aAAA;AACH,QAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,IAAA,EAAK;AAAA,MAExC;AACE,QAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAAA;AAC3C,EACF;AAAA,EAEA,MAAc,eAAe,KAAA,EAAmC;AAE9D,IAAA,IAAI,KAAA,CAAM,SAAS,iBAAA,EAAmB;AACpC,MAAc,KAAA,CAAM;AAEpB,MAAA,IAAI,IAAA,CAAK,YAAY,KAAA,EAAO;AAE1B,QAAA,MAAM,IAAA,CAAK,QAAQ,kBAAA,CAAmB;AAAA,UACpC,IAAA,EAAM,WAAA;AAAA,UACN,WAAA,EAAa,CAAA,qBAAA,EAAwB,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,UAC/C,MAAA,EAAQ;AAAA,YACN,YAAA,EAAc,CAAA;AAAA,YACd,WAAA,EAAa,CAAA;AAAA,YACb,SAAA,EAAW,CAAA;AAAA,YACX,aAAA,EAAe,CAAA;AAAA,YACf,kBAAA,EAAoB,CAAC,gBAAgB;AAAA,WACvC;AAAA,UACA,cAAA,EAAgB;AAAA,YACd,QAAQ,EAAC;AAAA,YACT,QAAA,EAAU,CAAA;AAAA,YACV,WAAW,EAAC;AAAA,YACZ,cAAc,EAAC;AAAA,YACf,OAAO;AAAC,WACV;AAAA,UACA,QAAA,EAAU;AAAA,SACX,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAIQ,yBAAA,GAAkC;AAExC,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,IACzB,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,YAAY,CAAA;AAGvC,IAAA,WAAA;AAAA,MACE,MAAM;AACJ,QAAA,IAAA,CAAK,YAAA,EAAa;AAAA,MACpB,CAAA;AAAA,MACA,IAAI,EAAA,GAAK;AAAA,KACX;AAGA,IAAA,WAAA;AAAA,MACE,MAAM;AACJ,QAAA,IAAA,CAAK,cAAA,EAAe;AAAA,MACtB,CAAA;AAAA,MACA,KAAK,EAAA,GAAK;AAAA,KACZ;AAAA,EACF;AAAA,EAEA,MAAc,iBAAA,GAAmC;AAC/C,IAAA,IAAI,IAAA,CAAK,cAAA,IAAkB,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,EAAG;AACvD,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAEtB,IAAA,IAAI;AAEF,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,SAAA;AAC3C,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,GAAG,UAAU,CAAA;AAEnD,MAAA,MAAM,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,YAAA,CAAa,KAAK,CAAC,CAAC,CAAA;AAAA,IAClE,CAAA,SAAE;AACA,MAAA,IAAA,CAAK,cAAA,GAAiB,KAAA;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,YAAA,GAAqB;AAE3B,IAAA,MAAM,OAAA,GAAU,KAAK,EAAA,GAAK,GAAA;AAE1B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,KAAK,IAAA,CAAK,gBAAA,CAAiB,SAAQ,EAAG;AAC3D,MAAA,MAAM,MAAM,GAAA,CAAI,OAAA,EAAQ,GAAI,MAAA,CAAO,UAAU,OAAA,EAAQ;AAErD,MAAA,IAAI,GAAA,GAAM,OAAA,IAAW,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG;AACpC,QAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,GAAG,CAAA;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,cAAA,GAAgC;AAC5C,IAAA,IAAI;AAEF,MAAA,MAAM,IAAA,CAAK,QAAQ,cAAA,EAAe;AAGlC,MAAA,IAAI,IAAA,CAAK,gBAAA,CAAiB,IAAA,GAAO,GAAA,EAAM;AACrC,QAAA,MAAM,WAAW,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,gBAAA,CAAiB,SAAS,CAAA;AAC3D,QAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,IAAA,CAAK,CAACxB,EAAAA,EAAG,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,GAAOA,EAAAA,CAAE,CAAC,EAAE,IAAI,CAAA;AAGnE,QAAA,IAAA,CAAK,iBAAiB,KAAA,EAAM;AAC5B,QAAA,aAAA,CAAc,KAAA,CAAM,GAAG,GAAG,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACpD,UAAA,IAAA,CAAK,gBAAA,CAAiB,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,QACtC,CAAC,CAAA;AAAA,MACH;AAAA,IACF,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,+BAA+B,MAAM,CAAA;AAAA,IACrD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAA,GAAmC;AACjC,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAA,GAAmC;AACjC,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EACd;AAAA;AAAA,EAIQ,iBAAiB,KAAA,EAA4B;AACnD,IAAA,MAAM,cAAc,KAAA,CAAM,OAAA,GAAU,KAAK,SAAA,CAAU,KAAA,CAAM,OAAO,CAAA,GAAI,EAAA;AACpE,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,SAAA,GAAY,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,EAAA;AAEhF,IAAA,OAAO,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,KAAA,CAAM,SAAS,EAAE,CAAA,CAAA;AAAA,EAC1F;AAAA,EAEQ,aAAa,MAAA,EAAoD;AACvE,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,EAAI,GAAI,MAAA,CAAO,UAAU,OAAA,EAAQ;AAClD,IAAA,MAAM,OAAA,GAAU,KAAK,EAAA,GAAK,GAAA;AAE1B,IAAA,OAAO,GAAA,GAAM,OAAA;AAAA,EACf;AAAA,EAEQ,sBAAA,CACN,QAAA,EACA,OAAA,EACA,OAAA,EACM;AACN,IAAA,IAAA,CAAK,gBAAA,CAAiB,eAAA,EAAA;AACtB,IAAA,IAAA,CAAK,gBAAA,CAAiB,cAAA,GAAA,CAAkB,IAAA,CAAK,gBAAA,CAAiB,iBAAiB,OAAA,IAAW,CAAA;AAE1F,IAAA,IAAI,QAAA,KAAa,SAAA,IAAa,QAAA,KAAa,MAAA,EAAQ;AACjD,MAAA,IAAA,CAAK,gBAAA,CAAiB,iBAAA,EAAA;AAAA,IACxB;AAEA,IAAA,IAAI,QAAA,KAAa,SAAA,IAAa,QAAA,KAAa,MAAA,EAAQ;AACjD,MAAA,IAAA,CAAK,gBAAA,CAAiB,iBAAA,EAAA;AAAA,IACxB;AAEA,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAA,CAAK,iBAAiB,SAAA,GAAA,CACnB,IAAA,CAAK,iBAAiB,SAAA,GAAY,CAAA,IAAK,KAAK,gBAAA,CAAiB,eAAA;AAAA,IAClE;AAAA,EACF;AAAA,EAEQ,iBAAA,GAA4C;AAClD,IAAA,OAAO;AAAA,MACL,eAAA,EAAiB,CAAA;AAAA,MACjB,iBAAA,EAAmB,CAAA;AAAA,MACnB,iBAAA,EAAmB,CAAA;AAAA,MACnB,cAAA,EAAgB,CAAA;AAAA,MAChB,YAAA,EAAc,CAAA;AAAA,MACd,SAAA,EAAW,CAAA;AAAA,MACX,SAAA,sBAAe,IAAA;AAAK,KACtB;AAAA,EACF;AAAA;AAAA,EAIA,UAAA,GAAqC;AAEnC,IAAA,MAAM,oBAAoB,KAAA,CAAM,IAAA,CAAK,KAAK,gBAAA,CAAiB,MAAA,EAAQ,CAAA,CAAE,MAAA;AAAA,MACnE,CAAC,GAAA,EAAK,MAAA,KAAW,GAAA,GAAM,MAAA,CAAO,IAAA;AAAA,MAC9B;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,gBAAA,CAAiB,eACpB,IAAA,CAAK,gBAAA,CAAiB,kBAAkB,CAAA,GACpC,iBAAA,GAAoB,IAAA,CAAK,gBAAA,CAAiB,eAAA,GAC1C,CAAA;AAEN,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,gBAAA,EAAiB;AAAA,EACpC;AAAA,EAEA,YAAA,GAAqB;AACnB,IAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,iBAAA,EAAkB;AAAA,EACjD;AAAA,EAEA,YAAA,GAAuB;AACrB,IAAA,OAAO,KAAK,gBAAA,CAAiB,IAAA;AAAA,EAC/B;AAAA,EAEA,YAAA,GAAuB;AACrB,IAAA,OAAO,KAAK,UAAA,CAAW,MAAA;AAAA,EACzB;AAAA;AAAA,EAIA,MAAM,UAAA,GAA4B;AAChC,IAAA,IAAI;AAEF,MAAA,IAAA,CAAK,YAAA,EAAa;AAGlB,MAAA,IAAA,CAAK,iBAAiB,KAAA,EAAM;AAAA,IAG9B,SAAS,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,KAAA,CAAM,0CAA0C,MAAM,CAAA;AAC9D,MAAA,MAAM,MAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAIA,aAAa,SAAA,EAAkD;AAC7D,IAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,SAAS,CAAA;AAAA,EACtC;AAAA,EAEA,SAAA,GAAoC;AAClC,IAAA,OAAO,EAAE,GAAG,IAAA,CAAK,MAAA,EAAO;AAAA,EAC1B;AAAA,EAEA,MAAM,aAAA,GAiBH;AACD,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,KAAK,UAAA,EAAW;AAGjC,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,UAAA,EAAY,CAAA;AAAA;AAAA,QACZ,QAAA,EAAU,CAAA;AAAA;AAAA,QACV,WAAA,EAAa,CAAA;AAAA;AAAA,QACb,YAAA,EAAc,QAAQ,YAAA,IAAgB;AAAA,OACxC;AAGA,MAAA,MAAM,aAAA,GAAgB;AAAA,QACpB,eAAA,EAAiB,CAAA;AAAA;AAAA,QACjB,aAAA,EAAe,CAAA;AAAA;AAAA,QACf,cAAA,EAAgB,CAAA;AAAA;AAAA,QAChB,WAAA,EAAa;AAAA;AAAA,OACf;AAEA,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,aAAA;AAAA,QACT,OAAA,EAAS,aAAA;AAAA,QACT,WAAA,EAAa;AAAA,UACX,eAAA,EAAiB,QAAQ,cAAA,IAAkB,EAAA;AAAA,UAC3C,WAAA,EAAa,OAAA,CAAQ,WAAA,EAAY,CAAE;AAAA;AACrC,OACF;AAAA,IACF,SAAS,MAAA,EAAQ;AAEf,MAAA,OAAO;AAAA,QACL,OAAA,EAAS;AAAA,UACP,UAAA,EAAY,CAAA;AAAA,UACZ,QAAA,EAAU,CAAA;AAAA,UACV,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc;AAAA,SAChB;AAAA,QACA,OAAA,EAAS;AAAA,UACP,eAAA,EAAiB,CAAA;AAAA,UACjB,aAAA,EAAe,CAAA;AAAA,UACf,cAAA,EAAgB,CAAA;AAAA,UAChB,WAAA,EAAa;AAAA,SACf;AAAA,QACA,WAAA,EAAa;AAAA,UACX,eAAA,EAAiB,EAAA;AAAA,UACjB,WAAA,EAAa;AAAA;AACf,OACF;AAAA,IACF;AAAA,EACF;AACF;CC53BiB;AAAA,EACf,QAAA,EAAU,SAAA,CAAU,EAAA,CAAG,QAAQ,CAAA;AAAA,EAC/B,SAAA,EAAW,SAAA,CAAU,EAAA,CAAG,SAAS,CAAA;AAAA,EACjC,MAAA,EAAQ,SAAA,CAAU,EAAA,CAAG,MAAM,CAAA;AAAA,EAC3B,KAAA,EAAO,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA;AAAA,EACzB,KAAA,EAAO,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA;AAAA,EACzB,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,OAAO,CAAA;AAAA,EAC7B,IAAA,EAAM,SAAA,CAAU,EAAA,CAAG,IAAI,CAAA;AAAA,EACvB,QAAA,EAAU,SAAA,CAAU,EAAA,CAAG,QAAQ,CAAA;AAAA,EAC/B,MAAA,EAAQ,SAAA,CAAU,EAAA,CAAG,MAAM,CAAA;AAAA,EAC3B,MAAA,EAAQ,SAAA,CAAU,EAAA,CAAG,MAAM,CAAA;AAAA,EAC3B,QAAA,EAAU,SAAA,CAAU,EAAA,CAAG,QAAQ,CAAA;AAAA,EAC/B,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,OAAO,CAAA;AAAA,EAC7B,QAAA,EAAU,SAAA,CAAU,EAAA,CAAG,QAAQ,CAAA;AAAA,EAC/B,KAAA,EAAO,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA;AAAA,EACzB,KAAA,EAAO,SAAA,CAAU,EAAA,CAAG,KAAK,CAAA;AAAA,EACzB,KAAA,EAAO,SAAA,CAAU,EAAA,CAAG,KAAK;AAC3B;AAiCO,IAAM,iBAAA,GAAN,MAAM,kBAAA,CAAkB;AAAA,EAC7B,OAAe,QAAA;AAAA,EACP,eAKH,EAAC;AAAA,EAEN,OAAc,WAAA,GAAiC;AAC7C,IAAA,IAAI,CAAC,mBAAkB,QAAA,EAAU;AAC/B,MAAA,kBAAA,CAAkB,QAAA,GAAW,IAAI,kBAAA,EAAkB;AAAA,IACrD;AACA,IAAA,OAAO,kBAAA,CAAkB,QAAA;AAAA,EAC3B;AAAA,EAEQ,WAAA,GAAc;AAAA,EAAC;AAAA;AAAA,EAGvB,MAAM,QAAA,CAAS,SAAA,EAAmB,QAAA,GAA2B,MAAA,EAAkC;AAC7F,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAC3C,MAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,QAAA,CAAS,eAAe,QAAQ,CAAA;AAC/D,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,aAAA,EAAe,IAAI,CAAA;AAC7C,MAAA,OAAO,QAAA;AAAA,IACT,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AACzC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,MAAM,SAAA,CACJ4B,SAAAA,EACA,OAAA,EACA,OAAA,GAAgC,EAAC,EAClB;AACf,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQA,SAAQ,CAAA;AAE3C,MAAA,IAAI,QAAQ,MAAA,IAAW,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,EAAI;AACxD,QAAA,MAAM,IAAA,CAAK,aAAa,aAAa,CAAA;AAAA,MACvC;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,IAAIb,MAAAA,CAAM,MAAA,CAAO,CAAA,0BAAA,EAA6B,aAAa,EAAE,CAAC,CAAA;AACtE,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAC,CAAA;AAC5D,MAAA,MAAM,OAAA,CAAQ,SAAA,CAAU,aAAA,EAAe,OAAO,CAAA;AAE9C,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,aAAA,EAAe,IAAI,CAAA;AAAA,IAChD,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAASa,SAAAA,EAAU,KAAK,CAAA;AAC1C,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwBA,SAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,SAAA,EAAmB,OAAA,GAAgC,EAAC,EAAkB;AACrF,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAE3C,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,EAAI;AACvC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,aAAa,CAAA,CAAE,CAAA;AAAA,MACzD;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,MAAM,IAAA,CAAK,aAAa,aAAa,CAAA;AAAA,MACvC;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,IAAIb,MAAAA,CAAM,MAAA,CAAO,CAAA,wBAAA,EAA2B,aAAa,EAAE,CAAC,CAAA;AACpE,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,CAAQ,OAAO,aAAa,CAAA;AAClC,MAAA,IAAA,CAAK,YAAA,CAAa,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AAAA,IACjD,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AAC3C,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,QAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACvE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,eAAA,CAAgB,QAAA,EAAkB,OAAA,GAAgC,EAAC,EAAkB;AACzF,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAE1C,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,IAAIA,MAAAA,CAAM,MAAA,CAAO,CAAA,kCAAA,EAAqC,aAAa,EAAE,CAAC,CAAA;AAC9E,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,CAAQ,MAAM,aAAA,EAAe,EAAE,WAAW,OAAA,CAAQ,SAAA,IAAa,MAAM,CAAA;AAC3E,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,aAAA,EAAe,IAAI,CAAA;AAAA,IAChD,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,OAAA,EAAS,KAAK,CAAA;AACzC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,OAAO,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,MAAM,eAAA,CAAgB,QAAA,EAAkB,OAAA,GAAgC,EAAC,EAAkB;AACzF,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAE1C,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,EAAI;AACvC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,aAAa,CAAA,CAAE,CAAA;AAAA,MAC9D;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,IAAIA,MAAAA,CAAM,MAAA,CAAO,CAAA,kCAAA,EAAqC,aAAa,EAAE,CAAC,CAAA;AAC9E,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,QAAA,MAAM,IAAA,CAAK,yBAAyB,aAAa,CAAA;AAAA,MACnD,CAAA,MAAO;AACL,QAAA,MAAM,OAAA,CAAQ,MAAM,aAAa,CAAA;AAAA,MACnC;AAEA,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,aAAA,EAAe,IAAI,CAAA;AAAA,IAChD,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,OAAA,EAAS,KAAK,CAAA;AACzC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,OAAO,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,CAAc,QAAA,EAAkB,OAAA,GAAyB,EAAC,EAAyB;AACvF,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA;AAC1C,MAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,OAAA,CAAQ,aAAa,CAAA;AACpD,MAAA,MAAM,UAAuB,EAAC;AAE9B,MAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,QAAA,IAAI,CAAC,OAAA,CAAQ,aAAA,IAAiB,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACnD,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA;AACjD,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,YAAA,CAAa,UAAU,CAAA;AAEjD,QAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,UAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,MAAA,IAAU,CAAC,MAAM,MAAA,EAAQ;AAAC,YAAA;AAAA,UAAS;AACxD,UAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,CAAC,MAAM,WAAA,EAAa;AAAC,YAAA;AAAA,UAAS;AAAA,QACpE;AAEA,QAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,UAAA,MAAM,SAAS,OAAA,CAAQ,aAAA,GACnB,KAAA,CAAM,IAAA,CAAK,SAAS,OAAA,CAAQ,OAAO,CAAA,GACnC,KAAA,CAAM,KAAK,WAAA,EAAY,CAAE,SAAS,OAAA,CAAQ,OAAA,CAAQ,aAAa,CAAA;AACnE,UAAA,IAAI,CAAC,MAAA,EAAQ;AAAC,YAAA;AAAA,UAAS;AAAA,QACzB;AAEA,QAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MACrB;AAEA,MAAA,IAAA,CAAK,YAAA,CAAa,SAAA,EAAW,aAAA,EAAe,IAAI,CAAA;AAChD,MAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAACf,EAAAA,EAAG,CAAA,KAAM;AAC5B,QAAA,IAAIA,EAAAA,CAAE,WAAA,IAAe,CAAC,CAAA,CAAE,WAAA,EAAa;AAAC,UAAA,OAAO,CAAA,CAAA;AAAA,QAAG;AAChD,QAAA,IAAI,CAACA,EAAAA,CAAE,WAAA,IAAe,CAAA,CAAE,WAAA,EAAa;AAAC,UAAA,OAAO,CAAA;AAAA,QAAE;AAC/C,QAAA,OAAOA,EAAAA,CAAE,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,IAAI,CAAA;AAAA,MACpC,CAAC,CAAA;AAAA,IACH,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,SAAA,EAAW,OAAA,EAAS,KAAK,CAAA;AAC3C,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,OAAO,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACzE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,QAAA,CACJ,UAAA,EACA,QAAA,EACA,OAAA,GAAgC,EAAC,EAClB;AACf,IAAA,IAAI;AACF,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAC/C,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAE3C,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,MAAA,CAAO,eAAe,CAAA,EAAI;AACzC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,eAAe,CAAA,CAAE,CAAA;AAAA,MAClE;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,GAAA,CAAIe,OAAM,MAAA,CAAO,CAAA,sBAAA,EAAyB,eAAe,CAAA,QAAA,EAAM,aAAa,EAAE,CAAC,CAAA;AACvF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAC,CAAA;AAE5D,MAAA,IAAK,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,IAAM,CAAC,QAAQ,KAAA,EAAO;AACxD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iCAAA,EAAoC,aAAa,CAAA,CAAE,CAAA;AAAA,MACrE;AAEA,MAAA,MAAM,OAAA,CAAQ,QAAA,CAAS,eAAA,EAAiB,aAAa,CAAA;AAErD,MAAA,IAAI,QAAQ,kBAAA,EAAoB;AAC9B,QAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,IAAA,CAAK,eAAe,CAAA;AACvD,QAAA,MAAM,GAAG,QAAA,CAAS,MAAA,CAAO,eAAe,WAAA,CAAY,KAAA,EAAO,YAAY,KAAK,CAAA;AAAA,MAC9E;AAEA,MAAA,IAAA,CAAK,aAAa,MAAA,EAAQ,CAAA,EAAG,eAAe,CAAA,QAAA,EAAM,aAAa,IAAI,IAAI,CAAA;AAAA,IACzE,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,aAAa,MAAA,EAAQ,CAAA,EAAG,UAAU,CAAA,QAAA,EAAM,QAAQ,IAAI,KAAK,CAAA;AAC9D,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,MAAM,QAAA,CACJ,UAAA,EACA,QAAA,EACA,OAAA,GAAgC,EAAC,EAClB;AACf,IAAA,IAAI;AACF,MAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAC/C,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAE3C,MAAA,IAAI,CAAE,MAAM,IAAA,CAAK,MAAA,CAAO,eAAe,CAAA,EAAI;AACzC,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,eAAe,CAAA,CAAE,CAAA;AAAA,MAClE;AAEA,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,GAAA,CAAIA,OAAM,MAAA,CAAO,CAAA,sBAAA,EAAyB,eAAe,CAAA,QAAA,EAAM,aAAa,EAAE,CAAC,CAAA;AACvF,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,CAAK,qBAAA,CAAsB,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAC,CAAA;AAE5D,MAAA,IAAK,MAAM,IAAA,CAAK,MAAA,CAAO,aAAa,CAAA,IAAM,CAAC,QAAQ,KAAA,EAAO;AACxD,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iCAAA,EAAoC,aAAa,CAAA,CAAE,CAAA;AAAA,MACrE;AAEA,MAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,eAAA,EAAiB,aAAa,CAAA;AACnD,MAAA,IAAA,CAAK,aAAa,MAAA,EAAQ,CAAA,EAAG,eAAe,CAAA,QAAA,EAAM,aAAa,IAAI,IAAI,CAAA;AAAA,IACzE,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,aAAa,MAAA,EAAQ,CAAA,EAAG,UAAU,CAAA,QAAA,EAAM,QAAQ,IAAI,KAAK,CAAA;AAC9D,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CACJ,OAAA,EACA,OAAA,EACA,OAAA,GAAgC,EAAC,EAClB;AACf,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,EAChD;AAAA;AAAA,EAGA,MAAM,SAAA,CAAU,WAAA,EAAqB,OAAA,GAAyB,EAAC,EAAyB;AACtF,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAC7C,MAAA,MAAM,UAAuB,EAAC;AAE9B,MAAA,MAAM,IAAA,CAAK,kBAAA,CAAmB,aAAA,EAAe,OAAA,EAAS,SAAS,CAAC,CAAA;AAEhE,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,aAAA,EAAe,IAAI,CAAA;AAC7C,MAAA,OAAO,OAAA;AAAA,IACT,SAAS,MAAA,EAAQ;AACf,MAAA,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,UAAA,EAAY,KAAK,CAAA;AAC3C,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,MAAM,MAAMb,QAAAA,EAAyC;AACnD,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,MAAc,KAAA,CAAM,OAAA,EAAS,CAACA,QAAO,CAAC;AACtC,MAAA,IAAI,MAAA,GAAS,EAAA;AAEb,MAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,MAAA,EAAQ,CAACY,KAAAA,KAAS;AAC/B,QAAA,MAAA,IAAUA,MAAK,QAAA,EAAS;AAAA,MAC1B,CAAC,CAAA;AAED,MAAA,IAAA,CAAK,EAAA,CAAG,OAAA,EAAS,CAACJ,KAAAA,KAAS;AACzB,QAAA,IAAIA,UAAS,CAAA,EAAG;AACd,UAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,QACd;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,IAAA,CAAKX,QAAAA,EAAiB,OAAA,GAAyB,EAAC,EAAsB;AAE1E,IAAA,MAAM,aAAA,GAAgBA,QAAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,aAAa,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,IAAK,IAAA;AAC9D,IAAA,MAAM,YAAA,GAAe,aAAA,CAAc,YAAA,CAAa,MAAA,GAAS,CAAC,CAAA;AAE1D,IAAA,IAAI;AAEF,MAAA,MAAM,aAAA,GAAgB,YAAA,CACnB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAA,CACnB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAErB,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW;AAAA,QAC7C,GAAG,OAAA;AAAA,QACH,QAAA,EAAU,IAAI,aAAa,CAAA,CAAA,CAAA;AAAA,QAC3B,KAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACP,CAAA;AAED,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAAA,IAChC,SAAS,MAAA,EAAQ;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2BA,QAAO,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACxE;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,OAAO6B,SAAAA,EAAoC;AAC/C,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQA,SAAQ,CAAC,CAAA;AAC3C,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,aAAaA,SAAAA,EAAsC;AACvD,IAAA,IAAI;AACF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,OAAA,CAAQA,SAAQ,CAAA;AAC3C,MAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AAChD,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,aAAa,CAAA;AAEzC,MAAA,OAAO;AAAA,QACL,KAAA;AAAA,QACA,IAAA,EAAM,aAAA;AAAA,QACN,MAAA,EAAQ,MAAM,MAAA,EAAO;AAAA,QACrB,WAAA,EAAa,MAAM,WAAA,EAAY;AAAA,QAC/B,SAAA,EAAW,MAAM,cAAA,EAAe;AAAA,QAChC,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,SAAS,KAAA,CAAM,SAAA;AAAA,QACf,UAAU,KAAA,CAAM,KAAA;AAAA,QAChB,WAAA,EAAA,CAAc,MAAM,IAAA,GAAO,QAAA,CAAS,OAAO,CAAC,CAAA,EAAG,SAAS,CAAC;AAAA,OAC3D;AAAA,IACF,SAAS,MAAA,EAAQ;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiCA,SAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IAC/E;AAAA,EACF;AAAA,EAEA,MAAM,YAAYA,SAAAA,EAAmC;AACnD,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQA,SAAQ,CAAC,CAAA;AAAA,IACtD,SAAS,MAAA,EAAQ;AACf,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmCA,SAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,IACjF;AAAA,EACF;AAAA,EAEA,eAAA,GAAiG;AAC/F,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,YAAY,CAAA;AAAA,EAC9B;AAAA,EAEA,iBAAA,GAA0B;AACxB,IAAA,IAAA,CAAK,eAAe,EAAC;AAAA,EACvB;AAAA;AAAA,EAGA,MAAc,sBAAsBC,QAAAA,EAAgC;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,QAAQ,KAAA,CAAMA,QAAAA,EAAS,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,IAClD,SAAS,MAAA,EAAQ;AACf,MAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,QAAA,MAAM,MAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,aAAaD,SAAAA,EAAiC;AAC1D,IAAA,MAAM,cAAc,CAAA,EAAGA,SAAQ,CAAA,QAAA,EAAW,IAAA,CAAK,KAAK,CAAA,CAAA;AACpD,IAAA,MAAM,OAAA,CAAQ,QAAA,CAASA,SAAAA,EAAU,WAAW,CAAA;AAAA,EAC9C;AAAA,EAEA,MAAc,yBAAyBC,QAAAA,EAAgC;AACrE,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,OAAA,CAAQA,QAAO,CAAA;AAE9C,IAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAKA,QAAAA,EAAS,KAAK,CAAA;AAC3C,MAAe,MAAM,OAAA,CAAQ,KAAA,CAAM,UAAU;AAE7C,MAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,QAAA,MAAM,IAAA,CAAK,yBAAyB,UAAU,CAAA;AAAA,MAChD,CAAA,MAAO;AACL,QAAA,MAAM,OAAA,CAAQ,OAAO,UAAU,CAAA;AAAA,MACjC;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,CAAQ,MAAMA,QAAO,CAAA;AAAA,EAC7B;AAAA,EAEA,MAAc,kBAAA,CACZC,WAAAA,EACA,OAAA,EACA,SACA,KAAA,EACe;AACf,IAAA,IAAI,OAAA,CAAQ,QAAA,IAAY,KAAA,IAAS,OAAA,CAAQ,QAAA,EAAU;AACjD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,OAAA,CAAQA,WAAU,CAAA;AAEjD,MAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,QAAA,IAAI,CAAC,OAAA,CAAQ,aAAA,IAAiB,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACnD,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAKA,WAAAA,EAAY,KAAK,CAAA;AAC9C,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,YAAA,CAAa,UAAU,CAAA;AAGjD,QAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,UAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,GACrB,IAAI,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,OAAA,CAAQ,aAAA,GAAgB,GAAA,GAAM,IAAI,CAAA,GAC9D,IAAA;AACJ,UAAA,MAAM,MAAA,GAAS,WACX,OAAA,CAAQ,IAAA,CAAK,MAAM,IAAI,CAAA,GACvB,OAAA,CAAQ,aAAA,GACN,KAAA,CAAM,IAAA,CAAK,SAAS,OAAA,CAAQ,OAAO,CAAA,GACnC,KAAA,CAAM,IAAA,CAAK,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,WAAA,EAAa,CAAA;AAErE,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,cAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,MAAA,IAAU,KAAA,CAAM,MAAA,EAAQ;AAAC,gBAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,cAAE;AACnE,cAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,KAAA,CAAM,WAAA,EAAa;AAAC,gBAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,cAAE;AAC7E,cAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAAC,gBAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,cAAE;AAAA,YACrD,CAAA,MAAO;AACL,cAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,YACrB;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,CAAC,OAAA,CAAQ,OAAA,EAAS;AAC3B,UAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,YAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,MAAA,IAAU,KAAA,CAAM,MAAA,EAAQ;AAAC,cAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,YAAE;AACnE,YAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,KAAA,CAAM,WAAA,EAAa;AAAC,cAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,YAAE;AAC7E,YAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAAC,cAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,YAAE;AAAA,UACrD,CAAA,MAAO;AACL,YAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,UACrB;AAAA,QACF;AAGA,QAAA,IAAI,MAAM,WAAA,KAAgB,OAAA,CAAQ,cAAA,IAAkB,CAAC,MAAM,SAAA,CAAA,EAAY;AACrE,UAAA,MAAM,KAAK,kBAAA,CAAmB,UAAA,EAAY,OAAA,EAAS,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,QACvE;AAAA,MACF;AAAA,IACF,SAAS,MAAA,EAAQ;AAAA,IAEjB;AAAA,EACF;AAAA,EAEQ,YAAA,CAAa,UAAA,EAAoBH,KAAAA,EAAc,OAAA,EAAwB;AAC7E,IAAA,IAAA,CAAK,aAAa,IAAA,CAAK;AAAA,MACrB,SAAA;AAAA,MACA,IAAA,EAAAA,KAAAA;AAAA,MACA,SAAA,sBAAe,IAAA,EAAK;AAAA,MACpB;AAAA,KACD,CAAA;AAGD,IAAA,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,GAAA,EAAM;AACnC,MAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,KAAA,CAAM,IAAK,CAAA;AAAA,IACnD;AAAA,EACF;AACF;AAEkC,kBAAkB,WAAA","file":"index.js","sourcesContent":["export interface ProcessedInput {\n original: string;\n normalized: string;\n tokens: string[];\n stems: string[];\n entities: Entity[];\n language: string;\n sentiment?: number;\n _keywords: string[];\n}\n\nexport interface Entity {\n text: string;\n type: 'code' | 'file' | 'url' | 'number' | 'command' | 'language' | 'framework';\n value: unknown;\n position: number;\n}\n\nexport class NaturalLanguageProcessor {\n private stopWords: Map<string, Set<string>>;\n private contractionMap: Map<string, string>;\n private initialized: boolean = false;\n\n constructor() {\n this.stopWords = new Map();\n this.contractionMap = new Map();\n this.initializeStopWords();\n this.initializeContractions();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize any async resources if needed\n this.initialized = true;\n }\n\n async process(input: string, language: string = 'en'): Promise<ProcessedInput> {\n const normalized = this.normalize(input, language);\n const tokens = this.tokenize(normalized, language);\n const stems = this.stem(tokens, language);\n const entities = this.extractEntities(input);\n const _keywords = this.extractKeywords(tokens, language);\n\n return {\n original: input,\n normalized,\n tokens,\n stems,\n entities,\n language,\n _keywords,\n };\n }\n\n private normalize(text: string, language: string): string {\n let normalized = text.toLowerCase().trim();\n\n // Expand contractions for English\n if (language === 'en') {\n this.contractionMap.forEach((expanded, contraction) => {\n const _regex = new RegExp(`\\\\b${contraction}\\\\b`, 'gi');\n normalized = normalized.replace(_regex, expanded);\n });\n }\n\n // Remove extra whitespace\n normalized = normalized.replace(/\\s+/g, ' ');\n\n // Language-specific normalization\n switch (language) {\n case 'ja':\n // Japanese specific normalization\n normalized = this.normalizeJapanese(normalized);\n break;\n case 'cn':\n // Chinese specific normalization\n normalized = this.normalizeChinese(normalized);\n break;\n case 'ko':\n // Korean specific normalization\n normalized = this.normalizeKorean(normalized);\n break;\n case 'vn':\n // Vietnamese specific normalization\n normalized = this.normalizeVietnamese(normalized);\n break;\n }\n\n return normalized;\n }\n\n private tokenize(text: string, language: string): string[] {\n switch (language) {\n case 'ja':\n return this.tokenizeJapanese(text);\n case 'cn':\n return this.tokenizeChinese(text);\n case 'ko':\n return this.tokenizeKorean(text);\n case 'vn':\n return this.tokenizeVietnamese(text);\n default:\n return this.tokenizeEnglish(text);\n }\n }\n\n private tokenizeEnglish(text: string): string[] {\n // Simple word boundary tokenization for English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private tokenizeJapanese(text: string): string[] {\n // Simplified Japanese tokenization\n // In production, use a proper tokenizer like kuromoji\n const tokens: string[] = [];\n const _patterns = [\n /[\\u4e00-\\u9faf]+/g, // Kanji\n /[\\u3040-\\u309f]+/g, // Hiragana\n /[\\u30a0-\\u30ff]+/g, // Katakana\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (_matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private tokenizeChinese(text: string): string[] {\n // Simplified Chinese tokenization\n // In production, use a proper tokenizer like jieba\n const tokens: string[] = [];\n\n // Character-based tokenization for Chinese\n for (const char of text) {\n if (/[\\u4e00-\\u9faf]/.test(char)) {\n tokens.push(char);\n } else if (/[a-zA-Z0-9]+/.test(char)) {\n tokens.push(char);\n }\n }\n\n return tokens;\n }\n\n private tokenizeKorean(text: string): string[] {\n // Simplified Korean tokenization\n const tokens: string[] = [];\n const _patterns = [\n /[\\uac00-\\ud7af]+/g, // Hangul\n /[a-zA-Z]+/g, // English\n /\\d+/g, // Numbers\n ];\n\n patterns.forEach((pattern) => {\n const _matches = text.match(pattern);\n if (_matches) {tokens.push(...matches);}\n });\n\n return tokens;\n }\n\n private stem(tokens: string[], language: string): string[] {\n // Simple stemming - in production, use proper stemming libraries\n if (language !== 'en') {\n return tokens; // Skip stemming for non-English\n }\n\n return tokens.map((token) => {\n // Very basic English stemming rules\n let stem = token;\n\n // Remove common suffixes\n if (stem.endsWith('ing')) {stem = stem.slice(0, -3);}\n else if (stem.endsWith('ed')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('ly')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('es')) {stem = stem.slice(0, -2);}\n else if (stem.endsWith('s') && stem.length > 3) {stem = stem.slice(0, -1);}\n\n return stem;\n });\n }\n\n private extractEntities(text: string): Entity[] {\n const entities: Entity[] = [];\n\n // Extract file paths\n const filePattern = /(?:\\/[\\w.-]+)+(?:\\.\\w+)?|(?:[a-zA-Z]:[\\\\/][\\w\\\\/.-]+)/g;\n const fileMatches = text.match(filePattern);\n if (fileMatches) {\n fileMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'file',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract URLs\n const _urlPattern = /https?:\\/\\/[^\\s]+/g;\n const _urlMatches = text.match(_urlPattern);\n if (_urlMatches) {\n urlMatches.forEach((match) => {\n entities.push({\n text: match,\n type: 'url',\n value: match,\n position: text.indexOf(match),\n });\n });\n }\n\n // Extract programming _languages\n const _languages = [\n 'javascript',\n 'typescript',\n 'python',\n 'java',\n 'rust',\n 'go',\n 'c++',\n 'c#',\n 'ruby',\n 'php',\n ];\n languages.forEach((lang) => {\n // Escape special _regex characters\n const _escapedLang = lang.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const _regex = new RegExp(`\\\\b${_escapedLang}\\\\b`, 'gi');\n const _matches = text.match(_regex);\n if (_matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'language',\n value: lang,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n // Extract frameworks\n const frameworks = [\n 'react',\n 'vue',\n 'angular',\n 'next.js',\n 'express',\n 'django',\n 'flask',\n 'rails',\n 'spring',\n ];\n frameworks.forEach((framework) => {\n const _regex = new RegExp(`\\\\b${framework}\\\\b`, 'gi');\n const _matches = text.match(_regex);\n if (_matches) {\n matches.forEach((match) => {\n entities.push({\n text: match,\n type: 'framework',\n value: framework,\n position: text.indexOf(match),\n });\n });\n }\n });\n\n return entities;\n }\n\n private extractKeywords(tokens: string[], language: string): string[] {\n const stopWords = this.stopWords.get(language) ?? new Set();\n\n // Filter out stop words and short tokens\n const _keywords = tokens.filter((token) => {\n return token.length > 2 && !stopWords.has(token.toLowerCase());\n });\n\n // Sort by frequency\n const frequency = new Map<string, number>();\n keywords.forEach((keyword) => {\n frequency.set(keyword, (frequency.get(keyword) ?? 0) + 1);\n });\n\n return Array.from(frequency.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10)\n .map(([keyword]) => keyword);\n }\n\n private normalizeJapanese(text: string): string {\n // Convert full-width characters to half-width\n return text.replace(/[ļ¼”-Za-z0-ļ¼™]/g, (char) => {\n return String.fromCharCode(char.charCodeAt(0) - 0xfee0);\n });\n }\n\n private normalizeChinese(text: string): string {\n // Convert traditional to simplified (simplified implementation)\n // In production, use a proper conversion library\n return text;\n }\n\n private normalizeKorean(text: string): string {\n // Korean normalization\n return text;\n }\n\n private normalizeVietnamese(text: string): string {\n // Vietnamese normalization - lowercase only, keep tones\n return text.toLowerCase();\n }\n\n private tokenizeVietnamese(text: string): string[] {\n // Vietnamese tokenization - word-based similar to English\n return text.split(/\\s+/).filter((token) => token.length > 0);\n }\n\n private initializeStopWords(): void {\n // English stop words\n this.stopWords.set(\n 'en',\n new Set([\n 'a',\n 'an',\n 'and',\n 'are',\n 'as',\n 'at',\n 'be',\n 'by',\n 'for',\n 'from',\n 'has',\n 'he',\n 'in',\n 'is',\n 'it',\n 'its',\n 'of',\n 'on',\n 'that',\n 'the',\n 'to',\n 'was',\n 'will',\n 'with',\n 'the',\n 'this',\n 'these',\n 'those',\n 'i',\n 'you',\n 'we',\n 'they',\n 'what',\n 'which',\n 'who',\n 'when',\n 'where',\n 'how',\n 'can',\n 'could',\n 'should',\n 'would',\n 'may',\n 'might',\n 'must',\n 'do',\n 'does',\n 'did',\n 'have',\n 'had',\n 'get',\n 'got',\n 'make',\n 'made',\n ]),\n );\n\n // Japanese particles and common words\n this.stopWords.set(\n 'ja',\n new Set([\n '恮',\n '悒',\n '恫',\n 'は',\n 'が',\n 'と',\n '恧',\n '恦',\n '悂',\n '恋悉',\n 'まで',\n '悈悊',\n 'へ',\n '悄',\n 'など',\n '恧恙',\n 'ます',\n '恙悋',\n '恗恟',\n '恓悌',\n '恝悌',\n '恂悌',\n '恓恮',\n 'ćć®',\n '恂恮',\n ]),\n );\n\n // Chinese common words\n this.stopWords.set(\n 'cn',\n new Set([\n 'ēš„',\n 'äŗ†',\n '在',\n '是',\n 'ꈑ',\n '꜉',\n '和',\n 'å°±',\n 'äø',\n 'äŗŗ',\n '都',\n 'äø€',\n '一个',\n '上',\n '也',\n '很',\n '到',\n '诓',\n '要',\n '去',\n 'ä½ ',\n '会',\n 'ē€',\n 'ę²”ęœ‰',\n 'ēœ‹',\n '儽',\n '自己',\n 'čæ™',\n '那',\n ]),\n );\n\n // Korean particles and common words\n this.stopWords.set(\n 'ko',\n new Set([\n 'ģ˜',\n '넼',\n 'ģ„',\n '에',\n 'ź°€',\n 'ģ“',\n 'ģ€',\n 'ėŠ”',\n '와',\n 'ź³¼',\n 'ģ—ģ„œ',\n '으딜',\n '딜',\n '부터',\n 'ź¹Œģ§€',\n 'ģž…ė‹ˆė‹¤',\n 'ķ•©ė‹ˆė‹¤',\n 'ģ“ė‹¤',\n 'ķ•˜ė‹¤',\n ]),\n );\n\n // Vietnamese common words\n this.stopWords.set(\n 'vn',\n new Set([\n 'vĆ ',\n 'cį»§a',\n 'lĆ ',\n 'có',\n 'được',\n 'trong',\n 'vį»›i',\n 'nĆ y',\n 'cho',\n 'Ä‘į»ƒ',\n 'khĆ“ng',\n 'nhʰng',\n 'cÅ©ng',\n 'nhʰ',\n 'từ',\n 'đến',\n 'sau',\n 'trước',\n 'mį»™t',\n 'cĆ”c',\n 'bị',\n 'đã',\n 'sįŗ½',\n 'khi',\n 'nįŗæu',\n 'thƬ',\n 'vƬ',\n 'hoįŗ·c',\n 'hay',\n 'rįŗ„t',\n ]),\n );\n }\n\n private initializeContractions(): void {\n // Common English contractions\n this.contractionMap.set(\"don't\", 'do not');\n this.contractionMap.set(\"won't\", 'will not');\n this.contractionMap.set(\"can't\", 'cannot');\n this.contractionMap.set(\"n't\", ' not');\n this.contractionMap.set(\"'re\", ' are');\n this.contractionMap.set(\"'ve\", ' have');\n this.contractionMap.set(\"'ll\", ' will');\n this.contractionMap.set(\"'d\", ' would');\n this.contractionMap.set(\"'m\", ' am');\n this.contractionMap.set(\"let's\", 'let us');\n this.contractionMap.set(\"it's\", 'it is');\n this.contractionMap.set(\"that's\", 'that is');\n this.contractionMap.set(\"what's\", 'what is');\n this.contractionMap.set(\"there's\", 'there is');\n this.contractionMap.set(\"here's\", 'here is');\n }\n\n async detectIntent(processedInput: ProcessedInput): Promise<string[]> {\n // Extract potential intents based on _keywords\n const intents: string[] = [];\n const _keywords = `${processedInput.keywords.join(' ') } ${ processedInput.normalized}`;\n\n // Code-related intents\n if (/\\b(write|create|generate|implement|build|code|program|develop)\\b/i.test(_keywords)) {\n intents.push('code_generation');\n }\n\n // Image-related intents\n if (/\\b(image|picture|photo|draw|illustrate|visual|graphic)\\b/i.test(_keywords)) {\n intents.push('image_generation');\n }\n\n // Video-related intents\n if (/\\b(video|movie|animation|clip|film)\\b/i.test(_keywords)) {\n intents.push('video_generation');\n }\n\n // Test-related intents\n if (/\\b(test|testing|unit test|integration test|e2e)\\b/i.test(_keywords)) {\n intents.push('test_generation');\n }\n\n // Review-related intents\n if (/\\b(review|check|analyze|improve|refactor|optimize)\\b/i.test(_keywords)) {\n intents.push('code_review');\n }\n\n return intents;\n }\n}\n","import { ProcessedInput } from '../infra/NaturalLanguageProcessor';\nimport type { CommandIntent, RouterConfig } from '../types/common-types';\n\nexport interface RecognizedIntent {\n command: string;\n confidence: number;\n alternatives?: Array<{ command: string; confidence: number }>;\n reasoning?: string;\n}\n\ninterface IntentPattern {\n command: string;\n patterns: RegExp[];\n keywords: string[];\n weight: number;\n}\n\ninterface ContextClue {\n before: string[];\n after: string[];\n weight: number;\n}\n\nexport interface IntentRecognizerDependencies {\n knownCommands: string[];\n}\n\nexport class IntentRecognizer {\n private config: Required<RouterConfig>;\n private intentPatterns: Map<string, IntentPattern[]>;\n private contextClues: Map<string, ContextClue>;\n private commandHistory: string[] = [];\n private initialized: boolean = false;\n private dependencies: IntentRecognizerDependencies;\n private metrics = {\n totalCalls: 0,\n nullReturns: 0,\n fuzzyOnlyBlocked: 0,\n responseTimes: [] as number[],\n };\n\n constructor(\n config: Required<RouterConfig>,\n dependencies: IntentRecognizerDependencies\n ) {\n this.config = config;\n this.dependencies = dependencies;\n this.intentPatterns = new Map();\n this.contextClues = new Map();\n this.initializePatterns();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Initialize ML models or other async resources if needed\n this.initialized = true;\n }\n\n async recognize(input: ProcessedInput): Promise<RecognizedIntent | null> {\n const startTime = performance.now();\n this.metrics.totalCalls++;\n \n // Input length limit (ReDoS protection)\n if ((input.normalized?.length ?? 0) > 8192) {\n this.metrics.nullReturns++;\n return null;\n }\n \n const scores = new Map<string, number>();\n\n // Calculate scores in specific order (fuzzy last)\n // 1. Pattern matching score\n this.calculatePatternScores(input, scores);\n\n // 2. Keyword matching score\n this.calculateKeywordScores(input, scores);\n\n // 3. Context-based scoring\n this.calculateContextScores(input, scores);\n\n // 4. Entity-based scoring (with adjusted weights)\n this.calculateEntityScores(input, scores);\n\n // 5. Historical pattern scoring\n this.calculateHistoricalScores(input, scores);\n\n // 6. Fuzzy command matching LAST (to avoid overriding)\n this.calculateFuzzyCommandScores(input, scores);\n \n // Early rejection for fuzzy-only matches\n if (scores.size === 1 && (scores.values().next().value ?? 0) <= 5.0) {\n this.metrics.nullReturns++;\n this.metrics.fuzzyOnlyBlocked++;\n return null;\n }\n\n // Get top candidates\n const candidates = Array.from(scores.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, this.config.maxAlternatives + 1);\n\n if (candidates.length === 0) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n // Normalize scores to confidence values with cap\n const maxScore = Math.max(candidates[0]?.[1] ?? 1, 1e-9);\n const normalizedCandidates = candidates.map(([command, score]) => {\n const rawConfidence = score / maxScore;\n // Apply cap to prevent fuzzy-only high confidence\n const confidence = Math.min(rawConfidence, 0.7);\n return { command, confidence };\n });\n \n // Minimum confidence threshold\n const minConfidence = 0.35;\n if (normalizedCandidates[0]?.confidence < minConfidence) {\n this.metrics.nullReturns++;\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n return null;\n }\n\n const topCandidate = normalizedCandidates[0];\n if (!topCandidate) {\n throw new Error('No candidates found for intent recognition');\n }\n const alternatives = normalizedCandidates.slice(1);\n\n const elapsed = performance.now() - startTime;\n this.metrics.responseTimes.push(elapsed);\n \n return {\n command: topCandidate.command,\n confidence: topCandidate.confidence,\n alternatives: alternatives.length > 0 ? alternatives : undefined,\n reasoning: this.generateReasoning(input, topCandidate.command),\n };\n }\n\n private calculatePatternScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let score = 0;\n\n // Check regex patterns\n pattern.patterns.forEach((regex) => {\n if (regex.test(input.normalized)) {\n score += pattern.weight;\n }\n if (regex.test(input.original)) {\n score += pattern.weight * 0.5;\n }\n });\n\n if (score > 0) {\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateKeywordScores(input: ProcessedInput, scores: Map<string, number>): void {\n const patterns = this.intentPatterns.get(input.language) ?? this.intentPatterns.get('en') ?? [];\n\n patterns.forEach((pattern) => {\n let matchCount = 0;\n\n pattern.keywords.forEach((keyword) => {\n if (input.keywords.includes(keyword.toLowerCase())) {\n matchCount++;\n }\n if (input.tokens.includes(keyword.toLowerCase())) {\n matchCount += 0.5;\n }\n });\n\n if (matchCount > 0) {\n const score = matchCount * pattern.weight * 0.8;\n const currentScore = scores.get(pattern.command) ?? 0;\n scores.set(pattern.command, currentScore + score);\n }\n });\n }\n\n private calculateContextScores(_input: ProcessedInput, scores: Map<string, number>): void {\n // Use command history for context\n if (this.commandHistory.length > 0) {\n const lastCommand = this.commandHistory[this.commandHistory.length - 1];\n\n // Boost related commands\n const relatedCommands = this.getRelatedCommands(lastCommand ?? '');\n relatedCommands.forEach((command) => {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + 0.5);\n });\n }\n }\n\n private calculateEntityScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Adjusted entity weights (0.2-0.3 range)\n const entityWeights = {\n code: 0.25, // Reduced to prevent /code bias\n language: 0.25,\n framework: 0.25,\n file: 0.3,\n url: 0.3,\n number: 0.2,\n default: 0.2\n };\n \n input.entities.forEach((entity) => {\n const weight = entityWeights[entity.type as keyof typeof entityWeights] ?? entityWeights.default;\n \n switch (entity.type) {\n case 'code':\n case 'language':\n case 'framework':\n this.boostScore(scores, '/code', weight * 2);\n this.boostScore(scores, '/test', weight);\n this.boostScore(scores, '/review', weight);\n break;\n case 'file':\n this.boostScore(scores, '/code', weight * 0.5);\n this.boostScore(scores, '/review', weight);\n this.boostScore(scores, '/export', weight * 0.5);\n break;\n case 'url':\n this.boostScore(scores, '/image', weight);\n this.boostScore(scores, '/video', weight);\n break;\n }\n });\n }\n\n private calculateHistoricalScores(_input: ProcessedInput, scores: Map<string, number>): void {\n // Skip if no history\n if (this.commandHistory.length === 0) {\n return;\n }\n \n const recent = this.commandHistory.slice(-10); // Last 10 commands\n const base = 0.2;\n \n for (let i = 0; i < recent.length; i++) {\n // Skip consecutive duplicates to prevent over-boosting\n if (i > 0 && recent[i] === recent[i - 1]) continue;\n \n // Exponential decay based on recency\n const weight = base * Math.exp(-(recent.length - 1 - i) * 0.1);\n const cmd = recent[i];\n scores.set(cmd, (scores.get(cmd) ?? 0) + weight);\n }\n \n // Maintain history size limit\n if (this.commandHistory.length > 100) {\n this.commandHistory = this.commandHistory.slice(-100);\n }\n }\n\n private boostScore(scores: Map<string, number>, command: string, boost: number): void {\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, currentScore + boost);\n }\n\n private getRelatedCommands(command: string): string[] {\n const relationships: Record<string, string[]> = {\n '/code': ['/test', '/review', '/commit'],\n '/test': ['/code', '/review'],\n '/review': ['/code', '/test', '/commit'],\n '/image': ['/video'],\n '/video': ['/image'],\n '/init': ['/add-dir', '/setup'],\n '/setup': ['/init', '/config'],\n '/config': ['/settings', '/setup'],\n };\n\n return relationships[command] ?? [];\n }\n\n private generateReasoning(input: ProcessedInput, _command: string): string {\n const reasons: string[] = [];\n\n if (input.keywords.length > 0) {\n reasons.push(`Keywords detected: ${input.keywords.slice(0, 3).join(', ')}`);\n }\n\n if (input.entities.length > 0) {\n const entityTypes = [...new Set(input.entities.map((e) => e.type))];\n reasons.push(`Entities found: ${entityTypes.join(', ')}`);\n }\n\n return reasons.join('; ');\n }\n\n async updateModel(_input: string, correctCommand: string, _wasCorrect: boolean): Promise<void> {\n // Update command history\n this.commandHistory.push(correctCommand);\n if (this.commandHistory.length > 100) {\n this.commandHistory.shift();\n }\n\n // In a real implementation, this would update ML model weights\n // For now, we just track the feedback\n }\n \n // Get performance metrics\n getMetrics() {\n const times = this.metrics.responseTimes.slice(-10000); // Last 10k\n if (times.length === 0) {\n return {\n p95_ms: 0,\n avg_ms: 0,\n total: 0,\n null_rate: 0,\n fuzzy_only_blocked: 0\n };\n }\n \n const sorted = [...times].sort((a, b) => a - b);\n const p95Index = Math.floor(sorted.length * 0.95);\n \n return {\n p95_ms: sorted[p95Index] ?? 0,\n avg_ms: times.reduce((a, b) => a + b, 0) / times.length,\n total: this.metrics.totalCalls,\n null_rate: this.metrics.totalCalls > 0 \n ? this.metrics.nullReturns / this.metrics.totalCalls \n : 0,\n fuzzy_only_blocked: this.metrics.fuzzyOnlyBlocked\n };\n }\n\n private initializePatterns(): void {\n // English patterns\n const englishPatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^help$/i,\n /\\b(help|assistance|guide|usage)\\b/i,\n /how\\s+to\\s+use/i,\n /\\bshow\\s+(me\\s+)?(commands|options)\\b/i,\n ],\n keywords: ['help', 'assistance', 'guide', 'usage', 'commands', 'options'],\n weight: 10.0, // Highest priority\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^status$/i,\n /\\b(status|state|condition|health)\\b/i,\n /check\\s+(status|health|state)/i,\n /\\bhow.*doing\\b/i,\n ],\n keywords: ['status', 'state', 'condition', 'health', 'check'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^version$/i,\n /\\b(version|ver|build|release)\\b/i,\n /what\\s+(version|ver)/i,\n /\\bshow\\s+(version|ver)\\b/i,\n ],\n keywords: ['version', 'ver', 'build', 'release'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^test$/i,\n /\\b(test|testing|spec|unit.*test|integration.*test)\\b/i,\n /\\b(run|execute|start).*test/i,\n /\\btest.*(?:suite|case|file)/i,\n ],\n keywords: ['test', 'testing', 'spec', 'unit', 'integration', 'jest', 'mocha'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^brain$/i,\n /\\b(brain|mode|thinking|cognitive)\\b/i,\n /\\bchange.*mode/i,\n /\\b(switch|activate).*brain/i,\n ],\n keywords: ['brain', 'mode', 'thinking', 'cognitive', 'switch'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /\\b(write|create|generate|implement|build|code|program|develop|make)\\b.*\\b(code|function|class|component|script|program|app)\\b/i,\n /\\b(implement|create|write|build)\\s+(?:a\\s+)?(\\w+)/i,\n /\\bcode\\s+(?:for|to)\\b/i,\n ],\n keywords: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'function',\n 'class',\n 'component',\n ],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /\\b(create|generate|make|draw|design|produce)\\b.*\\b(image|picture|photo|illustration|graphic|visual|art)\\b/i,\n /\\b(image|picture|photo|illustration|graphic)\\s+of\\b/i,\n /\\bdraw\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n ],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /\\b(create|generate|make|produce|render)\\b.*\\b(video|movie|animation|clip|film)\\b/i,\n /\\b(video|animation|movie)\\s+of\\b/i,\n /\\banimate\\s+(?:a\\s+)?(\\w+)/i,\n ],\n keywords: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /\\b(write|create|generate)\\b.*\\b(test|tests|testing|unit test|integration test)\\b/i,\n /\\btest\\s+(?:for|the)\\b/i,\n /\\b(unit|integration|e2e)\\s+test/i,\n ],\n keywords: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /\\b(review|check|analyze|improve|refactor|optimize)\\b.*\\b(code|implementation|function)\\b/i,\n /\\bcode\\s+review\\b/i,\n /\\b(improve|optimize|refactor)\\s+this\\b/i,\n ],\n keywords: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality'],\n weight: 1.0,\n },\n // Math commands\n {\n command: '/calc',\n patterns: [\n /\\b(calculate|compute|calc|evaluate|solve)\\b.*\\b(expression|equation|formula|math)\\b/i,\n /\\b(what\\s+is|compute|calculate)\\s+\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/i,\n /\\b(sin|cos|tan|sqrt|log|exp|pow|abs)\\s*\\(/i,\n /^\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /\\b(math|mathematical)\\s+(expression|calculation)/i,\n ],\n keywords: ['calculate', 'compute', 'calc', 'math', 'evaluate', 'expression', 'formula', 'sin', 'cos', 'sqrt'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /\\b(solve|find|resolve)\\b.*\\b(equation|system|root|solution|variable)\\b/i,\n /\\bsolve\\s+for\\s+[a-z]/i,\n /\\b(equation|equations)\\s+(system|solving)/i,\n /\\bfind\\s+(root|solution|value)\\s+of\\b/i,\n /[a-z]\\s*[\\^]\\s*\\d+\\s*[\\+\\-]\\s*\\d+\\s*=\\s*\\d+/i,\n ],\n keywords: ['solve', 'equation', 'system', 'root', 'solution', 'find', 'variable', 'unknown'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /\\b(plot|graph|draw|visualize|chart)\\b.*\\b(function|equation|data|curve)\\b/i,\n /\\b(draw|create|make)\\s+(graph|plot|chart)\\s+of\\b/i,\n /\\bplot\\s+[a-z]\\s*=\\s*/i,\n /\\b(visualize|show|display)\\s+(function|graph)/i,\n /\\b(sin|cos|tan|polynomial|quadratic|linear)\\s+(graph|plot)/i,\n ],\n keywords: ['plot', 'graph', 'draw', 'visualize', 'chart', 'curve', 'function', 'diagram'],\n weight: 1.5,\n },\n // Shell command\n {\n command: '/shell',\n patterns: [\n /\\b(show|display|read|cat|view)\\s+(file|contents?|text)\\b/i,\n /\\b(list|ls|dir|show)\\s+(files?|directories?|folders?)\\b/i,\n /\\b(search|find|grep|look)\\s+(for|in)\\s+/i,\n /\\b(what|which)\\s+files?\\s+(are|exist)/i,\n /\\b(open|read|check|examine|inspect)\\s+\\w+\\.\\w+/i,\n /\\b(navigate|cd|go)\\s+to\\s+/i,\n /\\bshow\\s+me\\s+(the\\s+)?(contents?|files?|folders?)/i,\n /\\bfind\\s+all\\s+\\w+\\s+files?\\b/i,\n ],\n keywords: ['show', 'list', 'search', 'find', 'file', 'directory', 'folder', 'contents', 'read', 'grep', 'ls'],\n weight: 1.5,\n },\n ];\n\n // Japanese patterns\n const japanesePatterns: IntentPattern[] = [\n // Direct command patterns (highest priority)\n {\n command: '/help',\n patterns: [\n /^\\/help$/i,\n /^ćƒ˜ćƒ«ćƒ—$/,\n /(?:ćƒ˜ćƒ«ćƒ—|使い方|使用方法|ę“ä½œę–¹ę³•)/,\n /恩恆(?:やって|使う)/,\n /(?:ć‚³ćƒžćƒ³ćƒ‰|方法).*(?:ę•™ćˆć¦|見恛恦)/,\n ],\n keywords: ['ćƒ˜ćƒ«ćƒ—', '使い方', '使用方法', 'ć‚³ćƒžćƒ³ćƒ‰', 'ę“ä½œę–¹ę³•'],\n weight: 10.0,\n },\n {\n command: '/status',\n patterns: [\n /^\\/status$/i,\n /^ć‚¹ćƒ†ćƒ¼ć‚æć‚¹$/,\n /(?:ć‚¹ćƒ†ćƒ¼ć‚æć‚¹|ēŠ¶ę…‹|状況)/,\n /(?:ēŠ¶ę…‹|調子).*(?:ē¢ŗčŖ|ćƒć‚§ćƒƒć‚Æ)/,\n /恩恆(?:なって|恄悋)/,\n ],\n keywords: ['ć‚¹ćƒ†ćƒ¼ć‚æć‚¹', 'ēŠ¶ę…‹', '状況', 'ē¢ŗčŖ', 'ćƒć‚§ćƒƒć‚Æ'],\n weight: 10.0,\n },\n {\n command: '/version',\n patterns: [\n /^\\/version$/i,\n /^ćƒćƒ¼ć‚øćƒ§ćƒ³$/,\n /(?:ćƒćƒ¼ć‚øćƒ§ćƒ³|ē‰ˆ|ver)/,\n /(?:ćƒćƒ¼ć‚øćƒ§ćƒ³|ē‰ˆ).*(?:ē¢ŗčŖ|ę•™ćˆć¦)/,\n ],\n keywords: ['ćƒćƒ¼ć‚øćƒ§ćƒ³', 'ē‰ˆ', 'ver'],\n weight: 10.0,\n },\n {\n command: '/test',\n patterns: [\n /^\\/test$/i,\n /^ćƒ†ć‚¹ćƒˆ$/,\n /(?:ćƒ†ć‚¹ćƒˆ|試験|検証)/,\n /(?:ćƒ†ć‚¹ćƒˆ|試験).*(?:実蔌|開始)/,\n ],\n keywords: ['ćƒ†ć‚¹ćƒˆ', '試験', '検証', '実蔌'],\n weight: 9.0,\n },\n {\n command: '/brain',\n patterns: [\n /^\\/brain$/i,\n /^ćƒ–ćƒ¬ć‚¤ćƒ³$/,\n /(?:ćƒ–ćƒ¬ć‚¤ćƒ³|脳|ćƒ¢ćƒ¼ćƒ‰)/,\n /(?:ćƒ¢ćƒ¼ćƒ‰|ꀝ考).*(?:変曓|åˆ‡ć‚Šę›æćˆ)/,\n ],\n keywords: ['ćƒ–ćƒ¬ć‚¤ćƒ³', '脳', 'ćƒ¢ćƒ¼ćƒ‰', 'ꀝ考'],\n weight: 9.0,\n },\n {\n command: '/code',\n patterns: [\n /(?:ć‚³ćƒ¼ćƒ‰|ćƒ—ćƒ­ć‚°ćƒ©ćƒ |関数|ć‚Æćƒ©ć‚¹|ćƒ”ć‚½ćƒƒćƒ‰).*(?:書|作|å®Ÿč£…|ē”Ÿęˆ)/,\n /(?:å®Ÿč£…|開発|作成)(?:恗恦|恙悋)/,\n /ćƒ—ćƒ­ć‚°ćƒ©(?:惠|ćƒŸćƒ³ć‚°)/,\n ],\n keywords: ['ć‚³ćƒ¼ćƒ‰', 'å®Ÿč£…', 'ćƒ—ćƒ­ć‚°ćƒ©ćƒ ', '関数', 'ć‚Æćƒ©ć‚¹', '作成', '開発', 'ę›øć'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:ē”»åƒ|ć‚¤ćƒ”ćƒ¼ć‚ø|ēµµ|ć‚¤ćƒ©ć‚¹ćƒˆ|ćƒ“ć‚øćƒ„ć‚¢ćƒ«).*(?:ē”Ÿęˆ|作|ꏏ)/,\n /(?:ꏏ|作).*(?:ē”»åƒ|ēµµ|ć‚¤ćƒ©ć‚¹ćƒˆ)/,\n /ē”»åƒć‚’/,\n ],\n keywords: ['ē”»åƒ', 'ć‚¤ćƒ”ćƒ¼ć‚ø', 'ēµµ', 'ć‚¤ćƒ©ć‚¹ćƒˆ', 'ćƒ“ć‚øćƒ„ć‚¢ćƒ«', 'ꏏ恏', 'ē”Ÿęˆ'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:å‹•ē”»|ćƒ“ćƒ‡ć‚Ŗ|ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³|ćƒ ćƒ¼ćƒ“ćƒ¼).*(?:作|ē”Ÿęˆ|å‡ŗåŠ›)/,\n /(?:作|ē”Ÿęˆ).*(?:å‹•ē”»|ćƒ“ćƒ‡ć‚Ŗ|ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³)/,\n /動画を/,\n ],\n keywords: ['å‹•ē”»', 'ćƒ“ćƒ‡ć‚Ŗ', 'ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³', 'ćƒ ćƒ¼ćƒ“ćƒ¼', 'ę˜ åƒ', '作成'],\n weight: 1.0,\n },\n {\n command: '/test',\n patterns: [\n /(?:ćƒ†ć‚¹ćƒˆ|試験).*(?:作|書|ē”Ÿęˆ)/,\n /(?:ćƒ¦ćƒ‹ćƒƒćƒˆ|統合|E2E).*ćƒ†ć‚¹ćƒˆ/,\n /ćƒ†ć‚¹ćƒˆ(?:ć‚³ćƒ¼ćƒ‰|悒)/,\n ],\n keywords: ['ćƒ†ć‚¹ćƒˆ', '試験', 'ćƒ¦ćƒ‹ćƒƒćƒˆ', '統合', 'ć‚«ćƒćƒ¬ćƒƒć‚ø'],\n weight: 1.0,\n },\n {\n command: '/review',\n patterns: [\n /(?:ćƒ¬ćƒ“ćƒ„ćƒ¼|ē¢ŗčŖ|改善|ćƒŖćƒ•ć‚”ć‚Æć‚æ).*(?:恗恦|恙悋)/,\n /ć‚³ćƒ¼ćƒ‰.*(?:ćƒ¬ćƒ“ćƒ„ćƒ¼|ē¢ŗčŖ|改善)/,\n /(?:品質|ęœ€é©åŒ–)/,\n ],\n keywords: ['ćƒ¬ćƒ“ćƒ„ćƒ¼', 'ē¢ŗčŖ', '改善', 'ćƒŖćƒ•ć‚”ć‚Æć‚æ', 'ęœ€é©åŒ–', '品質'],\n weight: 1.0,\n },\n // Math commands in Japanese\n {\n command: '/calc',\n patterns: [\n /(?:čØˆē®—|演算|算出).*(?:恗恦|恙悋)/,\n /\\d+\\s*[\\+\\-\\*\\/\\^]\\s*\\d+/,\n /(?:何|恄恏恤|恄恏悉).*(?:になる|恧恙)/,\n /(?:sin|cos|tan|sqrt|ルート|平方根)/,\n /(?:ę•°å¼|式|čØˆē®—å¼).*(?:čØˆē®—|演算)/,\n ],\n keywords: ['čØˆē®—', '演算', '算出', 'ę•°å¼', '式', 'ę•°å­¦', 'ルート', '平方根'],\n weight: 1.5,\n },\n {\n command: '/solve',\n patterns: [\n /(?:ę–¹ēØ‹å¼|é€£ē«‹ę–¹ēØ‹å¼|ē­‰å¼).*(?:č§£|걂|čØˆē®—)/,\n /(?:č§£|ę ¹|値).*(?:걂|ęŽ¢|čØˆē®—)/,\n /[a-z]\\s*恫恤恄恦.*(?:č§£|걂)/,\n /(?:変数|ęœŖēŸ„ę•°).*(?:걂|čØˆē®—)/,\n ],\n keywords: ['ę–¹ēØ‹å¼', '連立', 'č§£', 'ę ¹', '変数', 'ęœŖēŸ„ę•°', '걂悁悋'],\n weight: 1.5,\n },\n {\n command: '/plot',\n patterns: [\n /(?:ć‚°ćƒ©ćƒ•|図|チャート).*(?:ꏏ|作|蔨示)/,\n /(?:関数|ę›²ē·š).*(?:ęē”»|惗惭惃惈|åÆč¦–åŒ–)/,\n /(?:åÆč¦–åŒ–|蔨示|ęē”»).*(?:恗恦|恙悋)/,\n /(?:sin|cos|二欔|一欔|多項式).*ć‚°ćƒ©ćƒ•/,\n ],\n keywords: ['ć‚°ćƒ©ćƒ•', '図', 'チャート', 'ęē”»', '惗惭惃惈', 'åÆč¦–åŒ–', 'ę›²ē·š', '関数'],\n weight: 1.5,\n },\n // Shell command in Japanese\n {\n command: '/shell',\n patterns: [\n /(?:ćƒ•ć‚”ć‚¤ćƒ«|ćƒ•ć‚©ćƒ«ćƒ€|ćƒ‡ć‚£ćƒ¬ć‚ÆćƒˆćƒŖ).*(?:蔨示|見|ē¢ŗčŖ|ćƒŖć‚¹ćƒˆ)/,\n /(?:内容|äø­čŗ«|ćƒ†ć‚­ć‚¹ćƒˆ).*(?:蔨示|見|ē¢ŗčŖ)/,\n /(?:検瓢|ęŽ¢|grep|ć‚µćƒ¼ćƒ).*(?:恗恦|恙悋)/,\n /(?:何|どんな).*ćƒ•ć‚”ć‚¤ćƒ«.*(?:恂悋|存在)/,\n /\\w+\\.\\w+.*(?:開|čŖ­|ē¢ŗčŖ)/,\n /(?:移動|cd|ćƒŠćƒ“ć‚²ćƒ¼ćƒˆ).*(?:恗恦|恙悋)/,\n ],\n keywords: ['ćƒ•ć‚”ć‚¤ćƒ«', 'ćƒ•ć‚©ćƒ«ćƒ€', 'ćƒ‡ć‚£ćƒ¬ć‚ÆćƒˆćƒŖ', '蔨示', '検瓢', '内容', 'äø­čŗ«', 'ćƒŖć‚¹ćƒˆ'],\n weight: 1.5,\n },\n ];\n\n // Chinese patterns\n const chinesePatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:写|编写|åˆ›å»ŗ|å®žēŽ°|ē”Ÿęˆ).*(?:代码|ēØ‹åŗ|函数|ē±»)/,\n /(?:代码|ēØ‹åŗ|函数).*(?:写|åˆ›å»ŗ|å®žēŽ°)/,\n /编程/,\n ],\n keywords: ['代码', '编写', 'å®žēŽ°', 'ēØ‹åŗ', '函数', 'ē±»', 'åˆ›å»ŗ', '开发'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:ē”Ÿęˆ|åˆ›å»ŗ|制作|ē”»).*(?:图像|图片|ę’å›¾)/,\n /(?:图像|图片|ę’å›¾).*(?:ē”Ÿęˆ|åˆ›å»ŗ)/,\n /ē”».*图/,\n ],\n keywords: ['图像', '图片', 'ę’å›¾', 'ē”»', 'ē”Ÿęˆ', 'åˆ›å»ŗ', '视觉'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:åˆ›å»ŗ|ē”Ÿęˆ|制作).*(?:视频|åŠØē”»|影片)/,\n /(?:视频|åŠØē”»).*(?:åˆ›å»ŗ|ē”Ÿęˆ)/,\n /åŠØē”»/,\n ],\n keywords: ['视频', 'åŠØē”»', '影片', 'åˆ›å»ŗ', 'ē”Ÿęˆ', '制作'],\n weight: 1.0,\n },\n ];\n\n // Korean patterns\n const koreanPatterns: IntentPattern[] = [\n {\n command: '/code',\n patterns: [\n /(?:ģ½”ė“œ|ķ”„ė”œź·øėžØ|ķ•Øģˆ˜|ķ“ėž˜ģŠ¤).*(?:ģž‘ģ„±|ģƒģ„±|źµ¬ķ˜„)/,\n /(?:źµ¬ķ˜„|개발|ė§Œė“¤)/,\n /ķ”„ė”œź·øėž˜ė°/,\n ],\n keywords: ['ģ½”ė“œ', 'ķ”„ė”œź·øėžØ', 'ķ•Øģˆ˜', 'ķ“ėž˜ģŠ¤', 'źµ¬ķ˜„', '개발', 'ģž‘ģ„±'],\n weight: 1.0,\n },\n {\n command: '/image',\n patterns: [\n /(?:ģ“ėÆøģ§€|그림|ģ¼ėŸ¬ģŠ¤ķŠø).*(?:ģƒģ„±|ė§Œė“¤|그리)/,\n /(?:그림|ģ“ėÆøģ§€).*ź·øė ¤/,\n /ģ“ėÆøģ§€/,\n ],\n keywords: ['ģ“ėÆøģ§€', '그림', 'ģ¼ėŸ¬ģŠ¤ķŠø', 'ģƒģ„±', '그리기'],\n weight: 1.0,\n },\n {\n command: '/video',\n patterns: [\n /(?:ė¹„ė””ģ˜¤|ė™ģ˜ģƒ|ģ• ė‹ˆė©”ģ“ģ…˜).*(?:ģƒģ„±|ė§Œė“¤|ģ œģž‘)/,\n /(?:ė™ģ˜ģƒ|ė¹„ė””ģ˜¤).*ė§Œė“¤/,\n /ģ• ė‹ˆė©”ģ“ģ…˜/,\n ],\n keywords: ['ė¹„ė””ģ˜¤', 'ė™ģ˜ģƒ', 'ģ• ė‹ˆė©”ģ“ģ…˜', 'ģƒģ„±', 'ģ œģž‘'],\n weight: 1.0,\n },\n ];\n\n // Store patterns by language\n this.intentPatterns.set('en', englishPatterns);\n this.intentPatterns.set('ja', japanesePatterns);\n this.intentPatterns.set('cn', chinesePatterns);\n this.intentPatterns.set('ko', koreanPatterns);\n }\n\n private calculateFuzzyCommandScores(input: ProcessedInput, scores: Map<string, number>): void {\n // Use injected known commands (SSOT)\n const knownCommands = this.dependencies.knownCommands;\n\n const inputText = input.normalized.trim();\n \n // Direct fuzzy matching for commands\n knownCommands.forEach(command => {\n const distance = this.calculateEditDistance(inputText, command);\n const commandWithoutSlash = command.substring(1);\n const distanceWithoutSlash = this.calculateEditDistance(inputText, commandWithoutSlash);\n \n // Use the better distance\n const bestDistance = Math.min(distance, distanceWithoutSlash);\n \n // Only consider edit distance of 1 (stricter matching)\n if (bestDistance <= 1) {\n const fuzzyScore = 5.0; // Fixed low score for fuzzy matches\n const currentScore = scores.get(command) ?? 0;\n scores.set(command, Math.max(currentScore, fuzzyScore));\n }\n });\n }\n\n private calculateEditDistance(s1: string, s2: string): number {\n // Levenshtein distance implementation\n const len1 = s1.length;\n const len2 = s2.length;\n \n // Create matrix\n const matrix: number[][] = Array(len1 + 1).fill(null).map(() => Array(len2 + 1).fill(0));\n \n // Initialize first row and column\n for (let i = 0; i <= len1; i++) matrix[i][0] = i;\n for (let j = 0; j <= len2; j++) matrix[0][j] = j;\n \n // Fill the matrix\n for (let i = 1; i <= len1; i++) {\n for (let j = 1; j <= len2; j++) {\n if (s1[i - 1] === s2[j - 1]) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j] + 1, // deletion\n matrix[i][j - 1] + 1, // insertion\n matrix[i - 1][j - 1] + 1 // substitution\n );\n }\n }\n }\n \n return matrix[len1][len2];\n }\n}\n","export class ParameterExtractor {\n async extract(\n input: string,\n command: string,\n language: string,\n ): Promise<Record<string, unknown>> {\n const parameters: Record<string, unknown> = {};\n\n switch (command) {\n case '/code':\n return this.extractCodeParameters(input, language);\n case '/image':\n return this.extractImageParameters(input, language);\n case '/video':\n return this.extractVideoParameters(input, language);\n case '/test':\n return this.extractTestParameters(input, language);\n case '/review':\n return this.extractReviewParameters(input, language);\n case '/lang':\n return this.extractLanguageParameters(input, language);\n default:\n return this.extractGenericParameters(input, language);\n }\n }\n\n private extractCodeParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description (remove command keywords)\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'ę›øć',\n 'ä½œć‚‹',\n 'å®Ÿč£…',\n 'ć‚³ćƒ¼ćƒ‰',\n 'ćƒ—ćƒ­ć‚°ćƒ©ćƒ ',\n '写',\n '编写',\n 'åˆ›å»ŗ',\n 'å®žēŽ°',\n '代码',\n 'ēØ‹åŗ',\n 'ģž‘ģ„±',\n 'ģƒģ„±',\n 'źµ¬ķ˜„',\n 'ģ½”ė“œ',\n 'ķ”„ė”œź·øėžØ',\n 'viįŗæt',\n 'tįŗ”o',\n 'xĆ¢y dį»±ng',\n 'mĆ£',\n 'chʰʔng trƬnh',\n ]);\n\n _params.description = _description;\n\n // Detect programming language\n const _progLang = this.detectProgrammingLanguage(input);\n if (_progLang) { params.language = _progLang;\n }\n\n // Detect _framework\n const _framework = this.detectFramework(input);\n if (_framework) { params.framework = _framework;\n }\n\n // Extract file path if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private extractImageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _prompt (remove command keywords)\n const _prompt = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'draw',\n 'design',\n 'image',\n 'picture',\n 'ē”Ÿęˆ',\n 'ä½œć‚‹',\n 'ꏏ恏',\n 'ē”»åƒ',\n 'ć‚¤ćƒ”ćƒ¼ć‚ø',\n 'åˆ›å»ŗ',\n 'ē”Ÿęˆ',\n 'ē”»',\n '图像',\n '图片',\n 'ģƒģ„±',\n '그리기',\n 'ģ“ėÆøģ§€',\n '그림',\n 'tįŗ”o',\n 'vįŗ½',\n 'hƬnh įŗ£nh',\n 'įŗ£nh',\n ]);\n\n _params.prompt = _prompt;\n\n // Detect _style\n const _style = this.detectArtStyle(input);\n if (_style) { params.style = _style;\n }\n\n // Extract _dimensions\n const _dimensions = this.extractDimensions(input);\n if (_dimensions) { params.width = dimensions.width;\n _params.height = dimensions.height;\n }\n\n return _params;\n }\n\n private extractVideoParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'create',\n 'generate',\n 'make',\n 'produce',\n 'video',\n 'animation',\n 'ä½œć‚‹',\n 'ē”Ÿęˆ',\n 'å‹•ē”»',\n 'ćƒ“ćƒ‡ć‚Ŗ',\n 'ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³',\n 'åˆ›å»ŗ',\n 'ē”Ÿęˆ',\n '视频',\n 'åŠØē”»',\n 'ģƒģ„±',\n 'ė¹„ė””ģ˜¤',\n 'ė™ģ˜ģƒ',\n 'ģ• ė‹ˆė©”ģ“ģ…˜',\n 'tįŗ”o',\n 'video',\n 'hoįŗ”t hƬnh',\n ]);\n\n _params.description = _description;\n\n // Extract _duration\n const _duration = this.extractDuration(input);\n if (_duration) { params.duration = _duration;\n }\n\n // Detect _format\n const _format = this.detectVideoFormat(input);\n if (_format) { params.format = _format;\n }\n\n return _params;\n }\n\n private extractTestParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'write',\n 'create',\n 'generate',\n 'test',\n 'testing',\n 'ę›øć',\n 'ä½œć‚‹',\n 'ćƒ†ć‚¹ćƒˆ',\n '試験',\n '写',\n 'åˆ›å»ŗ',\n '测试',\n 'ģž‘ģ„±',\n 'ģƒģ„±',\n 'ķ…ŒģŠ¤ķŠø',\n 'viįŗæt',\n 'tįŗ”o',\n 'kiểm tra',\n ]);\n\n _params.description = _description;\n\n // Detect test type\n const _testType = this.detectTestType(input);\n if (_testType) { params.type = _testType;\n }\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private extractReviewParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract _description\n const _description = this.cleanDescription(input, language, [\n 'review',\n 'check',\n 'analyze',\n 'improve',\n 'refactor',\n 'ćƒ¬ćƒ“ćƒ„ćƒ¼',\n 'ē¢ŗčŖ',\n '改善',\n 'ćƒŖćƒ•ć‚”ć‚Æć‚æ',\n '宔柄',\n 'ę£€ęŸ„',\n 'åˆ†ęž',\n '改进',\n '리뷰',\n '검토',\n 'ė¶„ģ„',\n 'ź°œģ„ ',\n 'xem xĆ©t',\n 'kiểm tra',\n 'phĆ¢n tĆ­ch',\n 'cįŗ£i thiện',\n ]);\n\n _params.description = _description;\n\n // Extract file if mentioned\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n // Detect review _focus\n const _focus = this.detectReviewFocus(input);\n if (_focus) { params.focus = _focus;\n }\n\n return _params;\n }\n\n private extractLanguageParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Extract target language\n const _targetLang = this.extractTargetLanguage(input);\n if (_targetLang) { params.language = _targetLang;\n }\n\n return _params;\n }\n\n private extractGenericParameters(_input: string, language: string): Record<string, unknown> {\n const params: Record<string, unknown> = {};\n\n // Clean input from common words\n const _cleanedInput = this.cleanDescription(input, language, []);\n _params.input = _cleanedInput;\n\n // Extract any file paths\n const _filePath = this.extractFilePath(input);\n if (_filePath) { params.file = _filePath;\n }\n\n return _params;\n }\n\n private cleanDescription(_input: string, _language: string, keywords: string[]): string {\n let cleaned = input.toLowerCase();\n\n // Remove keywords\n keywords.forEach((keyword) => {\n const _regex = new RegExp(`\\\\b${keyword}\\\\b`, 'gi');\n cleaned = cleaned.replace(_regex, '');\n });\n\n // Clean up whitespace\n cleaned = cleaned.replace(/\\s+/g, ' ').trim();\n\n return cleaned;\n }\n\n private detectProgrammingLanguage(input: string): string | null {\n const languages: Record<string, RegExp> = {\n javascript: /\\b(javascript|js|node\\.?js)\\b/i,\n typescript: /\\b(typescript|ts)\\b/i,\n python: /\\b(python|py)\\b/i,\n java: /\\b(java)\\b/i,\n rust: /\\b(rust|rs)\\b/i,\n go: /\\b(go|golang)\\b/i,\n cpp: /\\b(c\\+\\+|cpp)\\b/i,\n csharp: /\\b(c#|csharp)\\b/i,\n ruby: /\\b(ruby|rb)\\b/i,\n php: /\\b(php)\\b/i,\n swift: /\\b(swift)\\b/i,\n kotlin: /\\b(kotlin)\\b/i,\n };\n\n for (const [lang, _pattern] of Object.entries(languages)) {\n if (pattern.test(input)) {\n return lang;\n }\n }\n\n return null;\n }\n\n private detectFramework(input: string): string | null {\n const frameworks: Record<string, RegExp> = {\n react: /\\b(react|reactjs)\\b/i,\n vue: /\\b(vue|vuejs)\\b/i,\n angular: /\\b(angular)\\b/i,\n nextjs: /\\b(next\\.?js|nextjs)\\b/i,\n express: /\\b(express)\\b/i,\n django: /\\b(django)\\b/i,\n flask: /\\b(flask)\\b/i,\n rails: /\\b(rails|ruby on rails)\\b/i,\n spring: /\\b(spring)\\b/i,\n laravel: /\\b(laravel)\\b/i,\n };\n\n for (const [_framework, _pattern] of Object.entries(frameworks)) {\n if (pattern.test(input)) {\n return _framework;\n }\n }\n\n return null;\n }\n\n private detectArtStyle(input: string): string | null {\n const styles: Record<string, RegExp> = {\n realistic: /\\b(realistic|photorealistic|real)\\b/i,\n cartoon: /\\b(cartoon|animated|anime)\\b/i,\n abstract: /\\b(abstract)\\b/i,\n watercolor: /\\b(watercolor|water color)\\b/i,\n oil: /\\b(oil painting|oil)\\b/i,\n pencil: /\\b(pencil|sketch)\\b/i,\n '3d': /\\b(3d|three dimensional)\\b/i,\n pixel: /\\b(pixel art|pixelated)\\b/i,\n };\n\n for (const [_style, _pattern] of Object.entries(styles)) {\n if (pattern.test(input)) {\n return _style;\n }\n }\n\n return null;\n }\n\n private extractFilePath(input: string): string | null {\n const _filePattern = /(?:[\"'])?([/\\w\\-._]+\\.\\w+)(?:[\"'])?/;\n const _match = input.match(_filePattern);\n return _match ? _match[1] : null;\n }\n\n private extractDimensions(input: string): { width: number; height: number } | null {\n const _dimensionPattern = /(\\d+)\\s*[xƗ]\\s*(\\d+)/i;\n const _match = input.match(_dimensionPattern);\n\n if (_match) {\n return {\n width: parseInt(_match[1], 10),\n height: parseInt(_match[2], 10),\n };\n }\n\n return null;\n }\n\n private extractDuration(input: string): number | null {\n const _durationPattern = /(\\d+)\\s*(seconds?|secs?|minutes?|mins?)/i;\n const _match = input.match(_durationPattern);\n\n if (_match) {\n const _value = parseInt(_match[1], 10);\n const _unit = _match[2].toLowerCase();\n\n if (unit.startsWith('min')) {\n return _value * 60;\n }\n return _value;\n }\n\n return null;\n }\n\n private detectVideoFormat(input: string): string | null {\n const _formats = ['mp4', 'avi', 'mov', 'webm', 'gif'];\n\n for (const _format of _formats) {\n const _pattern = new RegExp(`\\\\b${_format}\\\\b`, 'i');\n if (pattern.test(input)) {\n return _format;\n }\n }\n\n return null;\n }\n\n private detectTestType(input: string): string | null {\n const types: Record<string, RegExp> = {\n _unit: /\\b(_unit)\\b/i,\n integration: /\\b(integration)\\b/i,\n e2e: /\\b(e2e|end to end)\\b/i,\n performance: /\\b(performance|perf)\\b/i,\n snapshot: /\\b(snapshot)\\b/i,\n };\n\n for (const [type, _pattern] of Object.entries(types)) {\n if (pattern.test(input)) {\n return type;\n }\n }\n\n return null;\n }\n\n private detectReviewFocus(input: string): string | null {\n const focuses: Record<string, RegExp> = {\n performance: /\\b(performance|speed|optimization)\\b/i,\n security: /\\b(security|vulnerability|safe)\\b/i,\n quality: /\\b(quality|clean|maintainability)\\b/i,\n _style: /\\b(_style|_format|convention)\\b/i,\n bugs: /\\b(bugs?|errors?|issues?)\\b/i,\n };\n\n for (const [_focus, _pattern] of Object.entries(focuses)) {\n if (pattern.test(input)) {\n return _focus;\n }\n }\n\n return null;\n }\n\n private extractTargetLanguage(input: string): string | null {\n const languageMap: Record<string, string[]> = {\n en: ['english', 'č‹±čŖž', '英ꖇ', 'ģ˜ģ–“', 'tiįŗæng anh'],\n ja: ['japanese', 'ę—„ęœ¬čŖž', 'ę—„ę–‡', 'ģ¼ė³øģ–“', 'tiįŗæng nhįŗ­t'],\n cn: ['chinese', 'äø­å›½čŖž', 'äø­ę–‡', '중국얓', 'tiįŗæng trung'],\n ko: ['korean', 'éŸ“å›½čŖž', 'éŸ©ę–‡', 'ķ•œźµ­ģ–“', 'tiįŗæng hĆ n'],\n vn: ['vietnamese', 'ćƒ™ćƒˆćƒŠćƒ čŖž', 'č¶Šå—ę–‡', 'ė² ķŠøė‚Øģ–“', 'tiįŗæng việt'],\n };\n\n const _lowerInput = input.toLowerCase();\n\n for (const [code, patterns] of Object.entries(languageMap)) {\n for (const _pattern of patterns) {\n if (lowerInput.includes(_pattern)) {\n return code;\n }\n }\n }\n\n return null;\n }\n}\n","export interface CommandTranslation {\n command: string;\n name: Record<string, string>;\n description: Record<string, string>;\n keywords: Record<string, string[]>;\n examples: Record<string, string[]>;\n}\n\nexport class MultilingualDictionary {\n private dictionary: Map<string, CommandTranslation>;\n private initialized: boolean = false;\n\n constructor() {\n this.dictionary = new Map();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n this.loadTranslations();\n this.initialized = true;\n }\n\n getTranslation(_command: string, _language: string = 'en'): CommandTranslation | null {\n return this.dictionary.get(command) ?? null;\n }\n\n getExplanation(_command: string, language: string = 'en'): string {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return `Command ${command} not found`;\n }\n\n return translation.description[language] ?? translation.description['en'] ?? '';\n }\n\n getKeywords(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return [];\n }\n\n return translation.keywords[language] ?? translation.keywords['en'] ?? [];\n }\n\n getExamples(_command: string, language: string = 'en'): string[] {\n const _translation = this.dictionary.get(command);\n if (!_translation) {\n return [];\n }\n\n return translation.examples[language] ?? translation.examples['en'] ?? [];\n }\n\n getAllCommands(): string[] {\n return Array.from(this.dictionary.keys());\n }\n\n private loadTranslations(): void {\n // Core Development Commands\n this.dictionary.set('/code', {\n command: '/code',\n name: {\n en: 'Code Generation',\n ja: 'ć‚³ćƒ¼ćƒ‰ē”Ÿęˆ',\n zh: 'ä»£ē ē”Ÿęˆ',\n ko: 'ģ½”ė“œ ģƒģ„±',\n },\n description: {\n en: 'Generate code with AI assistance',\n ja: 'AIę”Æę“ć«ć‚ˆć‚‹ć‚³ćƒ¼ćƒ‰ē”Ÿęˆ',\n zh: '使用AIč¾…åŠ©ē”Ÿęˆä»£ē ',\n ko: 'AI 지원 ģ½”ė“œ ģƒģ„±',\n },\n keywords: {\n en: [\n 'write',\n 'create',\n 'generate',\n 'implement',\n 'build',\n 'code',\n 'program',\n 'develop',\n 'function',\n 'class',\n ],\n ja: ['ć‚³ćƒ¼ćƒ‰', 'å®Ÿč£…', 'ćƒ—ćƒ­ć‚°ćƒ©ćƒ ', '関数', 'ć‚Æćƒ©ć‚¹', '作成', '開発', 'ę›øć', 'ē”Ÿęˆ'],\n zh: ['代码', '编写', 'å®žēŽ°', 'ēØ‹åŗ', '函数', 'ē±»', 'åˆ›å»ŗ', '开发', 'ē”Ÿęˆ'],\n ko: ['ģ½”ė“œ', 'ķ”„ė”œź·øėžØ', 'ķ•Øģˆ˜', 'ķ“ėž˜ģŠ¤', 'źµ¬ķ˜„', '개발', 'ģž‘ģ„±', 'ģƒģ„±'],\n },\n examples: {\n en: ['write a React component', 'create a REST API', 'implement user authentication'],\n ja: ['Reactć‚³ćƒ³ćƒćƒ¼ćƒćƒ³ćƒˆć‚’å®Ÿč£…ć—ć¦', 'REST APIć‚’ä½œć£ć¦', 'ćƒ¦ćƒ¼ć‚¶ćƒ¼čŖčØ¼ć‚’å®Ÿč£…'],\n zh: ['写一个React组件', 'åˆ›å»ŗREST API', 'å®žēŽ°ē”Øęˆ·č®¤čÆ'],\n ko: ['React ģ»“ķ¬ė„ŒķŠø ģž‘ģ„±', 'REST API ģƒģ„±', 'ģ‚¬ģš©ģž ģøģ¦ źµ¬ķ˜„'],\n },\n });\n\n this.dictionary.set('/test', {\n command: '/test',\n name: {\n en: 'Test Generation',\n ja: 'ćƒ†ć‚¹ćƒˆē”Ÿęˆ',\n zh: 'ęµ‹čÆ•ē”Ÿęˆ',\n ko: 'ķ…ŒģŠ¤ķŠø ģƒģ„±',\n },\n description: {\n en: 'Generate and run tests',\n ja: 'ćƒ†ć‚¹ćƒˆć®ē”ŸęˆćØå®Ÿč”Œ',\n zh: 'ē”Ÿęˆå¹¶čæč”Œęµ‹čÆ•',\n ko: 'ķ…ŒģŠ¤ķŠø ģƒģ„± ė° 실행',\n },\n keywords: {\n en: ['test', 'testing', 'unit', 'integration', 'e2e', 'coverage', 'spec', 'assertion'],\n ja: ['ćƒ†ć‚¹ćƒˆ', '試験', 'ćƒ¦ćƒ‹ćƒƒćƒˆ', '統合', 'ć‚«ćƒćƒ¬ćƒƒć‚ø', '検証'],\n zh: ['测试', 'å•å…ƒęµ‹čÆ•', 'é›†ęˆęµ‹čÆ•', 'č¦†ē›–ēŽ‡', '验证'],\n ko: ['ķ…ŒģŠ¤ķŠø', 'ė‹Øģœ„', '통합', '커버리지', 'ź²€ģ¦'],\n },\n examples: {\n en: ['write unit tests', 'create integration tests', 'generate test coverage'],\n ja: ['ćƒ¦ćƒ‹ćƒƒćƒˆćƒ†ć‚¹ćƒˆć‚’ę›øć„ć¦', 'ēµ±åˆćƒ†ć‚¹ćƒˆć‚’ä½œęˆ', 'ćƒ†ć‚¹ćƒˆć‚«ćƒćƒ¬ćƒƒć‚øć‚’ē”Ÿęˆ'],\n zh: ['ē¼–å†™å•å…ƒęµ‹čÆ•', 'åˆ›å»ŗé›†ęˆęµ‹čÆ•', 'ē”Ÿęˆęµ‹čÆ•č¦†ē›–ēŽ‡'],\n ko: ['ė‹Øģœ„ ķ…ŒģŠ¤ķŠø ģž‘ģ„±', '통합 ķ…ŒģŠ¤ķŠø ģƒģ„±', 'ķ…ŒģŠ¤ķŠø 커버리지 ģƒģ„±'],\n },\n });\n\n this.dictionary.set('/review', {\n command: '/review',\n name: {\n en: 'Code Review',\n ja: 'ć‚³ćƒ¼ćƒ‰ćƒ¬ćƒ“ćƒ„ćƒ¼',\n zh: '代码宔柄',\n ko: 'ģ½”ė“œ 리뷰',\n },\n description: {\n en: 'Review code for improvements',\n ja: 'ć‚³ćƒ¼ćƒ‰ć®ę”¹å–„ē‚¹ć‚’ćƒ¬ćƒ“ćƒ„ćƒ¼',\n zh: 'å®”ęŸ„ä»£ē ä»„čæ›č”Œę”¹čæ›',\n ko: 'ģ½”ė“œ ź°œģ„ ģ‚¬ķ•­ 검토',\n },\n keywords: {\n en: ['review', 'check', 'analyze', 'improve', 'refactor', 'optimize', 'quality', 'inspect'],\n ja: ['ćƒ¬ćƒ“ćƒ„ćƒ¼', 'ē¢ŗčŖ', '改善', 'ćƒŖćƒ•ć‚”ć‚Æć‚æ', 'ęœ€é©åŒ–', '品質', '検査'],\n zh: ['宔柄', 'ę£€ęŸ„', 'åˆ†ęž', '改进', '重Ꞅ', '优化', 'č“Øé‡'],\n ko: ['리뷰', '검토', 'ė¶„ģ„', 'ź°œģ„ ', 'ė¦¬ķŒ©ķ† ė§', 'ģµœģ ķ™”', 'ķ’ˆģ§ˆ'],\n },\n examples: {\n en: ['review this code', 'check for improvements', 'optimize performance'],\n ja: ['ć“ć®ć‚³ćƒ¼ćƒ‰ć‚’ćƒ¬ćƒ“ćƒ„ćƒ¼ć—ć¦', 'ę”¹å–„ē‚¹ć‚’ē¢ŗčŖ', 'ćƒ‘ćƒ•ć‚©ćƒ¼ćƒžćƒ³ć‚¹ć‚’ęœ€é©åŒ–'],\n zh: ['å®”ęŸ„čæ™ę®µä»£ē ', 'ę£€ęŸ„ę”¹čæ›ē‚¹', 'ä¼˜åŒ–ę€§čƒ½'],\n ko: ['ģ“ ģ½”ė“œ 리뷰', 'ź°œģ„ ģ‚¬ķ•­ ķ™•ģø', 'ģ„±ėŠ„ ģµœģ ķ™”'],\n },\n });\n\n this.dictionary.set('/model', {\n command: '/model',\n name: {\n en: 'Model Selection',\n ja: 'ćƒ¢ćƒ‡ćƒ«éøęŠž',\n zh: 'ęØ”åž‹é€‰ę‹©',\n ko: 'ėŖØėø ģ„ ķƒ',\n },\n description: {\n en: 'Select AI model',\n ja: 'AIćƒ¢ćƒ‡ćƒ«ć®éøęŠž',\n zh: '选ꋩAIęØ”åž‹',\n ko: 'AI ėŖØėø ģ„ ķƒ',\n },\n keywords: {\n en: ['model', 'select', 'choose', 'switch', 'change', 'ai', 'llm'],\n ja: ['ćƒ¢ćƒ‡ćƒ«', 'éøęŠž', 'åˆ‡ć‚Šę›æćˆ', '変曓', 'AI', 'LLM'],\n zh: ['ęØ”åž‹', '选ꋩ', 'åˆ‡ę¢', '曓改', 'AI', 'LLM'],\n ko: ['ėŖØėø', 'ģ„ ķƒ', 'ģ „ķ™˜', '변경', 'AI', 'LLM'],\n },\n examples: {\n en: ['switch to GPT-5', 'use Claude', 'select local model'],\n ja: ['GPT-5ć«åˆ‡ć‚Šę›æćˆ', 'Claudeを使用', 'ćƒ­ćƒ¼ć‚«ćƒ«ćƒ¢ćƒ‡ćƒ«ć‚’éøęŠž'],\n zh: ['åˆ‡ę¢åˆ°GPT-5', '使用Claude', 'é€‰ę‹©ęœ¬åœ°ęØ”åž‹'],\n ko: ['GPT-5딜 ģ „ķ™˜', 'Claude ģ‚¬ģš©', '딜컬 ėŖØėø ģ„ ķƒ'],\n },\n });\n\n // Media Generation Commands\n this.dictionary.set('/image', {\n command: '/image',\n name: {\n en: 'Image Generation',\n ja: 'ē”»åƒē”Ÿęˆ',\n zh: 'å›¾åƒē”Ÿęˆ',\n ko: 'ģ“ėÆøģ§€ ģƒģ„±',\n },\n description: {\n en: 'Generate images with AI',\n ja: 'AIć«ć‚ˆć‚‹ē”»åƒē”Ÿęˆ',\n zh: '使用AIē”Ÿęˆå›¾åƒ',\n ko: 'AI ģ“ėÆøģ§€ ģƒģ„±',\n },\n keywords: {\n en: [\n 'image',\n 'picture',\n 'photo',\n 'draw',\n 'illustration',\n 'visual',\n 'graphic',\n 'art',\n 'design',\n 'create',\n ],\n ja: ['ē”»åƒ', 'ć‚¤ćƒ”ćƒ¼ć‚ø', 'ēµµ', 'ć‚¤ćƒ©ć‚¹ćƒˆ', 'ćƒ“ć‚øćƒ„ć‚¢ćƒ«', 'ꏏ恏', 'ē”Ÿęˆ', 'ćƒ‡ć‚¶ć‚¤ćƒ³'],\n zh: ['图像', '图片', 'ę’å›¾', 'ē”»', 'ē”Ÿęˆ', 'åˆ›å»ŗ', '视觉', '设讔'],\n ko: ['ģ“ėÆøģ§€', '그림', 'ģ¼ėŸ¬ģŠ¤ķŠø', 'ģƒģ„±', '그리기', 'ė””ģžģø', '비주얼'],\n },\n examples: {\n en: ['create an image of sunset', 'draw a cat', 'generate logo design'],\n ja: ['å¤•ę—„ć®ē”»åƒć‚’ē”Ÿęˆ', 'ēŒ«ć‚’ęć„ć¦', 'ćƒ­ć‚“ćƒ‡ć‚¶ć‚¤ćƒ³ć‚’ē”Ÿęˆ'],\n zh: ['åˆ›å»ŗę—„č½å›¾åƒ', 'ē”»äø€åŖēŒ«', 'ē”Ÿęˆlogo设讔'],\n ko: ['ģ¼ėŖ° ģ“ėÆøģ§€ ģƒģ„±', 'ź³ ģ–‘ģ“ 그리기', '딜고 ė””ģžģø ģƒģ„±'],\n },\n });\n\n this.dictionary.set('/video', {\n command: '/video',\n name: {\n en: 'Video Generation',\n ja: 'å‹•ē”»ē”Ÿęˆ',\n zh: 'č§†é¢‘ē”Ÿęˆ',\n ko: 'ė¹„ė””ģ˜¤ ģƒģ„±',\n },\n description: {\n en: 'Generate videos with AI',\n ja: 'AIć«ć‚ˆć‚‹å‹•ē”»ē”Ÿęˆ',\n zh: '使用AIē”Ÿęˆč§†é¢‘',\n ko: 'AI ė¹„ė””ģ˜¤ ģƒģ„±',\n },\n keywords: {\n en: ['video', 'movie', 'animation', 'clip', 'film', 'animate', 'motion', 'render'],\n ja: ['å‹•ē”»', 'ćƒ“ćƒ‡ć‚Ŗ', 'ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³', 'ćƒ ćƒ¼ćƒ“ćƒ¼', 'ę˜ åƒ', '作成', 'ē”Ÿęˆ'],\n zh: ['视频', 'åŠØē”»', '影片', 'åˆ›å»ŗ', 'ē”Ÿęˆ', '制作', 'ęø²ęŸ“'],\n ko: ['ė¹„ė””ģ˜¤', 'ė™ģ˜ģƒ', 'ģ• ė‹ˆė©”ģ“ģ…˜', 'ģƒģ„±', 'ģ œģž‘', 'ė Œė”ė§'],\n },\n examples: {\n en: ['create a video intro', 'generate animation', 'make a tutorial video'],\n ja: ['å‹•ē”»ć‚¤ćƒ³ćƒˆćƒ­ć‚’ä½œęˆ', 'ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ē”Ÿęˆ', 'ćƒćƒ„ćƒ¼ćƒˆćƒŖć‚¢ćƒ«å‹•ē”»ć‚’ä½œć‚‹'],\n zh: ['åˆ›å»ŗč§†é¢‘ä»‹ē»', 'ē”ŸęˆåŠØē”»', 'åˆ¶ä½œę•™ēØ‹č§†é¢‘'],\n ko: ['ė¹„ė””ģ˜¤ ģøķŠøė”œ ģƒģ„±', 'ģ• ė‹ˆė©”ģ“ģ…˜ ģ œģž‘', 'ķŠœķ† ė¦¬ģ–¼ ė¹„ė””ģ˜¤ ė§Œė“¤źø°'],\n },\n });\n\n this.dictionary.set('/avatar', {\n command: '/avatar',\n name: {\n en: 'Avatar Display',\n ja: 'ć‚¢ćƒć‚æćƒ¼č”Øē¤ŗ',\n zh: 'å¤“åƒę˜¾ē¤ŗ',\n ko: 'ģ•„ė°”ķƒ€ ķ‘œģ‹œ',\n },\n description: {\n en: 'Display ASCII art avatar',\n ja: 'ASCIIć‚¢ćƒ¼ćƒˆć‚¢ćƒć‚æćƒ¼ć‚’č”Øē¤ŗ',\n zh: '显示ASCIIč‰ŗęœÆå¤“åƒ',\n ko: 'ASCII ģ•„ķŠø ģ•„ė°”ķƒ€ ķ‘œģ‹œ',\n },\n keywords: {\n en: ['avatar', 'character', 'ascii', 'art', 'display', 'show'],\n ja: ['ć‚¢ćƒć‚æćƒ¼', 'ć‚­ćƒ£ćƒ©ć‚Æć‚æćƒ¼', 'ć‚¢ć‚¹ć‚­ćƒ¼', 'ć‚¢ćƒ¼ćƒˆ', '蔨示'],\n zh: ['夓像', '角色', 'ASCII', 'č‰ŗęœÆ', '显示'],\n ko: ['ģ•„ė°”ķƒ€', '캐릭터', 'ASCII', 'ģ•„ķŠø', 'ķ‘œģ‹œ'],\n },\n examples: {\n en: ['show avatar', 'display character', 'ascii art'],\n ja: ['ć‚¢ćƒć‚æćƒ¼ć‚’č”Øē¤ŗ', 'ć‚­ćƒ£ćƒ©ć‚Æć‚æćƒ¼ć‚’č¦‹ć›ć¦', 'ć‚¢ć‚¹ć‚­ćƒ¼ć‚¢ćƒ¼ćƒˆ'],\n zh: ['ę˜¾ē¤ŗå¤“åƒ', '展示角色', 'ASCIIč‰ŗęœÆ'],\n ko: ['ģ•„ė°”ķƒ€ 볓기', '캐릭터 ķ‘œģ‹œ', 'ASCII ģ•„ķŠø'],\n },\n });\n\n this.dictionary.set('/voice', {\n command: '/voice',\n name: {\n en: 'Voice Interaction',\n ja: '音声対話',\n zh: 'čÆ­éŸ³äŗ¤äŗ’',\n ko: 'ģŒģ„± ģƒķ˜øģž‘ģš©',\n },\n description: {\n en: 'Voice-based interaction',\n ja: 'éŸ³å£°ćƒ™ćƒ¼ć‚¹ć®åÆ¾č©±',\n zh: 'åŸŗäŗŽčÆ­éŸ³ēš„äŗ¤äŗ’',\n ko: 'ģŒģ„± 기반 ģƒķ˜øģž‘ģš©',\n },\n keywords: {\n en: ['voice', 'speak', 'talk', 'audio', 'speech', 'sound'],\n ja: ['音声', '話恙', '会話', 'ć‚Ŗćƒ¼ćƒ‡ć‚£ć‚Ŗ', 'ć‚¹ćƒ”ćƒ¼ćƒ'],\n zh: ['语音', 'čÆ“čÆ', 'åÆ¹čÆ', '音频', '语音'],\n ko: ['ģŒģ„±', 'ė§ķ•˜źø°', 'ėŒ€ķ™”', 'ģ˜¤ė””ģ˜¤', 'ģŠ¤ķ”¼ģ¹˜'],\n },\n examples: {\n en: ['talk to me', 'voice command', 'speak the response'],\n ja: ['話恗恋恑恦', 'éŸ³å£°ć‚³ćƒžćƒ³ćƒ‰', 'åæœē­”ć‚’č©±ć—ć¦'],\n zh: ['å’Œęˆ‘čÆ“čÆ', 'čÆ­éŸ³å‘½ä»¤', 'čÆ“å‡ŗå›žåŗ”'],\n ko: ['ėŒ€ķ™”ķ•˜źø°', 'ģŒģ„± ėŖ…ė ¹', 'ģ‘ė‹µ ė§ķ•˜źø°'],\n },\n });\n\n // Add remaining commands...\n // Project Management Commands\n this.dictionary.set('/init', {\n command: '/init',\n name: {\n en: 'Initialize Project',\n ja: 'ćƒ—ćƒ­ć‚øć‚§ć‚ÆćƒˆåˆęœŸåŒ–',\n zh: 'åˆå§‹åŒ–é”¹ē›®',\n ko: 'ķ”„ė”œģ ķŠø ģ“ˆźø°ķ™”',\n },\n description: {\n en: 'Initialize a new project',\n ja: 'ę–°ć—ć„ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆć‚’åˆęœŸåŒ–',\n zh: 'åˆå§‹åŒ–ę–°é”¹ē›®',\n ko: '새 ķ”„ė”œģ ķŠø ģ“ˆźø°ķ™”',\n },\n keywords: {\n en: ['init', 'initialize', 'setup', 'create', 'start', 'project', 'new'],\n ja: ['åˆęœŸåŒ–', 'ć‚»ćƒƒćƒˆć‚¢ćƒƒćƒ—', '作成', '開始', 'ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆ', 'ę–°č¦'],\n zh: ['初始化', '设置', 'åˆ›å»ŗ', '启动', '锹目', '新建'],\n ko: ['ģ“ˆźø°ķ™”', '설정', 'ģƒģ„±', 'ģ‹œģž‘', 'ķ”„ė”œģ ķŠø', 'ģ‹ ź·œ'],\n },\n examples: {\n en: ['initialize new project', 'setup React app', 'create new workspace'],\n ja: ['ę–°ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆć‚’åˆęœŸåŒ–', 'Reactć‚¢ćƒ—ćƒŖć‚’ć‚»ćƒƒćƒˆć‚¢ćƒƒćƒ—', 'ę–°ćƒÆćƒ¼ć‚Æć‚¹ćƒšćƒ¼ć‚¹ć‚’ä½œęˆ'],\n zh: ['åˆå§‹åŒ–ę–°é”¹ē›®', '设置React应用', 'åˆ›å»ŗę–°å·„ä½œē©ŗé—“'],\n ko: ['새 ķ”„ė”œģ ķŠø ģ“ˆźø°ķ™”', 'React 앱 설정', '새 ģ›Œķ¬ģŠ¤ķŽ˜ģ“ģŠ¤ ģƒģ„±'],\n },\n });\n\n // System Commands\n this.dictionary.set('/help', {\n command: '/help',\n name: {\n en: 'Help',\n ja: 'ćƒ˜ćƒ«ćƒ—',\n zh: '帮助',\n ko: 'ė„ģ›€ė§',\n },\n description: {\n en: 'Show help and available commands',\n ja: 'ćƒ˜ćƒ«ćƒ—ćØåˆ©ē”ØåÆčƒ½ćŖć‚³ćƒžćƒ³ćƒ‰ć‚’č”Øē¤ŗ',\n zh: 'ę˜¾ē¤ŗåø®åŠ©å’ŒåÆē”Øå‘½ä»¤',\n ko: 'ė„ģ›€ė§ ė° ģ‚¬ģš© ź°€ėŠ„ķ•œ ėŖ…ė ¹ ķ‘œģ‹œ',\n },\n keywords: {\n en: ['help', 'guide', 'manual', 'documentation', 'usage', 'commands'],\n ja: ['ćƒ˜ćƒ«ćƒ—', 'ć‚¬ć‚¤ćƒ‰', 'ćƒžćƒ‹ćƒ„ć‚¢ćƒ«', 'ćƒ‰ć‚­ćƒ„ćƒ”ćƒ³ćƒˆ', '使い方', 'ć‚³ćƒžćƒ³ćƒ‰'],\n zh: ['帮助', 'ęŒ‡å—', 'ę‰‹å†Œ', '文攣', '用法', '命令'],\n ko: ['ė„ģ›€ė§', 'ź°€ģ“ė“œ', '매뉓얼', 'ė¬øģ„œ', 'ģ‚¬ģš©ė²•', 'ėŖ…ė ¹'],\n },\n examples: {\n en: ['show help', 'list commands', 'how to use'],\n ja: ['ćƒ˜ćƒ«ćƒ—ć‚’č”Øē¤ŗ', 'ć‚³ćƒžćƒ³ćƒ‰äø€č¦§', '使い方'],\n zh: ['显示帮助', 'åˆ—å‡ŗå‘½ä»¤', '如何使用'],\n ko: ['ė„ģ›€ė§ ķ‘œģ‹œ', 'ėŖ…ė ¹ ėŖ©ė”', 'ģ‚¬ģš© 방법'],\n },\n });\n\n this.dictionary.set('/exit', {\n command: '/exit',\n name: {\n en: 'Exit',\n ja: '終了',\n zh: '退出',\n ko: 'ģ¢…ė£Œ',\n },\n description: {\n en: 'Exit the session',\n ja: 'ć‚»ćƒƒć‚·ćƒ§ćƒ³ć‚’ēµ‚äŗ†',\n zh: 'é€€å‡ŗä¼ščÆ',\n ko: 'ģ„øģ…˜ ģ¢…ė£Œ',\n },\n keywords: {\n en: ['exit', 'quit', 'close', 'end', 'bye', 'goodbye', 'stop'],\n ja: ['終了', '退出', '閉恘悋', '惐悤惐悤', 'ć•ć‚ˆć†ćŖć‚‰', '止める'],\n zh: ['退出', 'ē»“ęŸ', '关闭', 'å†č§', '停止'],\n ko: ['ģ¢…ė£Œ', 'ė‚˜ź°€źø°', 'ė‹«źø°', 'ė', 'ģ •ģ§€'],\n },\n examples: {\n en: ['exit session', 'quit app', 'goodbye'],\n ja: ['ć‚»ćƒƒć‚·ćƒ§ćƒ³ēµ‚äŗ†', 'ć‚¢ćƒ—ćƒŖć‚’é–‰ć˜ć‚‹', 'ć•ć‚ˆć†ćŖć‚‰'],\n zh: ['é€€å‡ŗä¼ščÆ', '关闭应用', 'å†č§'],\n ko: ['ģ„øģ…˜ ģ¢…ė£Œ', '앱 ģ¢…ė£Œ', 'ģ•ˆė…•'],\n },\n });\n\n // Add more commands as needed...\n }\n}\n","export type SupportedLanguage = 'en' | 'ja' | 'cn' | 'ko' | 'vn';\n\ninterface LanguageScore {\n language: SupportedLanguage;\n score: number;\n}\n\nexport class LanguageDetector {\n private languagePatterns: Map<SupportedLanguage, RegExp[]>;\n private characterRanges: Map<SupportedLanguage, RegExp[]>;\n\n constructor() {\n this.languagePatterns = new Map();\n this.characterRanges = new Map();\n this.initializePatterns();\n }\n\n async detect(text: string): Promise<SupportedLanguage> {\n const scores = this.calculateScores(text);\n\n // Sort by score descending\n scores.sort((a, b) => b.score - a.score);\n\n // If the top score is significantly higher, use it\n if (scores.length > 0 && scores[0]?.score && scores[0].score > 0) {\n return scores[0].language;\n }\n\n // Default to English\n return 'en';\n }\n\n private calculateScores(text: string): LanguageScore[] {\n const scores: LanguageScore[] = [\n { language: 'en', score: 0 },\n { language: 'ja', score: 0 },\n { language: 'cn', score: 0 },\n { language: 'ko', score: 0 },\n { language: 'vn', score: 0 },\n ];\n\n // Character-based detection\n this.characterRanges.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n const matches = text.match(pattern);\n if (matches) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += matches.length * 2;\n }\n }\n });\n });\n\n // Pattern-based detection for more accuracy\n this.languagePatterns.forEach((patterns, language) => {\n patterns.forEach((pattern) => {\n if (pattern.test(text)) {\n const score = scores.find((s) => s.language === language);\n if (score) {\n score.score += 3;\n }\n }\n });\n });\n\n // Check for English words (common programming terms)\n const englishTerms =\n /\\b(function|class|const|let|var|if|else|for|while|return|import|export|async|await|create|make|generate|write|code|test|review)\\b/i;\n if (englishTerms.test(text)) {\n const englishScore = scores.find((s) => s.language === 'en');\n if (englishScore) {\n englishScore.score += 5;\n }\n }\n\n // Normalize scores\n const totalChars = text.length;\n scores.forEach((score) => {\n if (totalChars > 0) {\n score.score = (score.score / totalChars) * 100;\n }\n });\n\n return scores;\n }\n\n private initializePatterns(): void {\n // Japanese patterns\n this.characterRanges.set('ja', [\n /[\\u3040-\\u309f]/g, // Hiragana\n /[\\u30a0-\\u30ff]/g, // Katakana\n /[\\u4e00-\\u9faf]/g, // Kanji (also used in Chinese)\n ]);\n\n this.languagePatterns.set('ja', [\n /[恁-悓]/, // Hiragana check\n /[ć‚”-惓]/, // Katakana check\n /恧恙|ます|恏恠恕恄|恗恦/, // Common endings\n /は|が|悒|恫|恧|と|恮|恋悉|まで/, // Particles\n ]);\n\n // Chinese patterns\n this.characterRanges.set('cn', [\n /[\\u4e00-\\u9faf]/g, // Chinese characters\n ]);\n\n this.languagePatterns.set('cn', [\n /ēš„|äŗ†|是|在|꜉|和|äø|äŗŗ|ꈑ|ä½ |他|儹/, // Common Chinese characters\n /čæ™|那|什么|ę€Žä¹ˆ|äøŗä»€ä¹ˆ/, // Common question words\n /吗|呢|吧|啊/, // Sentence particles\n ]);\n\n // Korean patterns\n this.characterRanges.set('ko', [\n /[\\uac00-\\ud7af]/g, // Hangul syllables\n /[\\u1100-\\u11ff]/g, // Hangul Jamo\n /[\\u3130-\\u318f]/g, // Hangul compatibility Jamo\n ]);\n\n this.languagePatterns.set('ko', [\n /[ź°€-ķž£]/, // Hangul check\n /ģž…ė‹ˆė‹¤|ģŠµė‹ˆė‹¤|ķ•©ė‹ˆė‹¤/, // Formal endings\n /ģ„|넼|ģ“|ź°€|ģ€|ėŠ”|ģ˜/, // Particles\n ]);\n\n // Vietnamese patterns\n this.characterRanges.set('vn', [\n /[a-zA-ZĆ Ć”įŗ£Ć£įŗ”Äƒįŗ±įŗÆįŗ³įŗµįŗ·Ć¢įŗ§įŗ„įŗ©įŗ«įŗ­Ä‘ĆØĆ©įŗ»įŗ½įŗ¹ĆŖį»įŗæį»ƒį»…į»‡Ć¬Ć­į»‰Ä©į»‹Ć²Ć³į»Ćµį»Ć“į»“į»‘į»•į»—į»™Ę”į»į»›į»Ÿį»”į»£Ć¹Ćŗį»§Å©į»„Ę°į»«į»©į»­į»Æį»±į»³Ć½į»·į»¹į»µ]/g, // Vietnamese with tones\n ]);\n\n this.languagePatterns.set('vn', [\n /[Ć Ć”įŗ£Ć£įŗ”Äƒįŗ±įŗÆįŗ³įŗµįŗ·Ć¢įŗ§įŗ„įŗ©įŗ«įŗ­Ä‘ĆØĆ©įŗ»įŗ½įŗ¹ĆŖį»įŗæį»ƒį»…į»‡Ć¬Ć­į»‰Ä©į»‹Ć²Ć³į»Ćµį»Ć“į»“į»‘į»•į»—į»™Ę”į»į»›į»Ÿį»”į»£Ć¹Ćŗį»§Å©į»„Ę°į»«į»©į»­į»Æį»±į»³Ć½į»·į»¹į»µ]/, // Vietnamese tones\n /vĆ |cį»§a|lĆ |có|được|trong|vį»›i|nĆ y|cho|Ä‘į»ƒ/, // Common Vietnamese words\n /khĆ“ng|nhʰng|cÅ©ng|nhʰ|từ|đến|sau|trước/, // More common words\n ]);\n\n // English patterns\n this.characterRanges.set('en', [\n /[a-zA-Z]/g, // Latin alphabet\n ]);\n\n this.languagePatterns.set('en', [\n /\\b(the|be|to|of|and|a|in|that|have|I|it|for|not|on|with|he|as|you|do|at)\\b/i, // Common English words\n /\\b(this|but|his|by|from|they|we|say|her|she|or|an|will|my|one|all|would|there|their)\\b/i,\n ]);\n }\n\n getLanguageName(code: SupportedLanguage): string {\n const names: Record<SupportedLanguage, string> = {\n en: 'English',\n ja: 'Japanese',\n cn: 'Chinese',\n ko: 'Korean',\n vn: 'Vietnamese',\n };\n return names[code] || 'Unknown';\n }\n\n isSupported(languageCode: string): languageCode is SupportedLanguage {\n return ['en', 'ja', 'cn', 'ko', 'vn'].includes(languageCode);\n }\n}\n","import { MultilingualDictionary } from '../analysis/MultilingualDictionary';\n\nexport interface CommandMapping {\n command: string;\n naturalPhrases: Map<string, string[]>;\n priority: number;\n}\n\nexport class CommandMappings {\n private mappings: CommandMapping[];\n private dictionary: MultilingualDictionary;\n private initialized: boolean = false;\n\n constructor() {\n this.mappings = [];\n this.dictionary = new MultilingualDictionary();\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n await this.dictionary.initialize();\n this.loadMappings();\n this.initialized = true;\n }\n\n async getSuggestions(_input: string, language: string, maxResults: number = 5): Promise<string[]> {\n const _lowerInput = input.toLowerCase();\n const suggestions: Array<{ command: string; score: number }> = [];\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n let score = 0;\n\n for (const phrase of _phrases) {\n if (phrase.toLowerCase().includes(_lowerInput)) {\n score += 2;\n }\n if (phrase.toLowerCase().startsWith(_lowerInput)) {\n score += 3;\n }\n }\n\n // Check command name match\n if (mapping.command.toLowerCase().includes(_lowerInput)) {\n score += 5;\n }\n\n if (score > 0) {\n suggestions.push({ command: mapping.command, score: score * mapping.priority });\n }\n }\n\n // Sort by score and return top results\n return suggestions\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults)\n .map((s) => s.command);\n }\n\n getCommandForPhrase(_phrase: string, language: string): string | null {\n const _lowerPhrase = phrase.toLowerCase();\n\n for (const mapping of this.mappings) {\n const _phrases =\n mapping.naturalPhrases.get(language) ?? mapping.naturalPhrases.get('en') ?? [];\n\n for (const naturalPhrase of _phrases) {\n if (lowerPhrase.includes(naturalPhrase.toLowerCase())) {\n return mapping.command;\n }\n }\n }\n\n return null;\n }\n\n private loadMappings(): void {\n // Core Development Commands\n this.mappings.push({\n command: '/code',\n naturalPhrases: new Map([\n [\n 'en',\n ['write code', 'create code', 'generate code', 'implement', 'build function', 'develop'],\n ],\n [\n 'ja',\n ['ć‚³ćƒ¼ćƒ‰ć‚’ę›øć„ć¦', 'å®Ÿč£…ć—ć¦', 'ćƒ—ćƒ­ć‚°ćƒ©ćƒ ć‚’ä½œć£ć¦', '関数を書いて', 'ć‚Æćƒ©ć‚¹ć‚’ä½œęˆ'],\n ],\n ['cn', ['写代码', '编写代码', 'å®žēŽ°', 'åˆ›å»ŗå‡½ę•°', 'ęž„å»ŗē±»']],\n ['ko', ['ģ½”ė“œ ģž‘ģ„±', 'źµ¬ķ˜„ķ•“ģ¤˜', 'ķ•Øģˆ˜ ė§Œė“¤ģ–“', 'ķ“ėž˜ģŠ¤ ģƒģ„±']],\n ['vn', ['viįŗæt mĆ£', 'tįŗ”o code', 'xĆ¢y dį»±ng hĆ m', 'phĆ”t triển']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/test',\n naturalPhrases: new Map([\n ['en', ['write test', 'create test', 'generate test', 'unit test', 'test this']],\n ['ja', ['ćƒ†ć‚¹ćƒˆć‚’ę›øć„ć¦', 'ćƒ†ć‚¹ćƒˆä½œęˆ', 'ćƒ¦ćƒ‹ćƒƒćƒˆćƒ†ć‚¹ćƒˆ', 'ćƒ†ć‚¹ćƒˆć—ć¦']],\n ['cn', ['写测试', 'åˆ›å»ŗęµ‹čÆ•', 'å•å…ƒęµ‹čÆ•', '测试这个']],\n ['ko', ['ķ…ŒģŠ¤ķŠø ģž‘ģ„±', 'ķ…ŒģŠ¤ķŠø ģƒģ„±', 'ė‹Øģœ„ ķ…ŒģŠ¤ķŠø']],\n ['vn', ['viįŗæt kiểm tra', 'tįŗ”o test', 'kiểm tra đʔn vị']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/review',\n naturalPhrases: new Map([\n ['en', ['review code', 'check code', 'analyze', 'improve', 'refactor']],\n ['ja', ['ć‚³ćƒ¼ćƒ‰ćƒ¬ćƒ“ćƒ„ćƒ¼', 'ē¢ŗčŖć—ć¦', '改善して', 'ćƒŖćƒ•ć‚”ć‚Æć‚æćƒŖćƒ³ć‚°']],\n ['cn', ['代码宔柄', 'ę£€ęŸ„ä»£ē ', '改进', '重Ꞅ']],\n ['ko', ['ģ½”ė“œ 리뷰', 'ź²€ķ† ķ•“ģ¤˜', 'ź°œģ„ ķ•“ģ¤˜', 'ė¦¬ķŒ©ķ† ė§']],\n ['vn', ['xem xĆ©t mĆ£', 'kiểm tra code', 'cįŗ£i thiện', 'tĆ”i cįŗ„u trĆŗc']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/model',\n naturalPhrases: new Map([\n ['en', ['switch model', 'change model', 'select model', 'use gpt', 'use claude']],\n ['ja', ['ćƒ¢ćƒ‡ćƒ«åˆ‡ć‚Šę›æćˆ', 'ćƒ¢ćƒ‡ćƒ«å¤‰ę›“', 'GPT使って', 'Claude使って']],\n ['cn', ['åˆ‡ę¢ęØ”åž‹', 'ę›“ę”¹ęØ”åž‹', '使用GPT', '使用Claude']],\n ['ko', ['ėŖØėø ģ „ķ™˜', 'ėŖØėø 변경', 'GPT ģ‚¬ģš©', 'Claude ģ‚¬ģš©']],\n ['vn', ['chuyển mĆ“ hƬnh', 'đổi model', 'dùng GPT', 'dùng Claude']],\n ]),\n priority: 0.8,\n });\n\n // Media Generation Commands\n this.mappings.push({\n command: '/image',\n naturalPhrases: new Map([\n [\n 'en',\n ['create image', 'generate image', 'draw picture', 'make illustration', 'design graphic'],\n ],\n ['ja', ['ē”»åƒć‚’ē”Ÿęˆ', 'ć‚¤ćƒ”ćƒ¼ć‚øć‚’ä½œć£ć¦', 'ēµµć‚’ęć„ć¦', 'ć‚¤ćƒ©ć‚¹ćƒˆć‚’ä½œęˆ']],\n ['cn', ['ē”Ÿęˆå›¾åƒ', 'åˆ›å»ŗå›¾ē‰‡', '画一幅画', 'åˆ¶ä½œę’å›¾']],\n ['ko', ['ģ“ėÆøģ§€ ģƒģ„±', '그림 그려줘', 'ģ¼ėŸ¬ģŠ¤ķŠø ė§Œė“¤ģ–“']],\n ['vn', ['tįŗ”o hƬnh įŗ£nh', 'vįŗ½ tranh', 'lĆ m minh hį»a']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/video',\n naturalPhrases: new Map([\n ['en', ['create video', 'generate video', 'make animation', 'produce movie']],\n ['ja', ['å‹•ē”»ć‚’ä½œć£ć¦', 'ćƒ“ćƒ‡ć‚Ŗć‚’ē”Ÿęˆ', 'ć‚¢ćƒ‹ćƒ”ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ä½œęˆ']],\n ['cn', ['åˆ›å»ŗč§†é¢‘', 'ē”ŸęˆåŠØē”»', 'åˆ¶ä½œå½±ē‰‡']],\n ['ko', ['ė¹„ė””ģ˜¤ ģƒģ„±', 'ė™ģ˜ģƒ ė§Œė“¤ģ–“', 'ģ• ė‹ˆė©”ģ“ģ…˜ ģ œģž‘']],\n ['vn', ['tįŗ”o video', 'lĆ m hoįŗ”t hƬnh', 'sįŗ£n xuįŗ„t phim']],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/avatar',\n naturalPhrases: new Map([\n ['en', ['show avatar', 'display character', 'ascii art']],\n ['ja', ['ć‚¢ćƒć‚æćƒ¼č”Øē¤ŗ', 'ć‚­ćƒ£ćƒ©ć‚Æć‚æćƒ¼č¦‹ć›ć¦', 'ć‚¢ć‚¹ć‚­ćƒ¼ć‚¢ćƒ¼ćƒˆ']],\n ['cn', ['ę˜¾ē¤ŗå¤“åƒ', '展示角色', 'ASCIIč‰ŗęœÆ']],\n ['ko', ['ģ•„ė°”ķƒ€ 볓기', '캐릭터 ķ‘œģ‹œ']],\n ['vn', ['hiển thị avatar', 'xem nhĆ¢n vįŗ­t']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/voice',\n naturalPhrases: new Map([\n ['en', ['talk to me', 'voice command', 'speak']],\n ['ja', ['話恗恋恑恦', 'éŸ³å£°ć‚³ćƒžćƒ³ćƒ‰', '話恗恦']],\n ['cn', ['å’Œęˆ‘čÆ“čÆ', 'čÆ­éŸ³å‘½ä»¤', 'čÆ“čÆ']],\n ['ko', ['ėŒ€ķ™”ķ•˜źø°', 'ģŒģ„± ėŖ…ė ¹']],\n ['vn', ['nói chuyện', 'lệnh giį»ng nói']],\n ]),\n priority: 0.7,\n });\n\n // Configuration Commands\n this.mappings.push({\n command: '/setup',\n naturalPhrases: new Map([\n ['en', ['setup system', 'initial setup', 'configure']],\n ['ja', ['ć‚»ćƒƒćƒˆć‚¢ćƒƒćƒ—', 'åˆęœŸčØ­å®š', 'ē’°å¢ƒę§‹ēÆ‰']],\n ['cn', ['设置系统', 'åˆå§‹č®¾ē½®', 'é…ē½®']],\n ['ko', ['설정', '쓈기 설정', 'ķ™˜ź²½ 구축']],\n ['vn', ['thiįŗæt lįŗ­p', 'cĆ i đặt ban đầu']],\n ]),\n priority: 0.8,\n });\n\n this.mappings.push({\n command: '/settings',\n naturalPhrases: new Map([\n ['en', ['show settings', 'check configuration', 'view config']],\n ['ja', ['čØ­å®šē¢ŗčŖ', 'čØ­å®šć‚’č¦‹ć‚‹', 'ć‚³ćƒ³ćƒ•ć‚£ć‚°ē¢ŗčŖ']],\n ['cn', ['ęŸ„ēœ‹č®¾ē½®', 'ę£€ęŸ„é…ē½®', '显示设置']],\n ['ko', ['설정 ķ™•ģø', '설정 볓기']],\n ['vn', ['xem cĆ i đặt', 'kiểm tra cįŗ„u hƬnh']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/config',\n naturalPhrases: new Map([\n ['en', ['configure', 'manage config', 'update settings']],\n ['ja', ['čØ­å®šē®”ē†', 'čØ­å®šę›“ę–°', 'ć‚³ćƒ³ćƒ•ć‚£ć‚°ē®”ē†']],\n ['cn', ['é…ē½®ē®”ē†', '曓新设置', 'ē®”ē†é…ē½®']],\n ['ko', ['설정 ꓀리', '설정 ģ—…ė°ģ“ķŠø']],\n ['vn', ['quįŗ£n lý cįŗ„u hƬnh', 'cįŗ­p nhįŗ­t cĆ i đặt']],\n ]),\n priority: 0.7,\n });\n\n // Project Management Commands\n this.mappings.push({\n command: '/init',\n naturalPhrases: new Map([\n ['en', ['initialize project', 'start new project', 'create project']],\n ['ja', ['ćƒ—ćƒ­ć‚øć‚§ć‚ÆćƒˆåˆęœŸåŒ–', 'ę–°č¦ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆ', 'ćƒ—ćƒ­ć‚øć‚§ć‚Æćƒˆä½œęˆ']],\n ['cn', ['åˆå§‹åŒ–é”¹ē›®', '新建锹目', 'åˆ›å»ŗé”¹ē›®']],\n ['ko', ['ķ”„ė”œģ ķŠø ģ“ˆźø°ķ™”', '새 ķ”„ė”œģ ķŠø']],\n ['vn', ['khởi tįŗ”o dį»± Ć”n', 'tįŗ”o dį»± Ć”n mį»›i']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/add-dir',\n naturalPhrases: new Map([\n ['en', ['add directory', 'include folder', 'add path']],\n ['ja', ['ćƒ‡ć‚£ćƒ¬ć‚ÆćƒˆćƒŖčæ½åŠ ', 'ćƒ•ć‚©ćƒ«ćƒ€čæ½åŠ ', 'ćƒ‘ć‚¹čæ½åŠ ']],\n ['cn', ['ę·»åŠ ē›®å½•', 'åŒ…å«ę–‡ä»¶å¤¹', 'ę·»åŠ č·Æå¾„']],\n ['ko', ['디렉토리 추가', 'ķ“ė” 추가']],\n ['vn', ['thĆŖm thʰ mỄc', 'thĆŖm Ä‘Ę°į»ng dįŗ«n']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/memory',\n naturalPhrases: new Map([\n ['en', ['manage memory', 'remember this', 'save context']],\n ['ja', ['ćƒ”ćƒ¢ćƒŖē®”ē†', 'ć“ć‚Œć‚’č¦šćˆć¦', 'ć‚³ćƒ³ćƒ†ć‚­ć‚¹ćƒˆäæå­˜']],\n ['cn', ['å†…å­˜ē®”ē†', 'č®°ä½čæ™äøŖ', 'äæå­˜äøŠäø‹ę–‡']],\n ['ko', ['메모리 ꓀리', 'ģ“ź²ƒ 기억핓']],\n ['vn', ['quįŗ£n lý bį»™ nhį»›', 'nhį»› điều nĆ y']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/export',\n naturalPhrases: new Map([\n ['en', ['export data', 'save output', 'download results']],\n ['ja', ['ćƒ‡ćƒ¼ć‚æć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆ', 'å‡ŗåŠ›äæå­˜', 'ēµęžœćƒ€ć‚¦ćƒ³ćƒ­ćƒ¼ćƒ‰']],\n ['cn', ['åÆ¼å‡ŗę•°ę®', 'äæå­˜č¾“å‡ŗ', 'äø‹č½½ē»“ęžœ']],\n ['ko', ['ė°ģ“ķ„° 낓볓낓기', '출렄 ģ €ģž„']],\n ['vn', ['xuįŗ„t dữ liệu', 'lʰu kįŗæt quįŗ£']],\n ]),\n priority: 0.6,\n });\n\n // File Save Commands - Extended patterns\n this.mappings.push({\n command: '/save',\n naturalPhrases: new Map([\n [\n 'en',\n [\n // Basic save patterns\n 'save this', 'save it', 'save that', 'save the code', 'save the response',\n 'save to file', 'write to file', 'store this', 'save as', 'save file',\n \n // Polite forms\n 'please save', 'can you save', 'could you save', 'would you save',\n 'kindly save', 'save please', 'save it please',\n \n // Action forms\n 'write this down', 'store it', 'keep this', 'put this in a file',\n 'create a file', 'make a file', 'generate file', 'export this',\n 'output to file', 'dump to file', 'persist this',\n \n // Contextual forms\n 'save what you just generated', 'save the above', 'save your response',\n 'save the output', 'save the result', 'save generated code',\n 'keep the code', 'store the code', 'file the code'\n ]\n ],\n [\n 'ja',\n [\n // Basic patterns\n 'äæå­˜ć—ć¦', 'ćƒ•ć‚”ć‚¤ćƒ«ć«äæå­˜', 'ć“ć‚Œć‚’äæå­˜', 'ć‚»ćƒ¼ćƒ–ć—ć¦', 'ćƒ•ć‚”ć‚¤ćƒ«äæå­˜',\n \n // Polite forms\n 'äæå­˜ć—ć¦ćć ć•ć„', 'äæå­˜ć—ć¦ć‚‚ć‚‰ćˆć‚‹', 'äæå­˜ć§ćć‚‹', 'äæå­˜ćŠé”˜ć„',\n 'äæå­˜ć—ć¦ć„ćŸć ć‘ć‚‹', 'äæå­˜ć‚’ćŠé”˜ć„ć—ć¾ć™',\n \n // Various expressions\n 'ćƒ•ć‚”ć‚¤ćƒ«ć«ę›øćč¾¼ć‚“ć§', 'ćƒ•ć‚”ć‚¤ćƒ«ć«ę›øć„ć¦', 'ćƒ•ć‚”ć‚¤ćƒ«ć«ć—ć¦',\n 'ćƒ•ć‚”ć‚¤ćƒ«åŒ–ć—ć¦', 'ćƒ•ć‚”ć‚¤ćƒ«ä½œęˆ', 'ćƒ•ć‚”ć‚¤ćƒ«ć‚’ä½œć£ć¦',\n \n // Output related\n 'ć‚³ćƒ¼ćƒ‰ć‚’äæå­˜', 'å‡ŗåŠ›ć‚’äæå­˜', 'ēµęžœć‚’äæå­˜', 'ćƒ¬ć‚¹ćƒćƒ³ć‚¹ć‚’äæå­˜',\n 'ē”Ÿęˆć—ćŸć‚‚ć®ć‚’äæå­˜', 'äøŠčØ˜ć‚’äæå­˜', 'ć“ć‚Œäæå­˜',\n \n // Casual forms\n 'ć‚»ćƒ¼ćƒ–', 'ć‚­ćƒ¼ćƒ—ć—ć¦', 'å–ć£ć¦ćŠć„ć¦', 'ꮋ恗恦',\n 'ćƒ•ć‚”ć‚¤ćƒ«ć«ę®‹ć—ć¦', 'ę›øćå‡ŗć—ć¦', 'ć‚Øć‚Æć‚¹ćƒćƒ¼ćƒˆć—ć¦'\n ]\n ],\n [\n 'cn', \n [\n 'äæå­˜', 'å­˜å‚Ø', 'äæå­˜čæ™äøŖ', 'äæå­˜åˆ°ę–‡ä»¶', '写兄文件',\n 'äæå­˜ä»£ē ', 'äæå­˜č¾“å‡ŗ', 'äæå­˜ē»“ęžœ', '存攣', 'å‚Øå­˜',\n 'čÆ·äæå­˜', 'äæå­˜äø€äø‹', 'åø®ęˆ‘äæå­˜', '导出', 'č¾“å‡ŗåˆ°ę–‡ä»¶',\n 'åˆ›å»ŗę–‡ä»¶', 'ē”Ÿęˆę–‡ä»¶', 'å†™åˆ°ę–‡ä»¶', 'č®°å½•äø‹ę„'\n ]\n ],\n [\n 'ko', \n [\n 'ģ €ģž„ķ•“ģ¤˜', 'ģ €ģž„ķ•“', 'ķŒŒģ¼ģ— ģ €ģž„', 'ģ“ź²ƒ ģ €ģž„', 'ģ €ģž„ ė¶€ķƒ',\n 'ģ½”ė“œ ģ €ģž„', '출렄 ģ €ģž„', 'ź²°ź³¼ ģ €ģž„', 'ķŒŒģ¼ė”œ ė§Œė“¤ģ–“',\n 'ķŒŒģ¼ ģƒģ„±', '낓볓낓기', 'ģµģŠ¤ķ¬ķŠø', 'ģ„øģ“ėøŒķ•“ģ¤˜'\n ]\n ],\n [\n 'vn', \n [\n 'lʰu nĆ y', 'lʰu lįŗ”i', 'lʰu vĆ o file', 'lʰu mĆ£', 'lʰu kįŗæt quįŗ£',\n 'ghi vĆ o file', 'tįŗ”o file', 'xuįŗ„t file', 'giữ lįŗ”i', 'lʰu giĆŗp'\n ]\n ],\n ]),\n priority: 1.0,\n });\n\n this.mappings.push({\n command: '/saveto',\n naturalPhrases: new Map([\n [\n 'en',\n [\n 'save to directory', 'save in folder', 'save at path',\n 'save to specific location', 'put in folder', 'write to directory',\n 'save in', 'store in directory', 'save to path'\n ]\n ],\n [\n 'ja',\n [\n 'ćƒ‡ć‚£ćƒ¬ć‚ÆćƒˆćƒŖć«äæå­˜', 'ćƒ•ć‚©ćƒ«ćƒ€ć«äæå­˜', 'ćƒ‘ć‚¹ć«äæå­˜',\n 'ē‰¹å®šć®å “ę‰€ć«äæå­˜', 'ćƒ•ć‚©ćƒ«ćƒ€ćƒ¼ć«å…„ć‚Œć¦', 'ćƒ‡ć‚£ćƒ¬ć‚ÆćƒˆćƒŖć«ę›øćč¾¼ćæ'\n ]\n ],\n ['cn', ['äæå­˜åˆ°ē›®å½•', 'äæå­˜åœØę–‡ä»¶å¤¹', 'äæå­˜åˆ°č·Æå¾„', 'å­˜å‚Øåˆ°ē‰¹å®šä½ē½®']],\n ['ko', ['디렉토리에 ģ €ģž„', 'ķ“ė”ģ— ģ €ģž„', 'ź²½ė”œģ— ģ €ģž„']],\n ['vn', ['lʰu vĆ o thʰ mỄc', 'lʰu tįŗ”i Ä‘Ę°į»ng dįŗ«n', 'lʰu vĆ o vị trĆ­ cỄ thể']],\n ]),\n priority: 0.9,\n });\n\n // Agent Management Commands\n this.mappings.push({\n command: '/agents',\n naturalPhrases: new Map([\n ['en', ['manage agents', 'show agents', 'list agents']],\n ['ja', ['ć‚Øćƒ¼ć‚øć‚§ćƒ³ćƒˆē®”ē†', 'ć‚Øćƒ¼ć‚øć‚§ćƒ³ćƒˆč”Øē¤ŗ', 'ć‚Øćƒ¼ć‚øć‚§ćƒ³ćƒˆäø€č¦§']],\n ['cn', ['箔理代理', 'ę˜¾ē¤ŗä»£ē†', 'åˆ—å‡ŗä»£ē†']],\n ['ko', ['ģ—ģ“ģ „ķŠø ꓀리', 'ģ—ģ“ģ „ķŠø ķ‘œģ‹œ']],\n ['vn', ['quįŗ£n lý agent', 'hiển thị agent']],\n ]),\n priority: 0.5,\n });\n\n // System Commands\n this.mappings.push({\n command: '/status',\n naturalPhrases: new Map([\n ['en', ['show status', 'system status', 'check status']],\n ['ja', ['ć‚¹ćƒ†ćƒ¼ć‚æć‚¹č”Øē¤ŗ', 'ć‚·ć‚¹ćƒ†ćƒ ēŠ¶ę…‹', 'ēŠ¶ę…‹ē¢ŗčŖ']],\n ['cn', ['ę˜¾ē¤ŗēŠ¶ę€', 'ē³»ē»ŸēŠ¶ę€', 'ę£€ęŸ„ēŠ¶ę€']],\n ['ko', ['상태 ķ‘œģ‹œ', 'ģ‹œģŠ¤ķ…œ 상태']],\n ['vn', ['hiển thị trįŗ”ng thĆ”i', 'trįŗ”ng thĆ”i hệ thống']],\n ]),\n priority: 0.7,\n });\n\n this.mappings.push({\n command: '/health',\n naturalPhrases: new Map([\n ['en', ['health check', 'system health', 'diagnostics']],\n ['ja', ['ćƒ˜ćƒ«ć‚¹ćƒć‚§ćƒƒć‚Æ', 'ć‚·ć‚¹ćƒ†ćƒ čØŗę–­', 'å„å…Øę€§ē¢ŗčŖ']],\n ['cn', ['å„åŗ·ę£€ęŸ„', 'ē³»ē»ŸčÆŠę–­', 'å„åŗ·ēŠ¶ę€']],\n ['ko', ['ķ—¬ģŠ¤ 첓크', 'ģ‹œģŠ¤ķ…œ 진단']],\n ['vn', ['kiểm tra sức khį»e', 'chįŗ©n đoĆ”n hệ thống']],\n ]),\n priority: 0.6,\n });\n\n this.mappings.push({\n command: '/clear',\n naturalPhrases: new Map([\n ['en', ['clear screen', 'clear chat', 'reset display']],\n ['ja', ['ē”»é¢ć‚ÆćƒŖć‚¢', 'ćƒćƒ£ćƒƒćƒˆć‚ÆćƒŖć‚¢', 'č”Øē¤ŗćƒŖć‚»ćƒƒćƒˆ']],\n ['cn', ['ęø…é™¤å±å¹•', 'ęø…é™¤čŠå¤©', 'é‡ē½®ę˜¾ē¤ŗ']],\n ['ko', ['화멓 ģ§€ģš°źø°', 'ģ±„ķŒ… ģ§€ģš°źø°']],\n ['vn', ['xóa mĆ n hƬnh', 'xóa chat']],\n ]),\n priority: 0.5,\n });\n\n this.mappings.push({\n command: '/help',\n naturalPhrases: new Map([\n ['en', ['show help', 'help me', 'list commands', 'how to use']],\n ['ja', ['ćƒ˜ćƒ«ćƒ—č”Øē¤ŗ', 'åŠ©ć‘ć¦', 'ć‚³ćƒžćƒ³ćƒ‰äø€č¦§', '使い方']],\n ['cn', ['显示帮助', 'åø®åŠ©ęˆ‘', 'åˆ—å‡ŗå‘½ä»¤', '如何使用']],\n ['ko', ['ė„ģ›€ė§ ķ‘œģ‹œ', 'ė„ģ™€ģ¤˜', 'ėŖ…ė ¹ ėŖ©ė”']],\n ['vn', ['hiển thị trợ giĆŗp', 'giĆŗp tĆ“i', 'danh sĆ”ch lệnh']],\n ]),\n priority: 0.9,\n });\n\n this.mappings.push({\n command: '/exit',\n naturalPhrases: new Map([\n ['en', ['exit', 'quit', 'goodbye', 'bye', 'close']],\n ['ja', ['終了', '退出', 'ć•ć‚ˆć†ćŖć‚‰', '惐悤惐悤', '閉恘悋']],\n ['cn', ['退出', 'ē»“ęŸ', 'å†č§', '关闭']],\n ['ko', ['ģ¢…ė£Œ', 'ė‚˜ź°€źø°', 'ģ•ˆė…•', 'ė‹«źø°']],\n ['vn', ['thoĆ”t', 'kįŗæt thĆŗc', 'tįŗ”m biệt', 'đóng']],\n ]),\n priority: 0.8,\n });\n\n // Language switching command\n this.mappings.push({\n command: '/lang',\n naturalPhrases: new Map([\n ['en', ['change language', 'switch language', 'set language', 'language settings']],\n ['ja', ['čØ€čŖžå¤‰ę›“', 'čØ€čŖžåˆ‡ć‚Šę›æćˆ', 'čØ€čŖžčØ­å®š', 'ę—„ęœ¬čŖžć«å¤‰ę›“']],\n ['cn', ['曓改语言', 'åˆ‡ę¢čÆ­čØ€', '语言设置', 'ę”¹ęˆäø­ę–‡']],\n ['ko', ['ģ–øģ–“ 변경', 'ģ–øģ–“ ģ „ķ™˜', 'ģ–øģ–“ 설정', 'ķ•œźµ­ģ–“ė”œ 변경']],\n ['vn', ['đổi ngĆ“n ngữ', 'chuyển ngĆ“n ngữ', 'cĆ i đặt ngĆ“n ngữ', 'đổi sang tiįŗæng việt']],\n ]),\n priority: 0.9,\n });\n }\n}\n","import type { CommandIntent, UserPattern } from '../types/common-types';\n\nexport class UserPatternAnalyzer {\n private patterns: UserPattern[] = [];\n private initialized: boolean = false;\n\n async initialize(): Promise<void> {\n if (this.initialized) {return;}\n\n // Load patterns from storage if available\n this.loadPatterns();\n this.initialized = true;\n }\n\n async recordPattern(_input: string, intent: CommandIntent): Promise<void> {\n const _pattern: UserPattern = {\n input,\n command: intent.command,\n confidence: intent.confidence,\n timestamp: new Date(),\n success: true, // Will be updated by feedback\n };\n\n this.patterns.push(_pattern);\n\n // Keep only recent patterns (last 1000)\n if (this.patterns.length > 1000) {\n this.patterns = this.patterns.slice(-1000);\n }\n\n this.savePatterns();\n }\n\n async recordFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n // Find the most recent _pattern matching this input\n const _pattern = this.patterns\n .slice()\n .reverse()\n .find((p) => p.input === input);\n\n if (_pattern) {\n pattern.success = wasCorrect;\n if (!wasCorrect) {\n // Record the correct command as a new _pattern\n this.patterns.push({\n input,\n command: correctCommand,\n confidence: 1.0,\n timestamp: new Date(),\n success: true,\n });\n }\n }\n\n this.savePatterns();\n }\n\n getPatternStats(): Record<string, number> {\n const stats: Record<string, number> = {};\n\n this.patterns.forEach((_pattern) => {\n if (pattern.success) {\n stats[pattern.command] = (stats[pattern.command] ?? 0) + 1;\n }\n });\n\n return stats;\n }\n\n getMostCommonPattern(input: string): string | null {\n const _similarPatterns = this.patterns.filter((p) => {\n return p.success && this.calculateSimilarity(p.input, input) > 0.7;\n });\n\n if (similarPatterns.length === 0) {return null;}\n\n // Count occurrences of each command\n const _commandCounts = new Map<string, number>();\n similarPatterns.forEach((p) => {\n commandCounts.set(p.command, (commandCounts.get(p.command) ?? 0) + 1);\n });\n\n // Return the most common command\n let maxCount = 0;\n let mostCommon: string | null = null;\n\n commandCounts.forEach((count, command) => {\n if (count > maxCount) {\n maxCount = count;\n mostCommon = command;\n }\n });\n\n return mostCommon;\n }\n\n private calculateSimilarity(_str1: string, str2: string): number {\n const _longer = str1.length > str2.length ? str1 : str2;\n const _shorter = str1.length > str2.length ? str2 : str1;\n\n if (longer.length === 0) {return 1.0;}\n\n const _distance = this.levenshteinDistance(_longer, _shorter);\n return (longer.length - _distance) / longer.length;\n }\n\n private levenshteinDistance(_str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1,\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n }\n\n async exportData(): Promise<unknown> {\n return {\n patterns: this.patterns,\n stats: this.getPatternStats(),\n };\n }\n\n async importData(data: unknown): Promise<void> {\n if (typeof data === 'object' && data !== null && 'patterns' in data) {\n const _imported = data as { patterns: UserPattern[] };\n this.patterns = imported.patterns;\n this.savePatterns();\n }\n }\n\n private loadPatterns(): void {\n // In production, load from persistent storage\n // For now, start with empty patterns\n this.patterns = [];\n }\n\n private savePatterns(): void {\n // In production, save to persistent storage\n // For now, keep in memory only\n }\n}\n","import { EventEmitter } from 'events';\nimport { NaturalLanguageProcessor } from '../infra/NaturalLanguageProcessor';\nimport { IntentRecognizer } from '../analysis/IntentRecognizer';\nimport { ParameterExtractor } from '../analysis/ParameterExtractor';\nimport { MultilingualDictionary } from '../analysis/MultilingualDictionary';\nimport { LanguageDetector } from '../infra/LanguageDetector';\nimport { CommandMappings } from './CommandMappings';\nimport { UserPatternAnalyzer } from '../analysis/UserPatternAnalyzer';\nimport type { CommandIntent, RouterConfig, RouterMetrics } from '../types/common-types';\nimport chalk from 'chalk';\n\nexport class IntelligentRouterService extends EventEmitter {\n private nlpProcessor: NaturalLanguageProcessor;\n private intentRecognizer: IntentRecognizer;\n private parameterExtractor: ParameterExtractor;\n private dictionary: MultilingualDictionary;\n private languageDetector: LanguageDetector;\n private commandMappings: CommandMappings;\n private userPatternAnalyzer: UserPatternAnalyzer;\n\n private config: Required<RouterConfig>;\n private metrics: RouterMetrics;\n private isInitialized: boolean = false;\n\n constructor(_config: RouterConfig = {}) {\n super();\n\n this.config = {\n confidenceThreshold: _config.confidenceThreshold ?? 0.85,\n enableLearning: _config.enableLearning ?? true,\n supportedLanguages: _config.supportedLanguages ?? ['en', 'ja', 'cn', 'ko', 'vn'],\n enableConfirmation: _config.enableConfirmation ?? true,\n maxAlternatives: _config.maxAlternatives ?? 3,\n };\n\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n\n this.nlpProcessor = new NaturalLanguageProcessor();\n this.intentRecognizer = new IntentRecognizer(this.config);\n this.parameterExtractor = new ParameterExtractor();\n this.dictionary = new MultilingualDictionary();\n this.languageDetector = new LanguageDetector();\n this.commandMappings = new CommandMappings();\n this.userPatternAnalyzer = new UserPatternAnalyzer();\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) {return;}\n\n try {\n // Initialize silently\n\n // Initialize all components\n await Promise.all([\n this.dictionary.initialize(),\n this.commandMappings.initialize(),\n this.nlpProcessor.initialize(),\n this.intentRecognizer.initialize(),\n this.userPatternAnalyzer.initialize(),\n ]);\n\n this.isInitialized = true;\n this.emit('initialized');\n\n // Initialized successfully\n } catch (_error) {\n console.error(chalk.red('Failed to initialize Intelligent Router:'), _error);\n throw _error;\n }\n }\n\n async route(input: string): Promise<CommandIntent | null> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n const _startTime = Date.now();\n this.metrics.totalRequests++;\n\n try {\n // Step 1: Detect _language\n const _language = await this.languageDetector.detect(input);\n\n if (!this.config.supportedLanguages.includes(_language)) {\n // Debug: Language fallback - commented out to prevent input field pollution\n // console.log(chalk.yellow(`Language '${_language}' not supported, falling back to English`));\n }\n\n // Step 2: Process natural _language\n const processedInput = await this.nlpProcessor.process(input, _language);\n\n // Step 3: Recognize intent\n const intent = await this.intentRecognizer.recognize(processedInput);\n\n if (!intent || intent.confidence < this.config.confidenceThreshold) {\n this.metrics.failedRoutes++;\n this.emit('route:failed', { input, _language, confidence: intent?.confidence ?? 0 });\n return null;\n }\n\n // Step 4: Extract _parameters\n const _parameters = await this.parameterExtractor.extract(input, intent.command, _language);\n\n // Step 5: Build command intent\n const commandIntent: CommandIntent = {\n command: intent.command,\n confidence: intent.confidence,\n _parameters,\n originalInput: input,\n _language,\n alternatives: intent.alternatives,\n };\n\n // Step 6: Learn from pattern if enabled\n if (this.config.enableLearning) {\n await this.userPatternAnalyzer.recordPattern(input, commandIntent);\n }\n\n // Update metrics\n this.metrics.successfulRoutes++;\n this.updateMetrics(intent.confidence, Date.now() - _startTime, intent.command);\n\n this.emit('route:success', commandIntent);\n\n return commandIntent;\n } catch (_error) {\n this.metrics.failedRoutes++;\n this.emit('route:_error', { input, _error });\n console.error(chalk.red('Routing _error:'), _error);\n return null;\n }\n }\n\n async suggestCommand(partialInput: string): Promise<string[]> {\n if (!this.isInitialized) {\n await this.initialize();\n }\n\n try {\n const _language = await this.languageDetector.detect(partialInput);\n const _suggestions = await this.commandMappings.getSuggestions(\n partialInput,\n _language,\n this.config.maxAlternatives,\n );\n\n return _suggestions;\n } catch (_error) {\n console.error('Failed to get _suggestions:', _error);\n return [];\n }\n }\n\n async getCommandExplanation(_command: string, language: string = 'en'): Promise<string> {\n return this.dictionary.getExplanation(command, language);\n }\n\n async needsConfirmation(intent: CommandIntent): Promise<boolean> {\n if (!this.config.enableConfirmation) {return false;}\n\n // Need confirmation for low confidence or destructive commands\n const _destructiveCommands = ['/delete', '/reset', '/clear', '/exit'];\n const _isDestructive = destructiveCommands.includes(intent.command);\n const _isLowConfidence = intent.confidence < 0.9;\n\n return _isDestructive || _isLowConfidence;\n }\n\n getMetrics(): RouterMetrics {\n return { ...this.metrics };\n }\n\n resetMetrics(): void {\n this.metrics = {\n totalRequests: 0,\n successfulRoutes: 0,\n failedRoutes: 0,\n averageConfidence: 0,\n averageResponseTime: 0,\n commandUsageStats: new Map(),\n };\n }\n\n private updateMetrics(_confidence: number, responseTime: number, command: string): void {\n // Update average confidence\n const _totalConfidence = this.metrics.averageConfidence * (this.metrics.successfulRoutes - 1);\n this.metrics.averageConfidence = (_totalConfidence + confidence) / this.metrics.successfulRoutes;\n\n // Update average response time\n const _totalResponseTime =\n this.metrics.averageResponseTime * (this.metrics.successfulRoutes - 1);\n this.metrics.averageResponseTime =\n (_totalResponseTime + responseTime) / this.metrics.successfulRoutes;\n\n // Update command usage stats\n const _currentCount = this.metrics.commandUsageStats.get(command) ?? 0;\n this.metrics.commandUsageStats.set(command, _currentCount + 1);\n }\n\n async trainOnFeedback(_input: string, correctCommand: string, wasCorrect: boolean): Promise<void> {\n if (!this.config.enableLearning) {return;}\n\n try {\n await this.userPatternAnalyzer.recordFeedback(input, correctCommand, wasCorrect);\n await this.intentRecognizer.updateModel(input, correctCommand, wasCorrect);\n\n this.emit('training:complete', { input, correctCommand, wasCorrect });\n } catch (_error) {\n console.error('Failed to train on feedback:', _error);\n }\n }\n\n getConfidenceThreshold(): number {\n return this.config.confidenceThreshold;\n }\n\n setConfidenceThreshold(threshold: number): void {\n if (threshold < 0 || threshold > 1) {\n throw new Error('Confidence threshold must be between 0 and 1');\n }\n this.config.confidenceThreshold = threshold;\n }\n\n getSupportedLanguages(): string[] {\n return [...this.config.supportedLanguages];\n }\n\n isLanguageSupported(language: string): boolean {\n return this.config.supportedLanguages.includes(language);\n }\n\n async exportLearningData(): Promise<unknown> {\n return this.userPatternAnalyzer.exportData();\n }\n\n async importLearningData(data: unknown): Promise<void> {\n await this.userPatternAnalyzer.importData(data);\n }\n\n dispose(): void {\n this.removeAllListeners();\n this.isInitialized = false;\n }\n}\n\n// Singleton instance\nlet routerInstance: IntelligentRouterService | null = null;\n\nexport function getIntelligentRouter(config?: RouterConfig): IntelligentRouterService {\n if (!routerInstance) {\n routerInstance = new IntelligentRouterService(config);\n }\n return routerInstance;\n}\n\nexport function resetIntelligentRouter(): void {\n if (routerInstance) {\n routerInstance.dispose();\n routerInstance = null;\n }\n}\n","/**\n * MARIA Memory System - System 1 Memory Implementation\n *\n * Fast, intuitive memory _patterns for immediate responses\n * Handles programming concepts, code _patterns, and user preferences\n */\n\nimport type {\n AntiPattern,\n CodePattern,\n CommandHistory,\n ConceptEdge,\n ConceptGraph,\n InteractionHistory,\n KnowledgeNode,\n MemoryEvent,\n NodeMetadata,\n PatternLibrary,\n SessionRecord,\n System1Config,\n System1Memory,\n UsagePattern,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport class System1MemoryManager implements System1Memory {\n private knowledgeNodes: Map<string, KnowledgeNode> = new Map();\n public userPreferences: UserPreferenceSet;\n\n // Private implementation details\n private conceptGraph: ConceptGraph;\n private interactionHistory: InteractionHistory;\n private patternLibrary: PatternLibrary;\n private config: System1Config;\n private cache: Map<string, unknown> = new Map();\n private lastAccessTimes: Map<string, Date> = new Map();\n\n constructor(_config: System1Config) {\n this._config = _config;\n this.conceptGraph = {\n nodes: new Map(),\n edges: new Map(),\n clusters: [],\n };\n this.interactionHistory = {\n sessions: [],\n commands: [],\n _patterns: [],\n };\n this.patternLibrary = {\n codePatterns: [],\n antiPatterns: [],\n bestPractices: [],\n templates: [],\n };\n this.userPreferences = this.initializeDefaultPreferences();\n }\n\n get programmingConcepts(): KnowledgeNode[] {\n return Array.from(this.knowledgeNodes.values())\n .filter((_node) => ['function', 'class', 'module', 'concept'].includes(node.type))\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n get businessLogic(): ConceptGraph {\n return this.conceptGraph;\n }\n\n get pastInteractions(): InteractionHistory {\n return this.interactionHistory;\n }\n\n get codePatterns(): PatternLibrary {\n return this.patternLibrary;\n }\n\n // Knowledge Node Management\n async addKnowledgeNode(\n type: KnowledgeNode['type'],\n name: string,\n content: string,\n embedding: number[],\n metadata: Partial<NodeMetadata> = {},\n ): Promise<KnowledgeNode> {\n const _node: KnowledgeNode = {\n id: this.generateNodeId(type, name),\n type,\n name,\n content,\n embedding,\n _confidence: 0.8,\n lastAccessed: new Date(),\n accessCount: 1,\n metadata: {\n complexity: 'medium',\n _quality: 0.8,\n relevance: 0.8,\n ...metadata,\n },\n };\n\n this.knowledgeNodes.set(node.id, _node);\n this.conceptGraph.nodes.set(node.id, _node);\n\n // Trigger cache cleanup if needed\n if (this.knowledgeNodes.size > this.config.maxKnowledgeNodes) {\n await this.cleanupLeastUsedNodes();\n }\n\n return _node;\n }\n\n async getKnowledgeNode(id: string): Promise<KnowledgeNode | null> {\n const _node = this.knowledgeNodes.get(id);\n if (_node) {\n // Update access _patterns for System 1 fast retrieval\n node.lastAccessed = new Date();\n node.accessCount++;\n this.lastAccessTimes.set(id, new Date());\n\n // Apply access decay\n this.applyAccessDecay(_node);\n }\n return _node || null;\n }\n\n async searchKnowledgeNodes(\n query: string,\n queryEmbedding: number[],\n limit: number = 10,\n ): Promise<KnowledgeNode[]> {\n const _cacheKey = `search:${query}:${limit}`;\n const _cached = this.cache.get(_cacheKey) as KnowledgeNode[];\n if (_cached) {\n return _cached;\n }\n\n const _results = Array.from(this.knowledgeNodes.values())\n .map((node) => ({\n node,\n similarity: this.calculateCosineSimilarity(queryEmbedding, node.embedding),\n }))\n .filter(({ similarity }) => similarity > 0.5)\n .sort((a, b) => b.similarity - a.similarity)\n .slice(0, limit)\n .map(({ _node }) => _node);\n\n // Cache _results for fast subsequent access\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n async updateKnowledgeNode(_id: string, updates: Partial<KnowledgeNode>): Promise<boolean> {\n const _node = this.knowledgeNodes.get(id);\n if (!_node) {return false;}\n\n Object.assign(_node, updates);\n node.lastAccessed = new Date();\n this.conceptGraph.nodes.set(id, _node);\n\n // Invalidate _related cache entries\n this.invalidateCache(`_node:${id}`);\n\n return true;\n }\n\n // Concept Graph Management\n async addConceptEdge(\n sourceId: string,\n targetId: string,\n type: ConceptEdge['type'],\n weight: number = 1.0,\n confidence: number = 0.8,\n ): Promise<ConceptEdge> {\n const edge: ConceptEdge = {\n id: `${sourceId}-${type}-${targetId}`,\n sourceId,\n targetId,\n type,\n weight,\n confidence,\n };\n\n this.conceptGraph.edges.set(edge.id, edge);\n return edge;\n }\n\n async getRelatedConcepts(_nodeId: string, maxDepth: number = 2): Promise<KnowledgeNode[]> {\n const _cacheKey = `_related:${nodeId}:${maxDepth}`;\n const _cached = this.cache.get(_cacheKey) as KnowledgeNode[];\n if (_cached) {\n return _cached;\n }\n\n const _related = new Set<string>();\n const _visited = new Set<string>();\n const queue: { id: string; depth: number }[] = [{ id: nodeId, depth: 0 }];\n\n while (queue.length > 0) {\n const { id, depth } = queue.shift()!;\n\n if (visited.has(id) || depth >= maxDepth) {continue;}\n visited.add(id);\n\n // Find all edges from this _node\n for (const edge of this.conceptGraph.edges.values()) {\n if (edge.sourceId === id && !visited.has(edge.targetId)) {\n related.add(edge.targetId);\n queue.push({ id: edge.targetId, depth: depth + 1 });\n }\n if (edge.targetId === id && !visited.has(edge.sourceId)) {\n related.add(edge.sourceId);\n queue.push({ id: edge.sourceId, depth: depth + 1 });\n }\n }\n }\n\n const _results = Array.from(_related)\n .map((id) => this.knowledgeNodes.get(id))\n .filter((node): node is KnowledgeNode => node !== undefined);\n\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n // Pattern Management\n async addCodePattern(_pattern: Omit<CodePattern, 'id'>): Promise<CodePattern> {\n const codePattern: CodePattern = {\n id: this.generatePatternId(pattern.name),\n ...pattern,\n };\n\n this.patternLibrary.codePatterns.push(codePattern);\n return codePattern;\n }\n\n async findCodePatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<CodePattern[]> {\n const _cacheKey = `_patterns:${language}:${framework}:${useCase}:${limit}`;\n const _cached = this.cache.get(_cacheKey) as CodePattern[];\n if (_cached) {\n return _cached;\n }\n\n let _patterns = this.patternLibrary.codePatterns;\n\n if (language) {\n _patterns = patterns.filter((p) => p.language === language);\n }\n if (framework) {\n _patterns = patterns.filter((p) => p.framework === framework);\n }\n if (useCase) {\n _patterns = patterns.filter((p) => p.useCase.toLowerCase().includes(useCase.toLowerCase()));\n }\n\n const _results = _patterns\n .sort((a, b) => {\n // Prioritize by complexity (beginner first) and performance\n const _complexityWeight = { beginner: 3, intermediate: 2, advanced: 1 };\n return (_complexityWeight[a.complexity] || 0) - (_complexityWeight[b.complexity] || 0);\n })\n .slice(0, limit);\n\n this.cache.set(_cacheKey, _results);\n return _results;\n }\n\n async addAntiPattern(_antiPattern: Omit<AntiPattern, 'id'>): Promise<AntiPattern> {\n const _pattern: AntiPattern = {\n id: this.generatePatternId(antiPattern.name),\n ...antiPattern,\n };\n\n this.patternLibrary.antiPatterns.push(_pattern);\n return _pattern;\n }\n\n async detectAntiPatterns(code: string): Promise<AntiPattern[]> {\n const detected: AntiPattern[] = [];\n\n for (const antiPattern of this.patternLibrary.antiPatterns) {\n for (const rule of antiPattern.detectionRules) {\n try {\n const _regex = new RegExp(rule.pattern, 'gi');\n if (regex.test(code)) {\n detected.push(antiPattern);\n break; // One detection per anti-_pattern\n }\n } catch (_error) {\n console.warn(`Invalid _regex _pattern: ${rule.pattern}`, _error);\n }\n }\n }\n\n return detected.sort((a, b) => {\n const _severityWeight = { critical: 4, high: 3, medium: 2, low: 1 };\n return (_severityWeight[b.severity] || 0) - (_severityWeight[a.severity] || 0);\n });\n }\n\n // Interaction History Management\n async recordSession(session: SessionRecord): Promise<void> {\n this.interactionHistory.sessions.push(session);\n\n // Update command frequencies\n for (const command of session.commands) {\n await this.updateCommandHistory(command);\n }\n\n // Detect new usage _patterns\n await this.detectUsagePatterns();\n\n // Limit history size\n if (this.interactionHistory.sessions.length > 1000) {\n this.interactionHistory.sessions = this.interactionHistory.sessions.slice(-500);\n }\n }\n\n async updateCommandHistory(command: string): Promise<void> {\n let commandHist = this.interactionHistory.commands.find((c) => c.command === command);\n\n if (!commandHist) {\n commandHist = {\n command,\n _frequency: 0,\n lastUsed: new Date(),\n successRate: 1.0,\n averageExecutionTime: 0,\n userSatisfaction: 0.8,\n };\n this.interactionHistory.commands.push(commandHist);\n }\n\n commandHist.frequency++;\n commandHist.lastUsed = new Date();\n }\n\n async getFrequentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.frequency - a.frequency)\n .slice(0, limit);\n }\n\n async getRecentCommands(limit: number = 10): Promise<CommandHistory[]> {\n return this.interactionHistory.commands\n .sort((a, b) => b.lastUsed.getTime() - a.lastUsed.getTime())\n .slice(0, limit);\n }\n\n // User Preferences Management\n async updateUserPreferences(updates: Partial<UserPreferenceSet>): Promise<void> {\n Object.assign(this.userPreferences, updates);\n this.invalidateCache('preferences');\n }\n\n async getUserPreference<K extends keyof UserPreferenceSet>(\n key: K,\n ): Promise<UserPreferenceSet[K]> {\n return this.userPreferences[key];\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'pattern_recognition':\n await this.processPatternRecognitionEvent(event);\n break;\n case 'learning_update':\n await this.processLearningUpdateEvent(event);\n break;\n default:\n // Store for potential System 2 processing\n break;\n }\n\n // Update access _patterns\n this.lastAccessTimes.set(event.id, new Date());\n }\n\n // Performance Optimization\n async cleanupLeastUsedNodes(): Promise<void> {\n const _nodeEntries = Array.from(this.knowledgeNodes.entries());\n const _sortedByUsage = nodeEntries.sort((a, b) => {\n const _aScore = this.calculateUsageScore(a[1]);\n const _bScore = this.calculateUsageScore(b[1]);\n return _aScore - _bScore;\n });\n\n // Remove least used 10%\n const _removeCount = Math.floor(this.config.maxKnowledgeNodes * 0.1);\n for (let i = 0; i < _removeCount && i < sortedByUsage.length; i++) {\n const _entry = _sortedByUsage[i];\n if (_entry) {\n const [nodeId] = _entry;\n this.knowledgeNodes.delete(nodeId);\n this.conceptGraph.nodes.delete(nodeId);\n this.invalidateCache(`_node:${nodeId}`);\n }\n }\n }\n\n async compressMemory(): Promise<void> {\n // Compress old interaction history\n const _cutoffDate = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days\n this.interactionHistory.sessions = this.interactionHistory.sessions.filter(\n (session) => session.startTime > _cutoffDate,\n );\n\n // Merge _similar _patterns\n await this.mergeimilarPatterns();\n\n // Clear old cache entries\n this.cache.clear();\n }\n\n // Private Helper Methods\n private generateNodeId(_type: string, name: string): string {\n return `${type}:${name}:${Date.now()}`;\n }\n\n private generatePatternId(name: string): string {\n return `_pattern:${name}:${Date.now()}`;\n }\n\n private calculateCosineSimilarity(_a: number[], b: number[]): number {\n if (a.length !== b.length) {return 0;}\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length && i < b.length; i++) {\n const _aVal = a[i] ?? 0;\n const _bVal = b[i] ?? 0;\n dotProduct += _aVal * _bVal;\n normA += _aVal * _aVal;\n normB += _bVal * _bVal;\n }\n\n return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n\n private applyAccessDecay(_node: KnowledgeNode): void {\n const _daysSinceAccess = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _decayFactor = Math.exp(-this.config.accessDecayRate * _daysSinceAccess);\n node.confidence *= _decayFactor;\n\n // Minimum _confidence threshold\n node.confidence = Math.max(node.confidence, 0.1);\n }\n\n private calculateUsageScore(_node: KnowledgeNode): number {\n const _recency = (Date.now() - node.lastAccessed.getTime()) / (1000 * 60 * 60 * 24);\n const _frequency = Math.log(node.accessCount + 1);\n const _confidence = node.confidence;\n const _quality = node.metadata.quality;\n\n return (_frequency + _confidence + _quality) / (1 + _recency * 0.1);\n }\n\n private invalidateCache(pattern: string): void {\n for (const key of this.cache.keys()) {\n if (key.includes(pattern)) {\n this.cache.delete(key);\n }\n }\n }\n\n private async detectUsagePatterns(): Promise<void> {\n // Analyze recent sessions for _patterns\n const _recentSessions = this.interactionHistory.sessions.slice(-20); // Last 20 sessions\n\n // Detect temporal _patterns\n const _hourlyUsage = new Map<number, number>();\n for (const session of _recentSessions) {\n const _hour = session.startTime.getHours();\n hourlyUsage.set(_hour, (hourlyUsage.get(_hour) || 0) + 1);\n }\n\n // Detect command _sequences\n const _sequences = new Map<string, number>();\n for (const session of _recentSessions) {\n for (let i = 0; i < session.commands.length - 1; i++) {\n const _sequence = `${session.commands[i]} -> ${session.commands[i + 1]}`;\n sequences.set(_sequence, (sequences.get(_sequence) || 0) + 1);\n }\n }\n\n // Store significant _patterns\n for (const [_sequence, _frequency] of sequences.entries()) {\n if (_frequency >= 3) {\n // Threshold for _pattern significance\n const _pattern: UsagePattern = {\n id: `seq:${_sequence}:${Date.now()}`,\n type: 'sequential',\n _pattern: _sequence,\n _frequency,\n _confidence: Math.min(_frequency / 10, 1.0),\n conditions: [],\n };\n\n this.interactionHistory.patterns.push(_pattern);\n }\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n // Extract code _patterns from generation events\n const _data = event.data as { code?: string; language?: string; context?: string };\n\n if (data.code && data.language) {\n // Simple _pattern extraction (in production, use AST analysis)\n const _patterns = this.extractCodePatterns(data.code, data.language);\n\n for (const _pattern of _patterns) {\n await this.addCodePattern(_pattern);\n }\n }\n }\n\n private async processPatternRecognitionEvent(event: MemoryEvent): Promise<void> {\n // Update _pattern _confidence based on recognition success\n const _data = event.data as { patternId?: string; success?: boolean };\n\n if (data.patternId) {\n const _pattern = this.patternLibrary.codePatterns.find((p) => p.id === data.patternId);\n if (_pattern && data.success !== undefined) {\n // Adjust _pattern effectiveness based on usage success\n const _adjustment = data.success ? 0.1 : -0.05;\n // Update _pattern performance metrics\n console.log(`Pattern ${data.patternId} _adjustment: ${_adjustment}`);\n }\n }\n }\n\n private async processLearningUpdateEvent(event: MemoryEvent): Promise<void> {\n // Update user preferences based on learning events\n const _data = event.data as {\n preference?: string;\n value?: unknown;\n _confidence?: number;\n };\n\n if (data.preference && data.value !== undefined) {\n // Update user preferences with new learning\n await this.adaptUserPreferences(data.preference, data.value, data.confidence || 0.8);\n }\n }\n\n private extractCodePatterns(_code: string, language: string): Omit<CodePattern, 'id'>[] {\n // Simplified _pattern extraction\n const _patterns: Omit<CodePattern, 'id'>[] = [];\n\n // Function _pattern detection\n const _functionRegex = /function\\s+(\\w+)\\s*\\([^)]*\\)\\s*{[^}]+}/g;\n let match;\n\n while ((match = functionRegex.exec(code)) !== null) {\n patterns.push({\n name: `Function: ${match[1]}`,\n description: `Function _pattern extracted from code`,\n code: match[0],\n language,\n useCase: 'Function definition',\n complexity: 'intermediate',\n performance: {\n timeComplexity: 'O(1)',\n spaceComplexity: 'O(1)',\n },\n examples: [],\n });\n }\n\n return _patterns;\n }\n\n private async adaptUserPreferences(\n preference: string,\n value: unknown,\n confidence: number,\n ): Promise<void> {\n // Adapt user preferences based on observed behavior\n // This would integrate with the learning engine\n console.log(`Adapting preference ${preference} to ${value} (_confidence: ${confidence})`);\n }\n\n private async mergeimilarPatterns(): Promise<void> {\n // Merge _patterns with high similarity to reduce redundancy\n const _patterns = this.patternLibrary.codePatterns;\n const merged: CodePattern[] = [];\n const _processed = new Set<string>();\n\n for (let i = 0; i < patterns.length; i++) {\n const _currentPattern = _patterns[i];\n if (!_currentPattern || processed.has(currentPattern.id)) {continue;}\n\n const _similar = _patterns\n .slice(i + 1)\n .filter(\n (p) =>\n p &&\n !processed.has(p.id) &&\n p.language === currentPattern.language &&\n this.calculatePatternSimilarity(_currentPattern, p) > 0.8,\n );\n\n if (similar.length > 0) {\n // Merge _similar _patterns\n const _mergedPattern = this.mergePatterns(_currentPattern, _similar);\n merged.push(_mergedPattern);\n\n processed.add(currentPattern.id);\n similar.forEach((p) => processed.add(p.id));\n } else {\n merged.push(_currentPattern);\n processed.add(currentPattern.id);\n }\n }\n\n this.patternLibrary.codePatterns = merged;\n }\n\n private calculatePatternSimilarity(_a: CodePattern, b: CodePattern): number {\n // Simple similarity calculation based on name and use case\n const _namesSimilar =\n a.name.toLowerCase().includes(b.name.toLowerCase()) ||\n b.name.toLowerCase().includes(a.name.toLowerCase());\n const _useCasesSimilar = a.useCase.toLowerCase() === b.useCase.toLowerCase();\n\n return (_namesSimilar ? 0.5 : 0) + (_useCasesSimilar ? 0.5 : 0);\n }\n\n private mergePatterns(_primary: CodePattern, _similar: CodePattern[]): CodePattern {\n // Merge multiple _similar _patterns into one\n return {\n ...primary,\n description: `${primary.description} (merged from ${similar.length + 1} _patterns)`,\n examples: [...primary.examples, ...similar.flatMap((p) => p.examples)],\n };\n }\n\n private initializeDefaultPreferences(): UserPreferenceSet {\n return {\n developmentStyle: {\n approach: 'iterative',\n preferredLanguages: [\n { language: 'typescript', proficiency: 'intermediate', _frequency: 0.8, preference: 4 },\n { language: 'javascript', proficiency: 'intermediate', _frequency: 0.6, preference: 3 },\n ],\n architecturalPatterns: [\n { name: 'MVC', familiarity: 0.7, preference: 3, usageFrequency: 0.5 },\n ],\n problemSolvingStyle: 'systematic',\n workPace: 'moderate',\n },\n communicationPreferences: {\n verbosity: 'moderate',\n explanationDepth: 'intermediate',\n codeCommentStyle: 'inline',\n feedbackStyle: 'constructive',\n },\n toolPreferences: {\n ide: ['vscode', 'webstorm'],\n frameworks: [\n { name: 'react', category: 'frontend', proficiency: 0.7, preference: 4 },\n { name: 'express', category: 'backend', proficiency: 0.6, preference: 3 },\n ],\n libraries: [{ name: 'lodash', category: 'utility', proficiency: 0.8, preference: 4 }],\n buildTools: ['webpack', 'vite'],\n testingTools: ['jest', 'vitest'],\n },\n learningStyle: {\n preferredMethods: [\n { type: 'hands_on', effectiveness: 0.9, preference: 5 },\n { type: 'visual', effectiveness: 0.7, preference: 4 },\n ],\n pace: 'moderate',\n complexity: 'simple_to_complex',\n feedback: 'immediate',\n },\n qualityStandards: {\n codeQuality: [\n { metric: 'maintainability', threshold: 80, priority: 'high' },\n { metric: 'readability', threshold: 75, priority: 'high' },\n ],\n testCoverage: 80,\n documentation: {\n required: true,\n style: 'standard',\n formats: ['markdown', 'jsdoc'],\n },\n performance: {\n responseTime: 200,\n throughput: 1000,\n memoryUsage: 512,\n cpuUsage: 70,\n },\n security: {\n requirements: [\n {\n type: 'authentication',\n description: 'Secure auth required',\n severity: 'high',\n mandatory: true,\n },\n ],\n compliance: [{ name: 'OWASP', version: '2021', requirements: ['Top 10 coverage'] }],\n scanningEnabled: true,\n },\n },\n };\n }\n}\n","/**\n * MARIA Memory System - System 2 Memory Implementation\n *\n * Deliberate reasoning and _quality _traces for complex decision making\n * Handles reasoning steps, _quality evaluation, and improvement suggestions\n */\n\nimport type {\n ActionItem,\n AlternativeReasoning,\n CodeQualityMetrics,\n DecisionNode,\n DecisionTree,\n Enhancement,\n Evidence,\n MemoryEvent,\n QualityMetrics,\n ReasoningContext,\n ReasoningStep,\n ReasoningTrace,\n ReflectionEntry,\n System2Config,\n System2Memory,\n} from './types/memory-interfaces';\n\nexport class System2MemoryManager implements System2Memory {\n private reasoningTraces: Map<string, ReasoningTrace> = new Map();\n private qualityMetrics: QualityMetrics;\n private decisionTrees: Map<string, DecisionTree> = new Map();\n private enhancements: Map<string, Enhancement> = new Map();\n private reflectionEntries: Map<string, ReflectionEntry> = new Map();\n private config: System2Config;\n private analysisCache: Map<string, unknown> = new Map();\n\n constructor(_config: System2Config) {\n this._config = _config;\n this.qualityMetrics = this.initializeQualityMetrics();\n }\n\n get reasoningSteps(): ReasoningTrace[] {\n return Array.from(this.reasoningTraces.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n get qualityEvaluation(): QualityMetrics {\n return this.qualityMetrics;\n }\n\n get decisionContext(): DecisionTree {\n // Return the most recent or most relevant decision _tree\n const _trees = Array.from(this.decisionTrees.values());\n return (\n trees.sort(\n (a, b) => b.metadata.lastUpdated.getTime() - a.metadata.lastUpdated.getTime(),\n )[0] || this.createEmptyDecisionTree()\n );\n }\n\n get improvementSuggestions(): Enhancement[] {\n return Array.from(this.enhancements.values())\n .filter(\n (_enhancement) => enhancement.status === 'proposed' || enhancement.status === 'approved',\n )\n .sort((a, b) => b.priority - a.priority);\n }\n\n get reflectionData(): ReflectionEntry[] {\n return Array.from(this.reflectionEntries.values()).sort(\n (a, b) => b.timestamp.getTime() - a.timestamp.getTime(),\n );\n }\n\n // Reasoning Trace Management\n async startReasoningTrace(_context: ReasoningContext,\n initialStep?: string,\n ): Promise<ReasoningTrace> {\n const _trace: ReasoningTrace = {\n id: this.generateTraceId(),\n timestamp: new Date(),\n context,\n steps: [],\n conclusion: '',\n confidence: 0.0,\n alternatives: [],\n metadata: {\n _complexity: this.assessComplexity(context),\n domain: this.identifyDomain(context),\n techniques: [],\n qualityScore: 0.0,\n reviewRequired: false,\n },\n };\n\n if (initialStep) {\n await this.addReasoningStep(trace.id, {\n type: 'analysis',\n description: 'Initial _problem analysis',\n input: context.problem,\n output: initialStep,\n });\n }\n\n this.reasoningTraces.set(trace.id, _trace);\n await this.manageTraceLimit();\n\n return _trace;\n }\n\n async addReasoningStep(\n traceId: string,\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n ): Promise<ReasoningStep> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n const _startTime = Date.now();\n\n const step: ReasoningStep = {\n id: this.generateStepId(traceId),\n confidence: this.calculateStepConfidence(stepData, _trace),\n duration: 0, // Will be updated when step completes\n dependencies: this.identifyDependencies(stepData, trace.steps),\n ...stepData,\n };\n\n trace.steps.push(step);\n trace.metadata.techniques.push(stepData.type);\n\n // Update step duration\n step.duration = Date.now() - _startTime;\n\n // Update _trace _quality and _complexity\n await this.updateTraceQuality(_trace);\n\n return step;\n }\n\n async completeReasoningTrace(\n traceId: string,\n conclusion: string,\n confidence: number,\n ): Promise<ReasoningTrace> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n trace.conclusion = conclusion;\n trace.confidence = confidence;\n trace.metadata.qualityScore = await this.calculateReasoningQuality(_trace);\n trace.metadata.reviewRequired = trace.metadata.qualityScore < this.config.qualityThreshold;\n\n // Generate improvement suggestions based on the _trace\n await this.generateImprovementSuggestions(_trace);\n\n // Update global _quality metrics\n await this.updateGlobalQualityMetrics(_trace);\n\n return _trace;\n }\n\n async addAlternativeReasoning(\n traceId: string,\n alternative: Omit<AlternativeReasoning, 'id'>,\n ): Promise<AlternativeReasoning> {\n const _trace = this.reasoningTraces.get(traceId);\n if (!_trace) {\n throw new Error(`Reasoning _trace ${traceId} not _found`);\n }\n\n const altReasoning: AlternativeReasoning = {\n id: this.generateAlternativeId(traceId),\n ...alternative,\n };\n\n trace.alternatives.push(altReasoning);\n return altReasoning;\n }\n\n async getReasoningTrace(traceId: string): Promise<ReasoningTrace | null> {\n return this.reasoningTraces.get(traceId) || null;\n }\n\n async searchReasoningTraces(\n query: {\n domain?: string;\n _complexity?: string;\n minQuality?: number;\n timeframe?: { start: Date; end: Date };\n },\n limit: number = 10,\n ): Promise<ReasoningTrace[]> {\n const _cacheKey = `search:reasoning:${JSON.stringify(query)}:${limit}`;\n const _cached = this.analysisCache.get(_cacheKey) as ReasoningTrace[];\n if (_cached) {\n return _cached;\n }\n\n let _traces = Array.from(this.reasoningTraces.values());\n\n if (query.domain) {\n _traces = traces.filter((_trace) => trace.metadata.domain === query.domain);\n }\n\n if (query.complexity) {\n _traces = traces.filter((_trace) => trace.metadata.complexity === query.complexity);\n }\n\n if (query.minQuality !== undefined) {\n _traces = traces.filter((_trace) => trace.metadata.qualityScore >= (query.minQuality ?? 0));\n }\n\n if (query.timeframe) {\n _traces = traces.filter(\n (_trace) =>\n trace.timestamp >= query.timeframe!.start && trace.timestamp <= query.timeframe!.end,\n );\n }\n\n const _results = _traces\n .sort((a, b) => b.metadata.qualityScore - a.metadata.qualityScore)\n .slice(0, limit);\n\n this.analysisCache.set(_cacheKey, _results);\n return _results;\n }\n\n // Decision Tree Management\n async createDecisionTree(_domain: string, initialCondition: string): Promise<DecisionTree> {\n const _tree: DecisionTree = {\n id: this.generateDecisionTreeId(domain),\n rootNode: {\n id: 'root',\n type: 'condition',\n description: initialCondition,\n children: [],\n confidence: 0.8,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain,\n _complexity: 1,\n accuracy: 0.8,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n\n this.decisionTrees.set(tree.id, _tree);\n return _tree;\n }\n\n async addDecisionNode(\n treeId: string,\n parentNodeId: string,\n _node: Omit<DecisionNode, 'id'>,\n ): Promise<DecisionNode> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n throw new Error(`Decision _tree ${treeId} not _found`);\n }\n\n const newNode: DecisionNode = {\n id: this.generateNodeId(treeId),\n ...node,\n };\n\n const _parentNode = this.findDecisionNode(tree.rootNode, parentNodeId);\n if (_parentNode) {\n parentNode.children.push(newNode);\n tree.metadata.complexity = this.calculateTreeComplexity(tree.rootNode);\n tree.metadata.lastUpdated = new Date();\n }\n\n return newNode;\n }\n\n async addEvidence(_treeId: string, nodeId: string, evidence: Evidence): Promise<void> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n throw new Error(`Decision _tree ${treeId} not _found`);\n }\n\n const _node = this.findDecisionNode(tree.rootNode, nodeId);\n if (_node) {\n node.evidence.push(evidence);\n\n // Recalculate _node confidence based on evidence\n node.confidence = this.calculateNodeConfidence(node.evidence);\n tree.metadata.lastUpdated = new Date();\n }\n }\n\n async queryDecisionTree(\n treeId: string,\n context: Record<string, unknown>,\n ): Promise<DecisionNode[]> {\n const _tree = this.decisionTrees.get(treeId);\n if (!_tree) {\n return [];\n }\n\n tree.metadata.usageCount++;\n return this.traverseDecisionTree(tree.rootNode, context);\n }\n\n // Enhancement Management\n async proposeEnhancement(_enhancement: Omit<Enhancement, 'id' | 'status'>): Promise<Enhancement> {\n const newEnhancement: Enhancement = {\n id: this.generateEnhancementId(),\n status: 'proposed',\n ...enhancement,\n };\n\n this.enhancements.set(newEnhancement.id, newEnhancement);\n\n // Automatically approve low-risk, high-impact enhancements\n if (this.shouldAutoApprove(newEnhancement)) {\n newEnhancement.status = 'approved';\n }\n\n return newEnhancement;\n }\n\n async updateEnhancementStatus(\n enhancementId: string,\n status: Enhancement['status'],\n feedback?: string,\n ): Promise<boolean> {\n const _enhancement = this.enhancements.get(enhancementId);\n if (!_enhancement) {\n return false;\n }\n\n // Use feedback if provided\n if (feedback) {\n console.log(`Enhancement feedback: ${feedback}`);\n }\n\n enhancement.status = status;\n\n if (status === 'completed') {\n await this.evaluateEnhancementImpact(_enhancement);\n }\n\n return true;\n }\n\n async getEnhancementsByType(type: Enhancement['type']): Promise<Enhancement[]> {\n return Array.from(this.enhancements.values())\n .filter((_enhancement) => enhancement.type === type)\n .sort((a, b) => b.priority - a.priority);\n }\n\n // Reflection Management\n async addReflectionEntry(\n trigger: string,\n observation: string,\n analysis: string,\n insight: string,\n confidence: number = 0.8,\n ): Promise<ReflectionEntry> {\n const _reflection: ReflectionEntry = {\n id: this.generateReflectionId(),\n timestamp: new Date(),\n trigger,\n observation,\n analysis,\n insight,\n actionItems: [],\n confidence,\n };\n\n this.reflectionEntries.set(reflection.id, _reflection);\n\n // Generate action items from insights\n await this.generateActionItems(_reflection);\n\n return _reflection;\n }\n\n async addActionItem(\n reflectionId: string,\n actionItem: Omit<ActionItem, 'id' | 'status'>,\n ): Promise<ActionItem> {\n const _reflection = this.reflectionEntries.get(reflectionId);\n if (!_reflection) {\n throw new Error(`Reflection entry ${reflectionId} not _found`);\n }\n\n const action: ActionItem = {\n id: this.generateActionItemId(reflectionId),\n status: 'open',\n ...actionItem,\n };\n\n reflection.actionItems.push(action);\n return action;\n }\n\n async getReflectionInsights(\n timeframe?: { start: Date; end: Date },\n minConfidence: number = 0.7,\n ): Promise<ReflectionEntry[]> {\n let reflections = Array.from(this.reflectionEntries.values());\n\n if (timeframe) {\n reflections = reflections.filter(\n (r) => r.timestamp >= timeframe.start && r.timestamp <= timeframe.end,\n );\n }\n\n return reflections\n .filter((r) => r.confidence >= minConfidence)\n .sort((a, b) => b.confidence - a.confidence);\n }\n\n // Memory Event Processing\n async processMemoryEvent(event: MemoryEvent): Promise<void> {\n switch (event.type) {\n case 'code_generation':\n await this.processCodeGenerationEvent(event);\n break;\n case 'bug_fix':\n await this.processBugFixEvent(event);\n break;\n case 'quality_improvement':\n await this.processQualityImprovementEvent(event);\n break;\n default:\n await this.processGenericEvent(event);\n break;\n }\n }\n\n // Quality Assessment\n async assessCodeQuality(\n code: string,\n language: string,\n context?: Record<string, unknown>,\n ): Promise<CodeQualityMetrics> {\n // Use context if provided\n if (context) {\n console.log('Code _quality context:', Object.keys(context));\n }\n const _cacheKey = `_quality:${this.hashCode(code)}:${ language }`;\n const _cached = this.analysisCache.get(_cacheKey) as CodeQualityMetrics;\n if (_cached) {\n return _cached;\n }\n\n const metrics: CodeQualityMetrics = {\n maintainability: await this.calculateMaintainability(code, _language),\n readability: await this.calculateReadability(code, _language),\n testability: await this.calculateTestability(code, _language),\n performance: await this.calculatePerformance(code, _language),\n security: await this.calculateSecurity(code, _language),\n bugDensity: await this.calculateBugDensity(code, _language),\n _complexity: await this.calculateCyclomaticComplexity(code, _language),\n };\n\n this.analysisCache.set(_cacheKey, metrics);\n return metrics;\n }\n\n async updateQualityMetrics(metrics: Partial<QualityMetrics>): Promise<void> {\n Object.assign(this.qualityMetrics, metrics);\n }\n\n // Private Helper Methods\n private generateTraceId(): string {\n return `_trace:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateStepId(traceId: string): string {\n return `${traceId}:step:${Date.now()}`;\n }\n\n private generateAlternativeId(traceId: string): string {\n return `${traceId}:alt:${Date.now()}`;\n }\n\n private generateDecisionTreeId(domain: string): string {\n return `_tree:${domain}:${Date.now()}`;\n }\n\n private generateNodeId(treeId: string): string {\n return `${treeId}:_node:${Date.now()}`;\n }\n\n private generateEnhancementId(): string {\n return `_enhancement:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateReflectionId(): string {\n return `_reflection:${Date.now()}:${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private generateActionItemId(reflectionId: string): string {\n return `${reflectionId}:action:${Date.now()}`;\n }\n\n private assessComplexity(_context: ReasoningContext,\n ): 'simple' | 'moderate' | 'complex' | 'very_complex' {\n const _factors = [\n context.goals.length > 3,\n context.constraints.length > 2,\n context.assumptions.length > 3,\n context.problem.length > 500,\n ];\n\n const _complexityScore = factors.filter(Boolean).length;\n\n if (_complexityScore === 0) {return 'simple';}\n if (_complexityScore === 1) {return 'moderate';}\n if (_complexityScore === 2) {return 'complex';}\n return 'very_complex';\n }\n\n private identifyDomain(context: ReasoningContext): string {\n const _problem = context.problem.toLowerCase();\n\n if (problem.includes('performance') || problem.includes('optimization')) {\n return 'performance';\n }\n if (problem.includes('security') || problem.includes('vulnerability')) {\n return 'security';\n }\n if (problem.includes('architecture') || problem.includes('design')) {\n return 'architecture';\n }\n if (problem.includes('bug') || problem.includes('error')) {\n return 'debugging';\n }\n\n return 'general';\n }\n\n private calculateStepConfidence(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n _trace: ReasoningTrace,\n ): number {\n let confidence = 0.8; // Base confidence\n\n // Adjust based on step type\n switch (stepData.type) {\n case 'analysis':\n confidence = 0.7;\n break;\n case 'inference':\n confidence = 0.6;\n break;\n case 'evaluation':\n confidence = 0.8;\n break;\n case 'synthesis':\n confidence = 0.5;\n break;\n }\n\n // Adjust based on input/output _quality\n if (stepData.input.length > 100) {confidence += 0.1;}\n if (stepData.output.length > 100) {confidence += 0.1;}\n\n // Adjust based on _trace _complexity\n if (trace.metadata.complexity === 'simple') {confidence += 0.1;}\n if (trace.metadata.complexity === 'very_complex') {confidence -= 0.1;}\n\n return Math.max(0.1, Math.min(1.0, confidence));\n }\n\n private identifyDependencies(\n stepData: Omit<ReasoningStep, 'id' | 'confidence' | 'duration' | 'dependencies'>,\n existingSteps: ReasoningStep[],\n ): string[] {\n const dependencies: string[] = [];\n\n // Simple keyword-based dependency detection\n for (const step of existingSteps) {\n if (stepData.input.includes(step.output.slice(0, 50))) {\n dependencies.push(step.id);\n }\n }\n\n return dependencies;\n }\n\n private async updateTraceQuality(_trace: ReasoningTrace): Promise<void> {\n // Calculate _quality based on step _coherence and _completeness\n const _stepCount = trace.steps.length;\n const _avgConfidence = trace.steps.reduce((sum, step) => sum + step.confidence, 0) / _stepCount;\n const _hasAnalysis = trace.steps.some((step) => step.type === 'analysis');\n const _hasEvaluation = trace.steps.some((step) => step.type === 'evaluation');\n\n let _quality = _avgConfidence * 0.6;\n if (_hasAnalysis) {_quality += 0.2;}\n if (_hasEvaluation) {_quality += 0.2;}\n\n trace.metadata.qualityScore = Math.max(0, Math.min(1, _quality));\n }\n\n private async calculateReasoningQuality(trace: ReasoningTrace): Promise<number> {\n const _factors = {\n _coherence: this.calculateCoherence(trace),\n _completeness: this.calculateCompleteness(trace),\n accuracy: this.calculateAccuracy(trace),\n efficiency: this.calculateEfficiency(trace),\n _creativity: this.calculateCreativity(trace),\n };\n\n return (\n Object.values(_factors).reduce((sum, value) => sum + value, 0) / Object.keys(_factors).length\n );\n }\n\n private calculateCoherence(_trace: ReasoningTrace): number {\n // Measure logical flow between steps\n let coherenceSum = 0;\n let pairCount = 0;\n\n for (let i = 1; i < trace.steps.length; i++) {\n const _prev = trace.steps[i - 1];\n const _curr = trace.steps[i];\n\n // Simple _coherence check: current step input relates to previous step output\n const _coherence = _curr?.input.includes(_prev?.output.slice(0, 30) || '') ? 1 : 0.5;\n coherenceSum += _coherence;\n pairCount++;\n }\n\n return pairCount > 0 ? coherenceSum / pairCount : 0.8;\n }\n\n private calculateCompleteness(_trace: ReasoningTrace): number {\n const _requiredStepTypes = ['analysis', 'evaluation'];\n const _presentTypes = new Set(trace.steps.map((step) => step.type as string));\n\n const _completeness =\n requiredStepTypes.filter((type) => presentTypes.has(type)).length / requiredStepTypes.length;\n return _completeness;\n }\n\n private calculateAccuracy(_trace: ReasoningTrace): number {\n // Base on step confidence and alternative consideration\n const _avgConfidence =\n trace.steps.reduce((sum, step) => sum + step.confidence, 0) / trace.steps.length;\n const _alternativeBonus = trace.alternatives.length > 0 ? 0.1 : 0;\n\n return Math.min(1, _avgConfidence + _alternativeBonus);\n }\n\n private calculateEfficiency(_trace: ReasoningTrace): number {\n // Measure steps per unit of _complexity\n const _complexity = { simple: 1, moderate: 2, complex: 3, verycomplex: 4 }[\n trace.metadata.complexity\n ];\n const _stepEfficiency = Math.max(0.2, 1 - (trace.steps.length - _complexity) * 0.1);\n\n return _stepEfficiency;\n }\n\n private calculateCreativity(_trace: ReasoningTrace): number {\n // Measure use of diverse reasoning techniques and alternatives\n const _uniqueTechniques = new Set(trace.metadata.techniques).size;\n const _alternativeCount = trace.alternatives.length;\n\n const _creativity = Math.min(1, _uniqueTechniques * 0.3 + _alternativeCount * 0.2 + 0.5);\n return _creativity;\n }\n\n private async generateImprovementSuggestions(_trace: ReasoningTrace): Promise<void> {\n if (trace.metadata.qualityScore < 0.7) {\n await this.proposeEnhancement({\n type: '_quality',\n description: `Improve reasoning _quality for ${trace.metadata.domain} problems`,\n impact: {\n benefitScore: 7,\n effortScore: 5,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['reasoning', 'decision-making'],\n },\n implementation: {\n phases: [\n {\n id: 'analysis',\n name: 'Quality Analysis',\n description: 'Analyze low-_quality reasoning patterns',\n duration: 3,\n deliverables: ['Pattern analysis', 'Improvement plan'],\n dependencies: [],\n },\n ],\n timeline: 7,\n resources: [\n {\n type: 'developer',\n quantity: 1,\n duration: 7,\n },\n ],\n dependencies: [],\n risks: [\n {\n id: '_complexity',\n description: 'Reasoning improvement may add _complexity',\n probability: 0.3,\n impact: 4,\n mitigation: 'Gradual implementation with testing',\n contingency: 'Rollback to previous version',\n },\n ],\n },\n priority: 6,\n });\n }\n }\n\n private async updateGlobalQualityMetrics(trace: ReasoningTrace): Promise<void> {\n // Update reasoning _quality metrics\n const _currentReasoning = this.qualityMetrics.reasoningQuality;\n\n this.qualityMetrics.reasoningQuality = {\n _coherence: (currentReasoning.coherence + this.calculateCoherence(trace)) / 2,\n _completeness: (currentReasoning.completeness + this.calculateCompleteness(trace)) / 2,\n accuracy: (currentReasoning.accuracy + this.calculateAccuracy(trace)) / 2,\n efficiency: (currentReasoning.efficiency + this.calculateEfficiency(trace)) / 2,\n _creativity: (currentReasoning.creativity + this.calculateCreativity(trace)) / 2,\n };\n }\n\n private createEmptyDecisionTree(): DecisionTree {\n return {\n id: 'empty',\n rootNode: {\n id: 'root',\n type: 'condition',\n description: 'No decision context available',\n children: [],\n confidence: 0,\n evidence: [],\n alternatives: [],\n },\n metadata: {\n domain: 'unknown',\n _complexity: 0,\n accuracy: 0,\n lastUpdated: new Date(),\n usageCount: 0,\n },\n };\n }\n\n private findDecisionNode(_root: DecisionNode, nodeId: string): DecisionNode | null {\n if (root.id === nodeId) {return root;}\n\n for (const child of root.children) {\n const _found = this.findDecisionNode(child, nodeId);\n if (_found) {return _found;}\n }\n\n return null;\n }\n\n private calculateTreeComplexity(root: DecisionNode): number {\n let maxDepth = 0;\n let nodeCount = 0;\n\n const _traverse = (_node: DecisionNode, depth: number) => {\n nodeCount++;\n maxDepth = Math.max(maxDepth, depth);\n\n for (const child of node.children) {\n _traverse(child, depth + 1);\n }\n };\n\n _traverse(root, 1);\n return maxDepth + Math.log(nodeCount);\n }\n\n private calculateNodeConfidence(evidence: Evidence[]): number {\n if (evidence.length === 0) {return 0.5;}\n\n const _weightedSum = evidence.reduce((sum, e) => sum + e.strength, 0);\n return Math.min(1, _weightedSum / evidence.length);\n }\n\n private traverseDecisionTree(\n node: DecisionNode,\n context: Record<string, unknown>,\n ): DecisionNode[] {\n const path: DecisionNode[] = [node];\n\n // Simple rule-based traversal (in production, use more sophisticated logic)\n for (const child of node.children) {\n if (child.type === 'condition' && this.evaluateCondition(child, context)) {\n path.push(...this.traverseDecisionTree(child, context));\n break;\n }\n }\n\n return path;\n }\n\n private evaluateCondition(_node: DecisionNode, _context: Record<string, unknown>): boolean {\n // Simplified condition evaluation\n return node.confidence > 0.5;\n }\n\n private shouldAutoApprove(_enhancement: Enhancement): boolean {\n return (\n enhancement.impact.riskScore <= 3 &&\n enhancement.impact.benefitScore >= 7 &&\n enhancement.priority >= 7\n );\n }\n\n private async evaluateEnhancementImpact(_enhancement: Enhancement): Promise<void> {\n // Evaluate the actual impact of completed enhancements\n console.log(`Evaluating impact of _enhancement: ${enhancement.description}`);\n\n // This would integrate with performance monitoring and user feedback systems\n // to measure the actual impact and improve future _enhancement predictions\n }\n\n private async generateActionItems(_reflection: ReflectionEntry): Promise<void> {\n // Generate actionable items from _reflection insights\n const _insight = reflection.insight.toLowerCase();\n\n if (insight.includes('improve') || insight.includes('optimize')) {\n await this.addActionItem(reflection.id, {\n description: `Implement improvement based on: ${reflection.insight}`,\n priority: 7,\n dueDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 1 week\n });\n }\n\n if (insight.includes('learn') || insight.includes('study')) {\n await this.addActionItem(reflection.id, {\n description: `Research and learn: ${reflection.insight}`,\n priority: 5,\n dueDate: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000), // 2 weeks\n });\n }\n }\n\n private async processCodeGenerationEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { code?: string; language?: string; _quality?: number };\n\n if (data.code && data.language) {\n const _quality = await this.assessCodeQuality(data.code, data.language);\n\n if (quality.maintainability < 70) {\n await this.addReflectionEntry(\n 'Low code maintainability',\n `Generated code has maintainability score of ${quality.maintainability}`,\n 'Need to improve code generation patterns for better maintainability',\n 'Focus on cleaner abstractions and better naming conventions',\n 0.8,\n );\n }\n }\n }\n\n private async processBugFixEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { bugType?: string; solution?: string; timeToFix?: number };\n\n if (data.bugType && data.timeToFix) {\n await this.addReflectionEntry(\n `Bug fix: ${data.bugType}`,\n `Fixed ${data.bugType} in ${data.timeToFix} minutes`,\n 'Analyze if this bug type is recurring and could be prevented',\n data.timeToFix > 60\n ? 'Consider adding automated detection for this bug pattern'\n : 'Good resolution time',\n 0.7,\n );\n }\n }\n\n private async processQualityImprovementEvent(event: MemoryEvent): Promise<void> {\n const _data = event.data as { improvement?: string; impact?: number };\n\n if (data.improvement) {\n await this.proposeEnhancement({\n type: '_quality',\n description: `Quality improvement: ${data.improvement}`,\n impact: {\n benefitScore: data.impact || 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['code-_quality'],\n },\n implementation: {\n phases: [],\n timeline: 5,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 6,\n });\n }\n }\n\n private async processGenericEvent(event: MemoryEvent): Promise<void> {\n // Store event for potential future analysis\n console.log(`Processing generic event: ${event.type}`, event.data);\n }\n\n private async manageTraceLimit(): Promise<void> {\n if (this.reasoningTraces.size > this.config.maxReasoningTraces) {\n const _traces = Array.from(this.reasoningTraces.entries());\n const _sortedByQuality = traces.sort(\n (a, b) => a[1].metadata.qualityScore - b[1].metadata.qualityScore,\n );\n\n // Remove lowest _quality _traces (keep 80% of limit)\n const _removeCount = Math.min(\n Math.floor(this.config.maxReasoningTraces * 0.2),\n sortedByQuality.length,\n );\n for (let i = 0; i < _removeCount; i++) {\n const _traceEntry = _sortedByQuality[i];\n if (_traceEntry) {\n this.reasoningTraces.delete(_traceEntry[0]);\n }\n }\n }\n }\n\n // Quality calculation methods\n private async calculateMaintainability(_code: string, _language: string): Promise<number> {\n // Simplified maintainability calculation\n const _factors = {\n length: Math.max(0, 100 - code.length / 100), // Shorter is better\n comments: ((code.match(/\\/\\/|\\/\\*|\\#/g) || []).length / code.split('\\n').length) * 100,\n _complexity: 100 - this.calculateBasicComplexity(code) * 10,\n };\n\n return Math.max(\n 0,\n Math.min(100, Object.values(_factors).reduce((sum, val) => sum + val, 0) / 3),\n );\n }\n\n private async calculateReadability(_code: string, _language: string): Promise<number> {\n // Basic readability metrics\n const _lines = code.split('\\n');\n const _avgLineLength =\n lines.length > 0 ? lines.reduce((sum, line) => sum + line.length, 0) / lines.length : 0;\n const _readabilityScore = Math.max(0, 100 - (_avgLineLength - 50) * 2); // Optimal ~50 chars per line\n\n return Math.max(0, Math.min(100, _readabilityScore));\n }\n\n private async calculateTestability(_code: string, _language: string): Promise<number> {\n // Basic testability assessment\n const _hasFunctions = /function|def|public|private/.test(code);\n const _hasClasses = /class|interface/.test(code);\n const _lowCoupling = !/global|window|document/.test(code);\n\n let score = 50;\n if (_hasFunctions) {score += 20;}\n if (_hasClasses) {score += 15;}\n if (_lowCoupling) {score += 15;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculatePerformance(_code: string, _language: string): Promise<number> {\n // Basic performance assessment\n const _hasNestedLoops = (code.match(/for|while/g) || []).length > 2;\n const _hasRecursion = /return.*\\w+\\(/.test(code);\n const _hasEarlyReturns = (code.match(/return/g) || []).length > 1;\n\n let score = 80;\n if (_hasNestedLoops) {score -= 20;}\n if (_hasRecursion && !_hasEarlyReturns) {score -= 15;}\n if (_hasEarlyReturns) {score += 10;}\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateSecurity(_code: string, _language: string): Promise<number> {\n // Basic security assessment\n const _vulnerabilities = [\n /eval\\(/g,\n /innerHTML\\s*=/g,\n /document\\.write/g,\n /\\$\\{.*\\}/g, // Template injection potential\n /sql|query.*\\+/gi, // SQL injection potential\n ];\n\n let score = 90;\n for (const pattern of _vulnerabilities) {\n if (pattern.test(code)) {\n score -= 15;\n }\n }\n\n return Math.max(0, Math.min(100, score));\n }\n\n private async calculateBugDensity(_code: string, _language: string): Promise<number> {\n // Basic bug pattern detection\n const _bugPatterns = [\n /==\\s*null/g, // Null comparison\n /undefined/g,\n /NaN/g,\n /catch\\s*\\(\\s*\\)/g, // Empty catch blocks\n /if\\s*\\([^)]*=[^=]/g, // Assignment in condition\n ];\n\n const _lines = code.split('\\n').length;\n let bugCount = 0;\n\n for (const pattern of _bugPatterns) {\n bugCount += (code.match(pattern) || []).length;\n }\n\n return (bugCount / _lines) * 1000; // Bugs per 1000 _lines\n }\n\n private async calculateCyclomaticComplexity(_code: string, _language: string): Promise<number> {\n return this.calculateBasicComplexity(code);\n }\n\n private calculateBasicComplexity(code: string): number {\n // Basic cyclomatic _complexity calculation\n const _complexityPatterns = [\n /if\\s*\\(/g,\n /else\\s*if/g,\n /while\\s*\\(/g,\n /for\\s*\\(/g,\n /switch\\s*\\(/g,\n /case\\s+/g,\n /catch\\s*\\(/g,\n /\\?\\s*.*:/g, // Ternary operators\n /&&|\\|\\|/g, // Logical operators\n ];\n\n let _complexity = 1; // Base _complexity\n\n for (const pattern of _complexityPatterns) {\n _complexity += (code.match(pattern) || []).length;\n }\n\n return _complexity;\n }\n\n private hashCode(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const _char = str.charCodeAt(i);\n hash = (hash << 5) - hash + _char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n private initializeQualityMetrics(): QualityMetrics {\n return {\n codeQuality: {\n maintainability: 80,\n readability: 75,\n testability: 70,\n performance: 85,\n security: 90,\n bugDensity: 2.5,\n _complexity: 5,\n },\n reasoningQuality: {\n _coherence: 0.8,\n _completeness: 0.75,\n accuracy: 0.85,\n efficiency: 0.7,\n _creativity: 0.6,\n },\n userSatisfaction: {\n userRating: 4.2,\n taskCompletion: 0.85,\n timeToSolution: 15,\n iterationCount: 3,\n userFeedback: [],\n },\n systemPerformance: {\n timeComplexity: 'O(n)',\n spaceComplexity: 'O(1)',\n benchmarks: [],\n },\n };\n }\n}\n","/**\n * MARIA Memory System - Dual Memory Engine\n *\n * Core integration logic for System 1 (fast, intuitive) and System 2 (deliberate, analytical) memory\n * Orchestrates memory operations, layer selection, and cross-system optimization\n */\n\nimport { System1MemoryManager } from './system1-memory';\nimport { System2MemoryManager } from './system2-memory';\nimport type {\n CodePattern,\n CoordinatorConfig,\n Enhancement,\n KnowledgeNode,\n MemoryEvent,\n PerformanceConfig,\n QualityMetrics,\n ReasoningTrace,\n System1Config,\n System2Config,\n UserPreferenceSet,\n} from './types/memory-interfaces';\n\nexport interface DualMemoryEngineConfig {\n system1: System1Config;\n system2: System2Config;\n coordinator: CoordinatorConfig;\n performance: PerformanceConfig;\n}\n\nexport interface MemoryQuery {\n type: 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference';\n query: string;\n context?: Record<string, unknown>;\n urgency?: 'low' | 'medium' | 'high' | 'critical';\n embedding?: number[];\n limit?: number;\n}\n\nexport interface MemoryResponse<T = unknown> {\n _data: T;\n source: 'system1' | 'system2' | 'both';\n confidence: number;\n latency: number;\n cached: boolean;\n suggestions?: Enhancement[];\n}\n\nexport interface MemoryOperationMetrics {\n totalOperations: number;\n system1Operations: number;\n system2Operations: number;\n averageLatency: number;\n cacheHitRate: number;\n errorRate: number;\n lastReset: Date;\n}\n\nexport class DualMemoryEngine {\n private system1: System1MemoryManager;\n private system2: System2MemoryManager;\n private config: DualMemoryEngineConfig;\n private operationMetrics: MemoryOperationMetrics;\n private eventQueue: MemoryEvent[] = [];\n private processingLock = false;\n private performanceCache = new Map<string, { _result: unknown; timestamp: Date; hits: number }>();\n\n constructor(_config: DualMemoryEngineConfig) {\n if (!_config) {\n throw new Error('DualMemoryEngine: config parameter is required');\n }\n\n if (!_config.system1) {\n throw new Error('DualMemoryEngine: config.system1 is required');\n }\n\n if (!_config.system2) {\n throw new Error('DualMemoryEngine: config.system2 is required');\n }\n\n this.config = _config;\n this.system1 = new System1MemoryManager(_config.system1);\n this.system2 = new System2MemoryManager(_config.system2);\n this.operationMetrics = this.initializeMetrics();\n\n // Start background processing\n this.startBackgroundProcessing();\n }\n\n // ========== Core Memory Operations ==========\n\n async query<T = unknown>(memoryQuery: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n const cacheKey = this.generateCacheKey(memoryQuery);\n\n // Check performance cache first\n const cached = this.performanceCache.get(cacheKey);\n if (cached && this.isCacheValid(cached)) {\n cached.hits++;\n this.operationMetrics.totalOperations++;\n return {\n _data: cached.result as T,\n source: 'both',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: true,\n };\n }\n\n try {\n // Determine optimal memory system(s) to use\n const _strategy = await this.selectMemoryStrategy(memoryQuery);\n const _result = await this.executeMemoryOperation<T>(memoryQuery, _strategy);\n\n // Cache successful results\n if (result.confidence > 0.7) {\n this.performanceCache.set(cacheKey, {\n _result: result._data,\n timestamp: new Date(),\n hits: 1,\n });\n }\n\n // Update _metrics\n this.updateOperationMetrics(_strategy, Date.now() - _startTime, true);\n\n return _result;\n } catch (_error) {\n this.updateOperationMetrics('both', Date.now() - _startTime, false);\n throw new Error(\n `Memory query failed: ${_error instanceof Error ? error.message : 'Unknown _error'}`,\n );\n }\n }\n\n async store(event: MemoryEvent): Promise<void> {\n // Add to event queue for processing\n this.eventQueue.push(event);\n\n // Immediate processing for critical events\n if (event.metadata.priority === 'critical') {\n await this.processEvent(event);\n }\n }\n\n async learn(\n input: string,\n output: string,\n context: Record<string, unknown>,\n success: boolean,\n ): Promise<void> {\n const learningEvent: MemoryEvent = {\n id: `learn:${Date.now()}`,\n type: 'learning_update',\n timestamp: new Date(),\n userId: (context['userId'] as string) || 'anonymous',\n sessionId: (context['sessionId'] as string) || 'default',\n _data: { input, output, context, success },\n metadata: {\n confidence: success ? 0.9 : 0.3,\n source: 'user_input',\n priority: 'medium',\n tags: ['learning', 'adaptation'],\n },\n };\n\n await this.store(learningEvent);\n }\n\n // ========== Specialized Query Methods ==========\n\n async findKnowledge(\n query: string,\n embedding?: number[],\n limit: number = 10,\n ): Promise<MemoryResponse<KnowledgeNode[]>> {\n return this.query<KnowledgeNode[]>({\n type: 'knowledge',\n query,\n embedding,\n limit,\n urgency: 'medium',\n });\n }\n\n async findPatterns(\n language?: string,\n framework?: string,\n useCase?: string,\n limit: number = 10,\n ): Promise<MemoryResponse<CodePattern[]>> {\n return this.query<CodePattern[]>({\n type: 'pattern',\n query: `${language || ''} ${framework || ''} ${useCase || ''}`.trim(),\n context: { language, framework, useCase },\n limit,\n urgency: 'low',\n });\n }\n\n async getReasoning(\n domain?: string,\n complexity?: string,\n minQuality?: number,\n ): Promise<MemoryResponse<ReasoningTrace[]>> {\n return this.query<ReasoningTrace[]>({\n type: 'reasoning',\n query: `${domain || ''} ${complexity || ''}`.trim(),\n context: { domain, complexity, minQuality },\n urgency: 'low',\n });\n }\n\n async getQualityInsights(): Promise<MemoryResponse<QualityMetrics>> {\n return this.query<QualityMetrics>({\n type: 'quality',\n query: 'current quality _metrics',\n urgency: 'low',\n });\n }\n\n async getUserPreferences(): Promise<MemoryResponse<UserPreferenceSet>> {\n return this.query<UserPreferenceSet>({\n type: 'preference',\n query: 'user preferences',\n urgency: 'high',\n });\n }\n\n async recall(options: { query: string; type: string; limit?: number }): Promise<unknown[]> {\n try {\n const _result = await this.query({\n type: options.type as 'knowledge' | 'pattern' | 'reasoning' | 'quality' | 'preference',\n query: options.query,\n limit: options.limit || 10,\n });\n\n return Array.isArray(result._data) ? result._data : [result._data];\n } catch (_error) {\n console.warn('Memory recall failed:', _error);\n return [];\n }\n }\n\n async clearMemory(): Promise<void> {\n try {\n // Clear all internal caches and _data\n this.performanceCache.clear();\n this.eventQueue.length = 0;\n\n // Reset _metrics\n this.resetMetrics();\n\n console.log('Memory cleared successfully');\n } catch (_error) {\n console.error('Failed to clear memory:', _error);\n throw _error;\n }\n }\n\n // ========== Memory Strategy Selection ==========\n\n private async selectMemoryStrategy(query: MemoryQuery): Promise<'system1' | 'system2' | 'both'> {\n const _factors = {\n urgency: this.getUrgencyScore(query.urgency),\n complexity: this.assessQueryComplexity(query),\n type: this.getTypePreference(query.type),\n cacheStatus: this.getCacheStatus(query),\n };\n\n const _system1Score = this.calculateSystem1Score(_factors);\n const _system2Score = this.calculateSystem2Score(_factors);\n\n // Decision logic based on configuration\n switch (this.config.coordinator.conflictResolutionStrategy) {\n case 'system1_priority':\n return _system1Score > 0.6 ? 'system1' : 'both';\n\n case 'system2_priority':\n return _system2Score > 0.6 ? 'system2' : 'both';\n\n case 'balanced':\n default:\n if (Math.abs(_system1Score - _system2Score) < 0.2) {\n return 'both';\n }\n return _system1Score > _system2Score ? 'system1' : 'system2';\n }\n }\n\n private getUrgencyScore(urgency?: string): number {\n switch (urgency) {\n case 'critical':\n return 1.0;\n case 'high':\n return 0.8;\n case 'medium':\n return 0.5;\n case 'low':\n return 0.2;\n default:\n return 0.5;\n }\n }\n\n private assessQueryComplexity(query: MemoryQuery): number {\n let complexity = 0.3; // Base complexity\n\n // Query length factor\n if (query.query.length > 100) {complexity += 0.2;}\n if (query.query.length > 200) {complexity += 0.2;}\n\n // Context complexity\n if (query.context && Object.keys(query.context).length > 3) {complexity += 0.2;}\n\n // Type complexity\n switch (query.type) {\n case 'reasoning':\n complexity += 0.4;\n break;\n case 'quality':\n complexity += 0.3;\n break;\n case 'pattern':\n complexity += 0.2;\n break;\n case 'knowledge':\n complexity += 0.1;\n break;\n case 'preference':\n complexity += 0.0;\n break;\n }\n\n return Math.min(1.0, complexity);\n }\n\n private getTypePreference(type: string): { system1: number; system2: number } {\n switch (type) {\n case 'knowledge':\n return { system1: 0.8, system2: 0.3 };\n case 'pattern':\n return { system1: 0.9, system2: 0.2 };\n case 'preference':\n return { system1: 0.9, system2: 0.1 };\n case 'reasoning':\n return { system1: 0.2, system2: 0.9 };\n case 'quality':\n return { system1: 0.3, system2: 0.8 };\n default:\n return { system1: 0.5, system2: 0.5 };\n }\n }\n\n private getCacheStatus(query: MemoryQuery): number {\n const cacheKey = this.generateCacheKey(query);\n const cached = this.performanceCache.get(cacheKey);\n return cached ? 0.8 : 0.2;\n }\n\n private calculateSystem1Score(_factors: RoutingFactors): number {\n const _urgencyWeight = factors.urgency * 0.4;\n const _complexityPenalty = (1 - factors.complexity) * 0.3;\n const _typePreference = factors.type.system1 * 0.2;\n const _cacheBonus = factors.cacheStatus * 0.1;\n\n return _urgencyWeight + _complexityPenalty + _typePreference + _cacheBonus;\n }\n\n private calculateSystem2Score(_factors: RoutingFactors): number {\n const _complexityBonus = factors.complexity * 0.4;\n const _urgencyPenalty = (1 - factors.urgency) * 0.2;\n const _typePreference = factors.type.system2 * 0.3;\n const _qualityBonus = 0.1; // Always slight preference for quality\n\n return _complexityBonus + _urgencyPenalty + _typePreference + _qualityBonus;\n }\n\n // ========== Memory Operation Execution ==========\n\n private async executeMemoryOperation<T>(\n query: MemoryQuery,\n strategy: 'system1' | 'system2' | 'both',\n ): Promise<MemoryResponse<T>> {\n switch (strategy) {\n case 'system1':\n return this.executeSystem1Operation(query);\n\n case 'system2':\n return this.executeSystem2Operation(query);\n\n case 'both':\n return this.executeCombinedOperation(query);\n\n default:\n throw new Error(`Unknown _strategy: ${strategy}`);\n }\n }\n\n private async executeSystem1Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let _result: T;\n\n switch (query.type) {\n case 'knowledge':\n _result = (await this.system1.searchKnowledgeNodes(\n query.query,\n query.embedding || [],\n query.limit,\n )) as T;\n break;\n\n case 'pattern': {\n const { language, framework, useCase } = query.context || {};\n _result = (await this.system1.findCodePatterns(\n language as string,\n framework as string,\n useCase as string,\n query.limit,\n )) as T;\n break;\n }\n\n case 'preference':\n _result = (await this.system1.getUserPreference('learningStyle')) as T;\n break;\n\n default:\n throw new Error(`System 1 cannot handle query type: ${query.type}`);\n }\n\n return {\n _data: _result,\n source: 'system1',\n confidence: 0.8,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeSystem2Operation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n let _result: T;\n\n switch (query.type) {\n case 'reasoning': {\n const { domain, complexity, minQuality } = query.context || {};\n _result = (await this.system2.searchReasoningTraces(\n {\n domain: domain as string,\n complexity: complexity as string,\n minQuality: minQuality as number,\n },\n query.limit,\n )) as T;\n break;\n }\n\n case 'quality':\n _result = this.system2.qualityEvaluation as T;\n break;\n\n default:\n throw new Error(`System 2 cannot handle query type: ${query.type}`);\n }\n\n return {\n _data: _result,\n source: 'system2',\n confidence: 0.9,\n latency: Date.now() - _startTime,\n cached: false,\n };\n }\n\n private async executeCombinedOperation<T>(query: MemoryQuery): Promise<MemoryResponse<T>> {\n const _startTime = Date.now();\n\n try {\n // Execute both systems in parallel\n const [system1Result, system2Result] = await Promise.allSettled([\n this.executeSystem1Operation<T>(query).catch(() => null),\n this.executeSystem2Operation<T>(query).catch(() => null),\n ]);\n\n // Combine results intelligently\n const _combinedResult = this.combineResults<T>(query, system1Result, system2Result);\n\n return {\n _data: combinedResult._data,\n source: 'both',\n confidence: combinedResult.confidence,\n latency: Date.now() - _startTime,\n cached: false,\n suggestions: combinedResult.suggestions,\n };\n } catch (_error) {\n // Fallback to the most appropriate single system\n const _fallbackStrategy =\n query.type === 'reasoning' || query.type === 'quality' ? 'system2' : 'system1';\n return this.executeMemoryOperation(query, _fallbackStrategy);\n }\n }\n\n private combineResults<T>(\n query: MemoryQuery,\n system1Result: PromiseSettledResult<MemoryResponse<T> | null>,\n system2Result: PromiseSettledResult<MemoryResponse<T> | null>,\n ): { _data: T; confidence: number; suggestions?: Enhancement[] } {\n const _s1Data = system1Result.status === 'fulfilled' ? system1Result.value?._data : null;\n const _s2Data = system2Result.status === 'fulfilled' ? system2Result.value?._data : null;\n\n // Priority-based combination\n if (_s2Data && _s1Data) {\n // Both available - use System 2 for complex queries, System 1 for simple ones\n const _useSystem2 = this.assessQueryComplexity(query) > 0.6;\n return {\n _data: _useSystem2 ? _s2Data : _s1Data,\n confidence: 0.95,\n suggestions: this.generateCombinedSuggestions(_s1Data, _s2Data),\n };\n }\n\n if (_s1Data) {\n return { _data: _s1Data, confidence: 0.8 };\n }\n\n if (_s2Data) {\n return { _data: _s2Data, confidence: 0.85 };\n }\n\n // No results available\n throw new Error('No memory systems could provide results');\n }\n\n private generateCombinedSuggestions<T>(_s1Data: T, _s2Data: T): Enhancement[] {\n // Generate suggestions based on the combination of results\n return [\n {\n id: `suggestion:${Date.now()}`,\n type: 'performance',\n description: 'Consider using cached results for similar queries',\n impact: {\n benefitScore: 6,\n effortScore: 3,\n riskScore: 1,\n affectedUsers: 1,\n affectedComponents: ['memory-system'],\n },\n implementation: {\n phases: [],\n timeline: 2,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 5,\n status: 'proposed',\n },\n ];\n }\n\n // ========== Event Processing ==========\n\n async processEvent(event: MemoryEvent): Promise<void> {\n try {\n // Route event to appropriate memory systems\n const _routingStrategy = this.determineEventRouting(event);\n\n await Promise.all([\n routingStrategy.system1 ? this.system1.processMemoryEvent(event) : Promise.resolve(),\n routingStrategy.system2 ? this.system2.processMemoryEvent(event) : Promise.resolve(),\n ]);\n\n // Cross-system learning and adaptation\n await this.adaptFromEvent(event);\n } catch (_error) {\n console.error(`Error processing memory event ${event.id}:`, _error);\n }\n }\n\n private determineEventRouting(event: MemoryEvent): { system1: boolean; system2: boolean } {\n switch (event.type) {\n case 'code_generation':\n case 'pattern_recognition':\n return { system1: true, system2: false };\n\n case 'bug_fix':\n case 'quality_improvement':\n return { system1: false, system2: true };\n\n case 'learning_update':\n case 'mode_change':\n return { system1: true, system2: true };\n\n default:\n return { system1: true, system2: false };\n }\n }\n\n private async adaptFromEvent(event: MemoryEvent): Promise<void> {\n // Cross-system learning based on events\n if (event.type === 'learning_update') {\n const _data = event.data as { success?: boolean; input?: string; output?: string };\n\n if (data.success === false) {\n // Generate improvement suggestion\n await this.system2.proposeEnhancement({\n type: 'usability',\n description: `Improve handling of: ${data.input}`,\n impact: {\n benefitScore: 5,\n effortScore: 3,\n riskScore: 2,\n affectedUsers: 1,\n affectedComponents: ['ai-interaction'],\n },\n implementation: {\n phases: [],\n timeline: 3,\n resources: [],\n dependencies: [],\n risks: [],\n },\n priority: 4,\n });\n }\n }\n }\n\n // ========== Background Processing ==========\n\n private startBackgroundProcessing(): void {\n // Process event queue regularly\n setInterval(() => {\n this.processEventQueue();\n }, this.config.coordinator.syncInterval);\n\n // Clean up cache periodically\n setInterval(\n () => {\n this.cleanupCache();\n },\n 5 * 60 * 1000,\n ); // Every 5 minutes\n\n // Memory optimization\n setInterval(\n () => {\n this.optimizeMemory();\n },\n 15 * 60 * 1000,\n ); // Every 15 minutes\n }\n\n private async processEventQueue(): Promise<void> {\n if (this.processingLock || this.eventQueue.length === 0) {\n return;\n }\n\n this.processingLock = true;\n\n try {\n // Process events in batches\n const _batchSize = this.config.performance.batchSize;\n const _batch = this.eventQueue.splice(0, _batchSize);\n\n await Promise.all(batch.map((event) => this.processEvent(event)));\n } finally {\n this.processingLock = false;\n }\n }\n\n private cleanupCache(): void {\n const _now = new Date();\n const _maxAge = 30 * 60 * 1000; // 30 minutes\n\n for (const [key, cached] of this.performanceCache.entries()) {\n const age = now.getTime() - cached.timestamp.getTime();\n\n if (age > _maxAge || cached.hits < 2) {\n this.performanceCache.delete(key);\n }\n }\n }\n\n private async optimizeMemory(): Promise<void> {\n try {\n // System 1 optimization\n await this.system1.compressMemory();\n\n // Cache optimization\n if (this.performanceCache.size > 1000) {\n const _entries = Array.from(this.performanceCache.entries());\n const _sortedByUsage = entries.sort((a, b) => b[1].hits - a[1].hits);\n\n // Keep top 500 most used _entries\n this.performanceCache.clear();\n sortedByUsage.slice(0, 500).forEach(([key, value]) => {\n this.performanceCache.set(key, value);\n });\n }\n } catch (_error) {\n console.error('Memory optimization failed:', _error);\n }\n }\n\n // ========== System Access Methods ==========\n\n /**\n * Get System 1 memory manager instance\n * @returns System1MemoryManager instance\n */\n getSystem1(): System1MemoryManager {\n return this.system1;\n }\n\n /**\n * Get System 2 memory manager instance\n * @returns System2MemoryManager instance\n */\n getSystem2(): System2MemoryManager {\n return this.system2;\n }\n\n // ========== Utility Methods ==========\n\n private generateCacheKey(query: MemoryQuery): string {\n const _contextStr = query.context ? JSON.stringify(query.context) : '';\n const _embeddingStr = query.embedding ? query.embedding.slice(0, 5).join(',') : '';\n\n return `${query.type}:${query.query}:${_contextStr}:${_embeddingStr}:${query.limit || 10}`;\n }\n\n private isCacheValid(cached: { timestamp: Date; hits: number }): boolean {\n const age = Date.now() - cached.timestamp.getTime();\n const _maxAge = 10 * 60 * 1000; // 10 minutes\n\n return age < _maxAge;\n }\n\n private updateOperationMetrics(\n strategy: 'system1' | 'system2' | 'both',\n latency: number,\n success: boolean,\n ): void {\n this.operationMetrics.totalOperations++;\n this.operationMetrics.averageLatency = (this.operationMetrics.averageLatency + latency) / 2;\n\n if (strategy === 'system1' || strategy === 'both') {\n this.operationMetrics.system1Operations++;\n }\n\n if (strategy === 'system2' || strategy === 'both') {\n this.operationMetrics.system2Operations++;\n }\n\n if (!success) {\n this.operationMetrics.errorRate =\n (this.operationMetrics.errorRate + 1) / this.operationMetrics.totalOperations;\n }\n }\n\n private initializeMetrics(): MemoryOperationMetrics {\n return {\n totalOperations: 0,\n system1Operations: 0,\n system2Operations: 0,\n averageLatency: 0,\n cacheHitRate: 0,\n errorRate: 0,\n lastReset: new Date(),\n };\n }\n\n // ========== Public API for Monitoring ==========\n\n getMetrics(): MemoryOperationMetrics {\n // Calculate cache hit rate\n const _totalCacheAccess = Array.from(this.performanceCache.values()).reduce(\n (sum, cached) => sum + cached.hits,\n 0,\n );\n\n this.operationMetrics.cacheHitRate =\n this.operationMetrics.totalOperations > 0\n ? _totalCacheAccess / this.operationMetrics.totalOperations\n : 0;\n\n return { ...this.operationMetrics };\n }\n\n resetMetrics(): void {\n this.operationMetrics = this.initializeMetrics();\n }\n\n getCacheSize(): number {\n return this.performanceCache.size;\n }\n\n getQueueSize(): number {\n return this.eventQueue.length;\n }\n\n // ========== Initialization ==========\n\n async initialize(): Promise<void> {\n try {\n // Perform initialization logic\n this.resetMetrics();\n\n // Clear any existing cache\n this.performanceCache.clear();\n\n // DualMemoryEngine initialized\n } catch (_error) {\n console.error('Failed to initialize DualMemoryEngine:', _error);\n throw _error;\n }\n }\n\n // ========== Configuration Management ==========\n\n updateConfig(newConfig: Partial<DualMemoryEngineConfig>): void {\n Object.assign(this.config, newConfig);\n }\n\n getConfig(): DualMemoryEngineConfig {\n return { ...this.config };\n }\n\n async getStatistics(): Promise<{\n system1: {\n totalNodes: number;\n patterns: number;\n preferences: number;\n cacheHitRate: number;\n };\n system2: {\n reasoningTraces: number;\n decisionTrees: number;\n activeSessions: number;\n memoryUsage: number;\n };\n performance: {\n avgResponseTime: number;\n memoryUsage: number;\n };\n }> {\n try {\n const _metrics = this.getMetrics();\n\n // Get system1 stats - using safe property access\n const _system1Stats = {\n totalNodes: 0, // Will be populated when system1 interface is stable\n patterns: 0, // Will be populated when system1 interface is stable\n preferences: 0, // Will be populated when system1 interface is stable\n cacheHitRate: metrics.cacheHitRate || 0,\n };\n\n // Get system2 stats - using safe property access\n const _system2Stats = {\n reasoningTraces: 0, // Will be populated when system2 interface is stable\n decisionTrees: 0, // Will be populated when system2 interface is stable\n activeSessions: 0, // Will be populated when system2 interface is stable\n memoryUsage: 0, // Will be populated when system2 interface is stable\n };\n\n return {\n system1: _system1Stats,\n system2: _system2Stats,\n performance: {\n avgResponseTime: metrics.averageLatency || 50,\n memoryUsage: process.memoryUsage().heapUsed,\n },\n };\n } catch (_error) {\n // Return default stats if there's an _error\n return {\n system1: {\n totalNodes: 0,\n patterns: 0,\n preferences: 0,\n cacheHitRate: 0,\n },\n system2: {\n reasoningTraces: 0,\n decisionTrees: 0,\n activeSessions: 0,\n memoryUsage: 0,\n },\n performance: {\n avgResponseTime: 50,\n memoryUsage: 0,\n },\n };\n }\n }\n}\n\n// Supporting interfaces\ninterface RoutingFactors {\n urgency: number;\n complexity: number;\n type: {\n system1: number;\n system2: number;\n };\n cacheStatus: number;\n}\n","import fs from 'fs';\nimport path from 'path';\nimport { promisify } from 'util';\nimport { spawn } from 'child_process';\nimport chalk from 'chalk';\n\nconst _fsAsync = {\n readFile: promisify(fs.readFile),\n writeFile: promisify(fs.writeFile),\n unlink: promisify(fs.unlink),\n mkdir: promisify(fs.mkdir),\n rmdir: promisify(fs.rmdir),\n readdir: promisify(fs.readdir),\n stat: promisify(fs.stat),\n copyFile: promisify(fs.copyFile),\n rename: promisify(fs.rename),\n access: promisify(fs.access),\n realpath: promisify(fs.realpath),\n symlink: promisify(fs.symlink),\n readlink: promisify(fs.readlink),\n lstat: promisify(fs.lstat),\n chmod: promisify(fs.chmod),\n chown: promisify(fs.chown),\n};\n\nexport interface FileStats {\n _name: string;\n path: string;\n isFile: boolean;\n isDirectory: boolean;\n isSymlink: boolean;\n size: number;\n created: Date;\n modified: Date;\n permissions: string;\n owner?: string;\n}\n\nexport interface FileOperationOptions {\n recursive?: boolean;\n force?: boolean;\n preserveTimestamps?: boolean;\n backup?: boolean;\n dryRun?: boolean;\n followSymlinks?: boolean;\n}\n\nexport interface SearchOptions {\n _pattern?: string;\n type?: 'file' | 'directory' | 'both';\n maxDepth?: number;\n caseSensitive?: boolean;\n includeHidden?: boolean;\n regex?: boolean;\n}\n\nexport class FileSystemService {\n private static instance: FileSystemService;\n private operationLog: Array<{\n operation: string;\n path: string;\n timestamp: Date;\n success: boolean;\n }> = [];\n\n public static getInstance(): FileSystemService {\n if (!FileSystemService.instance) {\n FileSystemService.instance = new FileSystemService();\n }\n return FileSystemService.instance;\n }\n\n private constructor() {}\n\n // Basic File Operations\n async readFile(_filePath: string, encoding: BufferEncoding = 'utf8'): Promise<string | Buffer> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _content = await fsAsync.readFile(_resolvedPath, encoding);\n this.logOperation('read', _resolvedPath, true);\n return _content;\n } catch (_error) {\n this.logOperation('read', filePath, false);\n throw new Error(`Failed to read file ${filePath}: ${error.message}`);\n }\n }\n\n async writeFile(\n filePath: string,\n content: string | Buffer,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (options.backup && (await this.exists(_resolvedPath))) {\n await this.createBackup(_resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would write to: ${_resolvedPath}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedPath));\n await fsAsync.writeFile(_resolvedPath, content);\n\n this.logOperation('write', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('write', filePath, false);\n throw new Error(`Failed to write file ${filePath}: ${error.message}`);\n }\n }\n\n async deleteFile(_filePath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(filePath);\n\n if (!(await this.exists(_resolvedPath))) {\n throw new Error(`File does not exist: ${_resolvedPath}`);\n }\n\n if (options.backup) {\n await this.createBackup(_resolvedPath);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete: ${_resolvedPath}`));\n return;\n }\n\n await fsAsync.unlink(_resolvedPath);\n this.logOperation('delete', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('delete', filePath, false);\n throw new Error(`Failed to delete file ${filePath}: ${error.message}`);\n }\n }\n\n // Directory Operations\n async createDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would create directory: ${_resolvedPath}`));\n return;\n }\n\n await fsAsync.mkdir(_resolvedPath, { recursive: options.recursive ?? true });\n this.logOperation('mkdir', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('mkdir', dirPath, false);\n throw new Error(`Failed to create directory ${dirPath}: ${error.message}`);\n }\n }\n\n async deleteDirectory(_dirPath: string, options: FileOperationOptions = {}): Promise<void> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n\n if (!(await this.exists(_resolvedPath))) {\n throw new Error(`Directory does not exist: ${_resolvedPath}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would delete directory: ${_resolvedPath}`));\n return;\n }\n\n if (options.recursive) {\n await this.deleteDirectoryRecursive(_resolvedPath);\n } else {\n await fsAsync.rmdir(_resolvedPath);\n }\n\n this.logOperation('rmdir', _resolvedPath, true);\n } catch (_error) {\n this.logOperation('rmdir', dirPath, false);\n throw new Error(`Failed to delete directory ${dirPath}: ${error.message}`);\n }\n }\n\n async listDirectory(_dirPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(dirPath);\n const _entries = await fsAsync.readdir(_resolvedPath);\n const results: FileStats[] = [];\n\n for (const entry of _entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(_resolvedPath, entry);\n const _stats = await this.getFileStats(_entryPath);\n\n if (options.type) {\n if (options.type === 'file' && !stats.isFile) {continue;}\n if (options.type === 'directory' && !stats.isDirectory) {continue;}\n }\n\n if (options.pattern) {\n const _match = options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n if (!_match) {continue;}\n }\n\n results.push(_stats);\n }\n\n this.logOperation('readdir', _resolvedPath, true);\n return results.sort((a, b) => {\n if (a.isDirectory && !b.isDirectory) {return -1;}\n if (!a.isDirectory && b.isDirectory) {return 1;}\n return a.name.localeCompare(b.name);\n });\n } catch (_error) {\n this.logOperation('readdir', dirPath, false);\n throw new Error(`Failed to list directory ${dirPath}: ${error.message}`);\n }\n }\n\n // Advanced Operations\n async copyFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(_resolvedSource))) {\n throw new Error(`Source file does not exist: ${_resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would copy: ${_resolvedSource} → ${_resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedDest));\n\n if ((await this.exists(_resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${_resolvedDest}`);\n }\n\n await fsAsync.copyFile(_resolvedSource, _resolvedDest);\n\n if (options.preserveTimestamps) {\n const _sourceStats = await fsAsync.stat(_resolvedSource);\n await fs.promises.utimes(_resolvedDest, sourceStats.atime, sourceStats.mtime);\n }\n\n this.logOperation('copy', `${_resolvedSource} → ${_resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('copy', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to copy file: ${error.message}`);\n }\n }\n\n async moveFile(\n sourcePath: string,\n destPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n try {\n const _resolvedSource = path.resolve(sourcePath);\n const _resolvedDest = path.resolve(destPath);\n\n if (!(await this.exists(_resolvedSource))) {\n throw new Error(`Source file does not exist: ${_resolvedSource}`);\n }\n\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY RUN] Would move: ${_resolvedSource} → ${_resolvedDest}`));\n return;\n }\n\n await this.ensureDirectoryExists(path.dirname(_resolvedDest));\n\n if ((await this.exists(_resolvedDest)) && !options.force) {\n throw new Error(`Destination file already exists: ${_resolvedDest}`);\n }\n\n await fsAsync.rename(_resolvedSource, _resolvedDest);\n this.logOperation('move', `${_resolvedSource} → ${_resolvedDest}`, true);\n } catch (_error) {\n this.logOperation('move', `${sourcePath} → ${destPath}`, false);\n throw new Error(`Failed to move file: ${error.message}`);\n }\n }\n\n async renameFile(\n oldPath: string,\n newPath: string,\n options: FileOperationOptions = {},\n ): Promise<void> {\n return this.moveFile(oldPath, newPath, options);\n }\n\n // Search and Navigation\n async findFiles(_searchPath: string, options: SearchOptions = {}): Promise<FileStats[]> {\n try {\n const _resolvedPath = path.resolve(searchPath);\n const results: FileStats[] = [];\n\n await this.findFilesRecursive(_resolvedPath, options, results, 0);\n\n this.logOperation('find', _resolvedPath, true);\n return results;\n } catch (_error) {\n this.logOperation('find', searchPath, false);\n throw new Error(`Failed to search _files: ${error.message}`);\n }\n }\n\n async which(command: string): Promise<string | null> {\n return new Promise((resolve) => {\n const _proc = spawn('which', [command]);\n let output = '';\n\n proc.stdout.on('data', (data) => {\n output += data.toString();\n });\n\n proc.on('close', (code) => {\n if (code === 0) {\n resolve(output.trim());\n } else {\n resolve(null);\n }\n });\n });\n }\n\n async glob(pattern: string, options: SearchOptions = {}): Promise<string[]> {\n // Simple glob implementation - could be enhanced with a proper glob library\n const _patternParts = pattern.split(path.sep);\n const _basePath = patternParts.slice(0, -1).join(path.sep) || './';\n const _filePattern = _patternParts[patternParts.length - 1];\n\n try {\n // Convert glob _pattern to regex\n const _regexPattern = _filePattern\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.');\n\n const _files = await this.findFiles(_basePath, {\n ...options,\n _pattern: `^${_regexPattern}$`,\n regex: true,\n type: 'file',\n });\n\n return files.map((f) => f.path);\n } catch (_error) {\n throw new Error(`Failed to glob _pattern ${pattern}: ${error.message}`);\n }\n }\n\n // Utility Methods\n async exists(filePath: string): Promise<boolean> {\n try {\n await fsAsync.access(path.resolve(filePath));\n return true;\n } catch {\n return false;\n }\n }\n\n async getFileStats(filePath: string): Promise<FileStats> {\n try {\n const _resolvedPath = path.resolve(filePath);\n const _stats = await fsAsync.lstat(_resolvedPath);\n const _name = path.basename(_resolvedPath);\n\n return {\n _name,\n path: _resolvedPath,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n size: stats.size,\n created: stats.birthtime,\n modified: stats.mtime,\n permissions: (stats.mode & parseInt('777', 8)).toString(8),\n };\n } catch (_error) {\n throw new Error(`Failed to get file _stats for ${filePath}: ${error.message}`);\n }\n }\n\n async getRealPath(filePath: string): Promise<string> {\n try {\n return await fsAsync.realpath(path.resolve(filePath));\n } catch (_error) {\n throw new Error(`Failed to resolve real path for ${filePath}: ${error.message}`);\n }\n }\n\n getOperationLog(): Array<{ operation: string; path: string; timestamp: Date; success: boolean }> {\n return [...this.operationLog];\n }\n\n clearOperationLog(): void {\n this.operationLog = [];\n }\n\n // Private Helper Methods\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fsAsync.mkdir(dirPath, { recursive: true });\n } catch (_error) {\n if (error.code !== 'EEXIST') {\n throw _error;\n }\n }\n }\n\n private async createBackup(filePath: string): Promise<void> {\n const _backupPath = `${filePath}.backup.${Date.now()}`;\n await fsAsync.copyFile(filePath, _backupPath);\n }\n\n private async deleteDirectoryRecursive(dirPath: string): Promise<void> {\n const _entries = await fsAsync.readdir(dirPath);\n\n for (const entry of _entries) {\n const _entryPath = path.join(dirPath, entry);\n const _stats = await fsAsync.lstat(_entryPath);\n\n if (stats.isDirectory()) {\n await this.deleteDirectoryRecursive(_entryPath);\n } else {\n await fsAsync.unlink(_entryPath);\n }\n }\n\n await fsAsync.rmdir(dirPath);\n }\n\n private async findFilesRecursive(\n searchPath: string,\n options: SearchOptions,\n results: FileStats[],\n depth: number,\n ): Promise<void> {\n if (options.maxDepth && depth >= options.maxDepth) {\n return;\n }\n\n try {\n const _entries = await fsAsync.readdir(searchPath);\n\n for (const entry of _entries) {\n if (!options.includeHidden && entry.startsWith('.')) {\n continue;\n }\n\n const _entryPath = path.join(searchPath, entry);\n const _stats = await this.getFileStats(_entryPath);\n\n // Apply filters\n if (options.pattern) {\n const _pattern = options.regex\n ? new RegExp(options.pattern, options.caseSensitive ? 'g' : 'gi')\n : null;\n const _match = _pattern\n ? pattern.test(stats.name)\n : options.caseSensitive\n ? stats.name.includes(options.pattern)\n : stats.name.toLowerCase().includes(options.pattern.toLowerCase());\n\n if (_match) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(_stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(_stats);}\n if (options.type === 'both') {results.push(_stats);}\n } else {\n results.push(_stats);\n }\n }\n } else if (!options.pattern) {\n if (options.type) {\n if (options.type === 'file' && stats.isFile) {results.push(_stats);}\n if (options.type === 'directory' && stats.isDirectory) {results.push(_stats);}\n if (options.type === 'both') {results.push(_stats);}\n } else {\n results.push(_stats);\n }\n }\n\n // Recurse into directories\n if (stats.isDirectory && (options.followSymlinks || !stats.isSymlink)) {\n await this.findFilesRecursive(_entryPath, options, results, depth + 1);\n }\n }\n } catch (_error) {\n // Skip directories we can't read\n }\n }\n\n private logOperation(_operation: string, path: string, success: boolean): void {\n this.operationLog.push({\n operation,\n path,\n timestamp: new Date(),\n success,\n });\n\n // Keep only last 1000 operations\n if (this.operationLog.length > 1000) {\n this.operationLog = this.operationLog.slice(-1000);\n }\n }\n}\n\nexport const _fileSystemService = FileSystemService.getInstance();\n"]}