@ankimcp/anki-mcp-server 0.15.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/LICENSE +659 -5
  2. package/README.md +48 -13
  3. package/dist/app.module.js +3 -0
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/mcp/mcp-icons.d.ts +2 -0
  6. package/dist/mcp/mcp-icons.js +11 -0
  7. package/dist/mcp/mcp-icons.js.map +1 -0
  8. package/dist/mcp/primitives/essential/index.d.ts +25 -7
  9. package/dist/mcp/primitives/essential/index.js +49 -13
  10. package/dist/mcp/primitives/essential/index.js.map +1 -1
  11. package/dist/mcp/primitives/essential/prompts/twenty-rules.prompt/content.md +2 -2
  12. package/dist/mcp/primitives/essential/tools/add-note.tool.d.ts +2 -1
  13. package/dist/mcp/primitives/essential/tools/add-note.tool.js +2 -0
  14. package/dist/mcp/primitives/essential/tools/add-note.tool.js.map +1 -1
  15. package/dist/mcp/primitives/essential/tools/add-notes.tool.d.ts +2 -1
  16. package/dist/mcp/primitives/essential/tools/add-notes.tool.js +2 -0
  17. package/dist/mcp/primitives/essential/tools/add-notes.tool.js.map +1 -1
  18. package/dist/mcp/primitives/essential/tools/{tagActions/tagActions.tool.d.ts → add-tags.tool.d.ts} +6 -9
  19. package/dist/mcp/primitives/essential/tools/add-tags.tool.js +85 -0
  20. package/dist/mcp/primitives/essential/tools/add-tags.tool.js.map +1 -0
  21. package/dist/mcp/primitives/essential/tools/change-deck.tool.d.ts +107 -0
  22. package/dist/mcp/primitives/essential/tools/change-deck.tool.js +79 -0
  23. package/dist/mcp/primitives/essential/tools/change-deck.tool.js.map +1 -0
  24. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.d.ts +104 -0
  25. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js +68 -0
  26. package/dist/mcp/primitives/essential/tools/clear-unused-tags.tool.js.map +1 -0
  27. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.d.ts +2 -1
  28. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js +2 -0
  29. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.tool.js.map +1 -1
  30. package/dist/mcp/primitives/essential/tools/collection-stats/collection-stats.types.d.ts +1 -1
  31. package/dist/mcp/primitives/essential/tools/create-deck.tool.d.ts +106 -0
  32. package/dist/mcp/primitives/essential/tools/create-deck.tool.js +78 -0
  33. package/dist/mcp/primitives/essential/tools/create-deck.tool.js.map +1 -0
  34. package/dist/mcp/primitives/essential/tools/create-model.tool.d.ts +3 -2
  35. package/dist/mcp/primitives/essential/tools/create-model.tool.js +2 -0
  36. package/dist/mcp/primitives/essential/tools/create-model.tool.js.map +1 -1
  37. package/dist/mcp/primitives/essential/tools/{deckActions/deckActions.tool.d.ts → deck-stats.tool.d.ts} +5 -12
  38. package/dist/mcp/primitives/essential/tools/deck-stats.tool.js +108 -0
  39. package/dist/mcp/primitives/essential/tools/deck-stats.tool.js.map +1 -0
  40. package/dist/mcp/primitives/essential/tools/deckActions/actions/changeDeck.action.d.ts +1 -1
  41. package/dist/mcp/primitives/essential/tools/deckActions/actions/createDeck.action.d.ts +1 -1
  42. package/dist/mcp/primitives/essential/tools/deckActions/actions/deckStats.action.d.ts +2 -2
  43. package/dist/mcp/primitives/essential/tools/deckActions/actions/listDecks.action.d.ts +2 -2
  44. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.d.ts +106 -0
  45. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js +73 -0
  46. package/dist/mcp/primitives/essential/tools/delete-media-file.tool.js.map +1 -0
  47. package/dist/mcp/primitives/essential/tools/delete-notes.tool.d.ts +2 -1
  48. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js +2 -1
  49. package/dist/mcp/primitives/essential/tools/delete-notes.tool.js.map +1 -1
  50. package/dist/mcp/primitives/essential/tools/find-notes.tool.d.ts +2 -1
  51. package/dist/mcp/primitives/essential/tools/find-notes.tool.js +2 -0
  52. package/dist/mcp/primitives/essential/tools/find-notes.tool.js.map +1 -1
  53. package/dist/mcp/primitives/essential/tools/get-cards.tool.d.ts +3 -2
  54. package/dist/mcp/primitives/essential/tools/get-cards.tool.js +2 -0
  55. package/dist/mcp/primitives/essential/tools/get-cards.tool.js.map +1 -1
  56. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.d.ts +3 -2
  57. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js +2 -0
  58. package/dist/mcp/primitives/essential/tools/get-due-cards.tool.js.map +1 -1
  59. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.d.ts +106 -0
  60. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js +76 -0
  61. package/dist/mcp/primitives/essential/tools/get-media-files-names.tool.js.map +1 -0
  62. package/dist/mcp/primitives/essential/tools/get-tags.tool.d.ts +2 -1
  63. package/dist/mcp/primitives/essential/tools/get-tags.tool.js +2 -0
  64. package/dist/mcp/primitives/essential/tools/get-tags.tool.js.map +1 -1
  65. package/dist/mcp/primitives/essential/tools/list-decks.tool.d.ts +106 -0
  66. package/dist/mcp/primitives/essential/tools/list-decks.tool.js +96 -0
  67. package/dist/mcp/primitives/essential/tools/list-decks.tool.js.map +1 -0
  68. package/dist/mcp/primitives/essential/tools/mediaActions/actions/deleteMediaFile.action.d.ts +1 -1
  69. package/dist/mcp/primitives/essential/tools/mediaActions/actions/getMediaFilesNames.action.d.ts +1 -1
  70. package/dist/mcp/primitives/essential/tools/mediaActions/actions/retrieveMediaFile.action.d.ts +1 -1
  71. package/dist/mcp/primitives/essential/tools/mediaActions/actions/storeMediaFile.action.d.ts +1 -1
  72. package/dist/mcp/primitives/essential/tools/model-field-names.tool.d.ts +2 -1
  73. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js +2 -0
  74. package/dist/mcp/primitives/essential/tools/model-field-names.tool.js.map +1 -1
  75. package/dist/mcp/primitives/essential/tools/model-names.tool.d.ts +2 -1
  76. package/dist/mcp/primitives/essential/tools/model-names.tool.js +2 -0
  77. package/dist/mcp/primitives/essential/tools/model-names.tool.js.map +1 -1
  78. package/dist/mcp/primitives/essential/tools/model-styling.tool.d.ts +2 -1
  79. package/dist/mcp/primitives/essential/tools/model-styling.tool.js +2 -0
  80. package/dist/mcp/primitives/essential/tools/model-styling.tool.js.map +1 -1
  81. package/dist/mcp/primitives/essential/tools/notes-info.tool.d.ts +3 -2
  82. package/dist/mcp/primitives/essential/tools/notes-info.tool.js +2 -0
  83. package/dist/mcp/primitives/essential/tools/notes-info.tool.js.map +1 -1
  84. package/dist/mcp/primitives/essential/tools/present-card.tool.d.ts +3 -2
  85. package/dist/mcp/primitives/essential/tools/present-card.tool.js +2 -0
  86. package/dist/mcp/primitives/essential/tools/present-card.tool.js.map +1 -1
  87. package/dist/mcp/primitives/essential/tools/rate-card.tool.d.ts +2 -1
  88. package/dist/mcp/primitives/essential/tools/rate-card.tool.js +2 -0
  89. package/dist/mcp/primitives/essential/tools/rate-card.tool.js.map +1 -1
  90. package/dist/mcp/primitives/essential/tools/remove-tags.tool.d.ts +107 -0
  91. package/dist/mcp/primitives/essential/tools/remove-tags.tool.js +85 -0
  92. package/dist/mcp/primitives/essential/tools/remove-tags.tool.js.map +1 -0
  93. package/dist/mcp/primitives/essential/tools/replace-tags.tool.d.ts +108 -0
  94. package/dist/mcp/primitives/essential/tools/replace-tags.tool.js +92 -0
  95. package/dist/mcp/primitives/essential/tools/replace-tags.tool.js.map +1 -0
  96. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.d.ts +106 -0
  97. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js +75 -0
  98. package/dist/mcp/primitives/essential/tools/retrieve-media-file.tool.js.map +1 -0
  99. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.d.ts +2 -1
  100. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js +2 -0
  101. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.tool.js.map +1 -1
  102. package/dist/mcp/primitives/essential/tools/review-stats/review-stats.types.d.ts +1 -1
  103. package/dist/mcp/primitives/essential/tools/{mediaActions/mediaActions.tool.d.ts → store-media-file.tool.d.ts} +5 -8
  104. package/dist/mcp/primitives/essential/tools/store-media-file.tool.js +92 -0
  105. package/dist/mcp/primitives/essential/tools/store-media-file.tool.js.map +1 -0
  106. package/dist/mcp/primitives/essential/tools/sync.tool.d.ts +2 -1
  107. package/dist/mcp/primitives/essential/tools/sync.tool.js +2 -0
  108. package/dist/mcp/primitives/essential/tools/sync.tool.js.map +1 -1
  109. package/dist/mcp/primitives/essential/tools/tagActions/actions/addTags.action.d.ts +1 -1
  110. package/dist/mcp/primitives/essential/tools/tagActions/actions/clearUnusedTags.action.d.ts +1 -1
  111. package/dist/mcp/primitives/essential/tools/tagActions/actions/removeTags.action.d.ts +1 -1
  112. package/dist/mcp/primitives/essential/tools/tagActions/actions/replaceTags.action.d.ts +1 -1
  113. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.d.ts +2 -1
  114. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js +2 -0
  115. package/dist/mcp/primitives/essential/tools/update-model-styling.tool.js.map +1 -1
  116. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.d.ts +2 -1
  117. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js +2 -0
  118. package/dist/mcp/primitives/essential/tools/update-note-fields.tool.js.map +1 -1
  119. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.d.ts +2 -1
  120. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js +3 -1
  121. package/dist/mcp/primitives/gui/tools/gui-add-cards.tool.js.map +1 -1
  122. package/dist/mcp/primitives/gui/tools/gui-browse.tool.d.ts +2 -1
  123. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js +2 -0
  124. package/dist/mcp/primitives/gui/tools/gui-browse.tool.js.map +1 -1
  125. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.d.ts +3 -2
  126. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js +2 -0
  127. package/dist/mcp/primitives/gui/tools/gui-current-card.tool.js.map +1 -1
  128. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.d.ts +2 -1
  129. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js +2 -0
  130. package/dist/mcp/primitives/gui/tools/gui-deck-browser.tool.js.map +1 -1
  131. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.d.ts +2 -1
  132. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js +2 -0
  133. package/dist/mcp/primitives/gui/tools/gui-deck-overview.tool.js.map +1 -1
  134. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.d.ts +2 -1
  135. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js +2 -0
  136. package/dist/mcp/primitives/gui/tools/gui-edit-note.tool.js.map +1 -1
  137. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.d.ts +2 -1
  138. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js +2 -0
  139. package/dist/mcp/primitives/gui/tools/gui-select-card.tool.js.map +1 -1
  140. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.d.ts +2 -1
  141. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js +2 -0
  142. package/dist/mcp/primitives/gui/tools/gui-selected-notes.tool.js.map +1 -1
  143. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.d.ts +2 -1
  144. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js +2 -0
  145. package/dist/mcp/primitives/gui/tools/gui-show-answer.tool.js.map +1 -1
  146. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.d.ts +2 -1
  147. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js +2 -0
  148. package/dist/mcp/primitives/gui/tools/gui-show-question.tool.js.map +1 -1
  149. package/dist/mcp/primitives/gui/tools/gui-undo.tool.d.ts +2 -1
  150. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js +2 -0
  151. package/dist/mcp/primitives/gui/tools/gui-undo.tool.js.map +1 -1
  152. package/dist/tsconfig.build.tsbuildinfo +1 -1
  153. package/package.json +21 -18
  154. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js +0 -210
  155. package/dist/mcp/primitives/essential/tools/deckActions/deckActions.tool.js.map +0 -1
  156. package/dist/mcp/primitives/essential/tools/deckActions/index.d.ts +0 -5
  157. package/dist/mcp/primitives/essential/tools/deckActions/index.js +0 -6
  158. package/dist/mcp/primitives/essential/tools/deckActions/index.js.map +0 -1
  159. package/dist/mcp/primitives/essential/tools/mediaActions/index.d.ts +0 -5
  160. package/dist/mcp/primitives/essential/tools/mediaActions/index.js +0 -6
  161. package/dist/mcp/primitives/essential/tools/mediaActions/index.js.map +0 -1
  162. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js +0 -156
  163. package/dist/mcp/primitives/essential/tools/mediaActions/mediaActions.tool.js.map +0 -1
  164. package/dist/mcp/primitives/essential/tools/tagActions/index.d.ts +0 -5
  165. package/dist/mcp/primitives/essential/tools/tagActions/index.js +0 -6
  166. package/dist/mcp/primitives/essential/tools/tagActions/index.js.map +0 -1
  167. package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js +0 -153
  168. package/dist/mcp/primitives/essential/tools/tagActions/tagActions.tool.js.map +0 -1
@@ -1,153 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var TagActionsTool_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.TagActionsTool = void 0;
14
- const common_1 = require("@nestjs/common");
15
- const mcp_nest_1 = require("@rekog/mcp-nest");
16
- const zod_1 = require("zod");
17
- const anki_connect_client_1 = require("../../../../clients/anki-connect.client");
18
- const anki_utils_1 = require("../../../../utils/anki.utils");
19
- const addTags_action_1 = require("./actions/addTags.action");
20
- const removeTags_action_1 = require("./actions/removeTags.action");
21
- const replaceTags_action_1 = require("./actions/replaceTags.action");
22
- const clearUnusedTags_action_1 = require("./actions/clearUnusedTags.action");
23
- let TagActionsTool = TagActionsTool_1 = class TagActionsTool {
24
- ankiClient;
25
- logger = new common_1.Logger(TagActionsTool_1.name);
26
- constructor(ankiClient) {
27
- this.ankiClient = ankiClient;
28
- }
29
- async execute(params, context) {
30
- try {
31
- this.logger.log(`Executing tag action: ${params.action}`);
32
- let result;
33
- switch (params.action) {
34
- case "addTags":
35
- if (!params.notes || params.notes.length === 0) {
36
- throw new Error("notes array is required for addTags action");
37
- }
38
- if (!params.tags) {
39
- throw new Error("tags string is required for addTags action");
40
- }
41
- await context.reportProgress({ progress: 25, total: 100 });
42
- result = await (0, addTags_action_1.addTags)({ notes: params.notes, tags: params.tags }, this.ankiClient);
43
- await context.reportProgress({ progress: 100, total: 100 });
44
- break;
45
- case "removeTags":
46
- if (!params.notes || params.notes.length === 0) {
47
- throw new Error("notes array is required for removeTags action");
48
- }
49
- if (!params.tags) {
50
- throw new Error("tags string is required for removeTags action");
51
- }
52
- await context.reportProgress({ progress: 25, total: 100 });
53
- result = await (0, removeTags_action_1.removeTags)({ notes: params.notes, tags: params.tags }, this.ankiClient);
54
- await context.reportProgress({ progress: 100, total: 100 });
55
- break;
56
- case "replaceTags":
57
- if (!params.notes || params.notes.length === 0) {
58
- throw new Error("notes array is required for replaceTags action");
59
- }
60
- if (!params.tagToReplace) {
61
- throw new Error("tagToReplace is required for replaceTags action");
62
- }
63
- if (!params.replaceWithTag) {
64
- throw new Error("replaceWithTag is required for replaceTags action");
65
- }
66
- await context.reportProgress({ progress: 25, total: 100 });
67
- result = await (0, replaceTags_action_1.replaceTags)({
68
- notes: params.notes,
69
- tagToReplace: params.tagToReplace,
70
- replaceWithTag: params.replaceWithTag,
71
- }, this.ankiClient);
72
- await context.reportProgress({ progress: 100, total: 100 });
73
- break;
74
- case "clearUnusedTags":
75
- await context.reportProgress({ progress: 50, total: 100 });
76
- result = await (0, clearUnusedTags_action_1.clearUnusedTags)({}, this.ankiClient);
77
- await context.reportProgress({ progress: 100, total: 100 });
78
- break;
79
- default: {
80
- const _exhaustive = params.action;
81
- throw new Error(`Unknown action: ${_exhaustive}`);
82
- }
83
- }
84
- this.logger.log(`Successfully executed ${params.action}`);
85
- return result;
86
- }
87
- catch (error) {
88
- this.logger.error(`Failed to execute ${params.action}`, error);
89
- return (0, anki_utils_1.createErrorResponse)(error, {
90
- action: params.action,
91
- hint: "Make sure Anki is running and the note IDs are valid",
92
- });
93
- }
94
- }
95
- };
96
- exports.TagActionsTool = TagActionsTool;
97
- __decorate([
98
- (0, mcp_nest_1.Tool)({
99
- name: "tagActions",
100
- description: `Manage tags on Anki notes. Supports four actions:
101
- - addTags: Add tags to specified notes (notes: number[], tags: string)
102
- - removeTags: Remove tags from specified notes (notes: number[], tags: string)
103
- - replaceTags: Rename a tag across specified notes (notes: number[], tagToReplace: string, replaceWithTag: string)
104
- - clearUnusedTags: Remove orphaned tags not used by any notes (no params)
105
-
106
- For discovering existing tags, use the separate getTags tool.
107
- Tags in addTags/removeTags are space-separated strings (e.g., "tag1 tag2 tag3").`,
108
- parameters: zod_1.z.object({
109
- action: zod_1.z
110
- .enum(["addTags", "removeTags", "replaceTags", "clearUnusedTags"])
111
- .describe("The tag action to perform"),
112
- notes: zod_1.z
113
- .array(zod_1.z.number())
114
- .min(1)
115
- .max(1000)
116
- .optional()
117
- .describe("[addTags, removeTags, replaceTags] Array of note IDs to modify"),
118
- tags: zod_1.z
119
- .string()
120
- .optional()
121
- .describe('[addTags, removeTags] Space-separated tags (e.g., "tag1 tag2")'),
122
- tagToReplace: zod_1.z
123
- .string()
124
- .optional()
125
- .describe("[replaceTags] The tag to search for and replace"),
126
- replaceWithTag: zod_1.z
127
- .string()
128
- .optional()
129
- .describe("[replaceTags] The tag to replace with"),
130
- }),
131
- outputSchema: zod_1.z.object({
132
- success: zod_1.z.boolean(),
133
- message: zod_1.z.string(),
134
- notesAffected: zod_1.z.number().optional(),
135
- tagsAdded: zod_1.z.array(zod_1.z.string()).optional(),
136
- tagsRemoved: zod_1.z.array(zod_1.z.string()).optional(),
137
- tagToReplace: zod_1.z.string().optional(),
138
- replaceWithTag: zod_1.z.string().optional(),
139
- }),
140
- annotations: {
141
- readOnlyHint: false,
142
- destructiveHint: false,
143
- },
144
- }),
145
- __metadata("design:type", Function),
146
- __metadata("design:paramtypes", [Object, Object]),
147
- __metadata("design:returntype", Promise)
148
- ], TagActionsTool.prototype, "execute", null);
149
- exports.TagActionsTool = TagActionsTool = TagActionsTool_1 = __decorate([
150
- (0, common_1.Injectable)(),
151
- __metadata("design:paramtypes", [anki_connect_client_1.AnkiConnectClient])
152
- ], TagActionsTool);
153
- //# sourceMappingURL=tagActions.tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tagActions.tool.js","sourceRoot":"","sources":["../../../../../../src/mcp/primitives/essential/tools/tagActions/tagActions.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8CAAuC;AAEvC,6BAAwB;AACxB,iFAAsE;AACtE,6DAA6D;AAC7D,6DAAuE;AACvE,mEAAgF;AAChF,qEAGsC;AACtC,6EAG0C;AASnC,IAAM,cAAc,sBAApB,MAAM,cAAc;IAGI;IAFZ,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAE1D,YAA6B,UAA6B;QAA7B,eAAU,GAAV,UAAU,CAAmB;IAAG,CAAC;IAuDxD,AAAN,KAAK,CAAC,OAAO,CACX,MAMC,EACD,OAAgB;QAEhB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAE1D,IAAI,MAIqB,CAAC;YAG1B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,SAAS;oBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAChE,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;oBAChE,CAAC;oBACD,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC3D,MAAM,GAAG,MAAM,IAAA,wBAAO,EACpB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAC1C,IAAI,CAAC,UAAU,CAChB,CAAC;oBACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5D,MAAM;gBAER,KAAK,YAAY;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBACnE,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBACnE,CAAC;oBACD,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC3D,MAAM,GAAG,MAAM,IAAA,8BAAU,EACvB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAC1C,IAAI,CAAC,UAAU,CAChB,CAAC;oBACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5D,MAAM;gBAER,KAAK,aAAa;oBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;oBACpE,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;wBACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;oBACrE,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CACb,mDAAmD,CACpD,CAAC;oBACJ,CAAC;oBACD,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC3D,MAAM,GAAG,MAAM,IAAA,gCAAW,EACxB;wBACE,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;wBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;qBACtC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;oBACF,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5D,MAAM;gBAER,KAAK,iBAAiB;oBACpB,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC3D,MAAM,GAAG,MAAM,IAAA,wCAAe,EAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5D,MAAM;gBAER,OAAO,CAAC,CAAC,CAAC;oBAER,MAAM,WAAW,GAAU,MAAM,CAAC,MAAM,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,IAAA,gCAAmB,EAAC,KAAK,EAAE;gBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,sDAAsD;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA5JY,wCAAc;AA0DnB;IArDL,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;;;;;;;iFAOgE;QAC7E,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,OAAC;iBACN,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;iBACjE,QAAQ,CAAC,2BAA2B,CAAC;YACxC,KAAK,EAAE,OAAC;iBACL,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,gEAAgE,CACjE;YACH,IAAI,EAAE,OAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gEAAgE,CACjE;YACH,YAAY,EAAE,OAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,cAAc,EAAE,OAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;SACrD,CAAC;QACF,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;YAEnB,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACzC,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YAE3C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACnC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;QACF,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;SACvB;KACF,CAAC;;;;6CAkGD;yBA3JU,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAI8B,uCAAiB;GAH/C,cAAc,CA4J1B"}