@alisaitteke/photoshop-mcp 1.7.3 → 1.7.4
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/AGENTS.md +2 -0
- package/README.md +3 -3
- package/dist/api/extendscript.d.ts +98 -0
- package/dist/api/extendscript.d.ts.map +1 -1
- package/dist/api/extendscript.js +850 -0
- package/dist/api/extendscript.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +2 -0
- package/dist/core/server.js.map +1 -1
- package/dist/errors/envelope.d.ts +1 -1
- package/dist/errors/envelope.d.ts.map +1 -1
- package/dist/errors/envelope.js +2 -0
- package/dist/errors/envelope.js.map +1 -1
- package/dist/prompts/instructions.d.ts.map +1 -1
- package/dist/prompts/instructions.js +6 -2
- package/dist/prompts/instructions.js.map +1 -1
- package/dist/prompts/templates/remove-background.js +3 -3
- package/dist/prompts/templates/remove-background.js.map +1 -1
- package/dist/tools/document-tools.d.ts.map +1 -1
- package/dist/tools/document-tools.js +142 -0
- package/dist/tools/document-tools.js.map +1 -1
- package/dist/tools/filter-tools.d.ts.map +1 -1
- package/dist/tools/filter-tools.js +138 -0
- package/dist/tools/filter-tools.js.map +1 -1
- package/dist/tools/mask-tools.d.ts.map +1 -1
- package/dist/tools/mask-tools.js +105 -1
- package/dist/tools/mask-tools.js.map +1 -1
- package/dist/tools/recipes/batch-mockup-replace.d.ts.map +1 -1
- package/dist/tools/recipes/batch-mockup-replace.js +7 -5
- package/dist/tools/recipes/batch-mockup-replace.js.map +1 -1
- package/dist/tools/selection-tools.d.ts.map +1 -1
- package/dist/tools/selection-tools.js +327 -0
- package/dist/tools/selection-tools.js.map +1 -1
- package/dist/tools/smart-object-tools.d.ts +4 -0
- package/dist/tools/smart-object-tools.d.ts.map +1 -0
- package/dist/tools/smart-object-tools.js +155 -0
- package/dist/tools/smart-object-tools.js.map +1 -0
- package/llms.txt +2 -2
- package/package.json +2 -2
package/AGENTS.md
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
**Prerequisites:** Photoshop running on Windows or macOS, Node.js 18+. This is unofficial and not affiliated with Adobe.
|
|
16
16
|
|
|
17
|
+
**Tool surface:** 118 MCP tools — 102 atomic `photoshop_*` + 16 recipe `photoshop_recipe_*`; 23 MCP prompt templates (`ps.*`).
|
|
18
|
+
|
|
17
19
|
## Architecture (agent view)
|
|
18
20
|
|
|
19
21
|
```
|
package/README.md
CHANGED
|
@@ -182,7 +182,7 @@ requests into reliable Photoshop actions:
|
|
|
182
182
|
grade, frequency separation, batch mockup, organize layers, gradient fade,
|
|
183
183
|
sky blend, dodge & burn, remove distraction, split carousel, batch watermark,
|
|
184
184
|
passport photo, csv to cards). Each wraps steps in a single
|
|
185
|
-
Photoshop history state (one Undo reverts all). **
|
|
185
|
+
Photoshop history state (one Undo reverts all). **118 tools total** (102 atomic
|
|
186
186
|
+ 16 recipe).
|
|
187
187
|
- **Generative AI** — `photoshop_generative_fill`, `photoshop_generative_remove`,
|
|
188
188
|
`photoshop_generative_expand`, `photoshop_generative_upscale`, `photoshop_sky_replacement`,
|
|
@@ -599,7 +599,7 @@ Never guess — read get_state after a failure and propose the next single step.
|
|
|
599
599
|
- **Supports Photoshop 2012-2025+**
|
|
600
600
|
- **ExtendScript API**: Universal compatibility via AppleScript/COM automation
|
|
601
601
|
- **Auto-Detection**: Automatically finds Photoshop installation on your system
|
|
602
|
-
- **
|
|
602
|
+
- **118 Tools**: 102 atomic `photoshop_*` + 16 recipe `photoshop_recipe_*`
|
|
603
603
|
- **AI/Prompt Layer**: 23 MCP prompt templates (16 recipe + 7 guide), server instructions, state/preview/capabilities tools
|
|
604
604
|
- **Document Management**: Create, open, save, close, crop documents
|
|
605
605
|
- **Layer Operations**: Create, delete, duplicate, merge, transform layers
|
|
@@ -607,7 +607,7 @@ Never guess — read get_state after a failure and propose the next single step.
|
|
|
607
607
|
- **Layer Styles**: Drop shadow, outer glow, stroke, bevel & emboss
|
|
608
608
|
- **Text Formatting**: Font, size, color, alignment controls
|
|
609
609
|
- **Image Placement**: Place images, open files, fit to document
|
|
610
|
-
- **Filters**: Gaussian Blur, Sharpen, Noise, Motion Blur
|
|
610
|
+
- **Filters**: Gaussian Blur, Sharpen, Noise, Motion Blur, High Pass, Smart Blur
|
|
611
611
|
- **Color Adjustments**: Brightness/Contrast, Hue/Saturation, Curves, Auto Levels/Contrast
|
|
612
612
|
- **Color Grading**: 3D LUT (Color Lookup) layers, Vibrance, Exposure, Photo Filter, Gradient Map
|
|
613
613
|
- **Data-Driven Graphics**: CSV/variables XML → one image per row ("mail merge for images")
|
|
@@ -9,7 +9,20 @@ export declare const MCP_CURVES_ADJUSTMENT_HELPER = "\nfunction __mcp_makeCurves
|
|
|
9
9
|
* @see https://community.adobe.com/t5/photoshop-ecosystem-discussions/is-it-possible-to-make-a-layer-mask-with-the-current-selection-using-extendscript/td-p/10872052
|
|
10
10
|
* @see https://github.com/LeZuse/photoshop-scripts/blob/master/default/Stack%20Scripts%20Only/StackSupport.jsx
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* Smart Object helpers — newPlacedLayer, placedLayerReplaceContents, placedLayerEditContents,
|
|
14
|
+
* placedLayerMakeCopy (Adobe Community, Photopea, laryn gist, c.pfaffenbichler).
|
|
15
|
+
* Requires `helperFunctions` (cTID/sTID) in the enclosing script.
|
|
16
|
+
*/
|
|
17
|
+
export declare const MCP_SMART_OBJECT_HELPERS = "\nfunction __mcp_findLayer(container, name) {\n for (var i = 0; i < container.layers.length; i++) {\n var l = container.layers[i];\n if (l.name === name) return l;\n }\n for (var j = 0; j < container.layerSets.length; j++) {\n var nested = __mcp_findLayer(container.layerSets[j], name);\n if (nested) return nested;\n }\n return null;\n}\n\nfunction __mcp_activateLayerByName(layerName) {\n var doc = app.activeDocument;\n if (!layerName) {\n if (!doc.activeLayer) {\n return { ok: false, code: 'layer_not_found', message: 'No active layer' };\n }\n return { ok: true, layer: doc.activeLayer };\n }\n var target = __mcp_findLayer(doc, layerName);\n if (!target) {\n return {\n ok: false,\n code: 'layer_not_found',\n message: 'Layer not found: ' + layerName,\n suggested_next_tool: 'photoshop_get_layers'\n };\n }\n doc.activeLayer = target;\n return { ok: true, layer: target };\n}\n\nfunction __mcp_replaceSmartObjectContents(filePath) {\n var layer = app.activeDocument.activeLayer;\n if (layer.kind !== LayerKind.SMARTOBJECT) {\n return {\n ok: false,\n code: 'unsupported_layer_kind',\n message: 'Target layer \"' + layer.name + '\" is not a Smart Object (kind=' + layer.kind + ').',\n suggested_next_tool: 'photoshop_get_layers'\n };\n }\n var assetFile = new File(filePath);\n if (!assetFile.exists) {\n return { ok: false, code: 'file_not_found', message: 'Replacement file not found: ' + filePath };\n }\n var replaceDesc = new ActionDescriptor();\n replaceDesc.putPath(cTID('null'), assetFile);\n replaceDesc.putInteger(cTID('PgNm'), 1);\n executeAction(sTID('placedLayerReplaceContents'), replaceDesc, DialogModes.NO);\n return {\n ok: true,\n layerName: app.activeDocument.activeLayer.name,\n filePath: filePath\n };\n}\n";
|
|
12
18
|
export declare const MCP_LAYER_MASK_HELPERS = "\nfunction __mcp_hasLayerMaskAM() {\n var ref = new ActionReference();\n var args = new ActionDescriptor();\n ref.putProperty(cTID('Prpr'), cTID('UsrM'));\n ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));\n args.putReference(cTID('null'), ref);\n try {\n var resultDesc = executeAction(cTID('getd'), args, DialogModes.NO);\n return resultDesc.hasKey(cTID('UsrM'));\n } catch (e) {\n return false;\n }\n}\n\nfunction __mcp_makeLayerMaskAtChannel(maskMode) {\n var desc = new ActionDescriptor();\n var atRef = new ActionReference();\n desc.putClass(sTID('new'), sTID('channel'));\n atRef.putEnumerated(sTID('channel'), sTID('channel'), sTID('mask'));\n desc.putReference(sTID('at'), atRef);\n desc.putEnumerated(sTID('using'), sTID('userMaskEnabled'), sTID(maskMode));\n executeAction(sTID('make'), desc, DialogModes.NO);\n}\n\nfunction __mcp_selectLayerMaskChannel() {\n var selRef = new ActionReference();\n selRef.putEnumerated(cTID('Chnl'), cTID('Ordn'), cTID('Trgt'));\n var selDesc = new ActionDescriptor();\n selDesc.putReference(cTID('null'), selRef);\n selDesc.putBoolean(cTID('MkVs'), true);\n executeAction(cTID('slct'), selDesc, DialogModes.NO);\n}\n\nfunction __mcp_pointDescPx(x, y) {\n var desc = new ActionDescriptor();\n desc.putUnitDouble(cTID('Hrzn'), cTID('#Pxl'), x);\n desc.putUnitDouble(cTID('Vrtc'), cTID('#Pxl'), y);\n return desc;\n}\n\nfunction __mcp_gradientStop(location, midPoint) {\n var desc = new ActionDescriptor();\n desc.putInteger(cTID('Lctn'), location);\n desc.putInteger(cTID('Mdpn'), midPoint);\n return desc;\n}\n\nfunction __mcp_grayColor(grayValue) {\n var desc = new ActionDescriptor();\n desc.putDouble(cTID('Gry '), grayValue);\n return desc;\n}\n\n/** Linear black-to-white gradient on the active mask channel (StackSupport.jsx pattern). */\nfunction __mcp_gradientFillLayerMask(fromXPx, fromYPx, toXPx, toYPx, reverseGradient) {\n var args = new ActionDescriptor();\n args.putObject(cTID('From'), cTID('Pnt '), __mcp_pointDescPx(fromXPx, fromYPx));\n args.putObject(cTID('T '), cTID('Pnt '), __mcp_pointDescPx(toXPx, toYPx));\n args.putEnumerated(cTID('Md '), cTID('BlnM'), cTID('Nrml'));\n args.putEnumerated(cTID('Type'), cTID('GrdT'), cTID('Lnr '));\n args.putBoolean(cTID('Dthr'), true);\n args.putBoolean(cTID('UsMs'), true);\n args.putBoolean(cTID('Rvrs'), !!reverseGradient);\n\n var gradDesc = new ActionDescriptor();\n gradDesc.putString(cTID('Nm '), 'Black, White');\n gradDesc.putEnumerated(cTID('GrdF'), cTID('GrdF'), cTID('CstS'));\n gradDesc.putDouble(cTID('Intr'), 4096.0);\n\n var colorList = new ActionList();\n var stopWhite = __mcp_gradientStop(0, 50);\n stopWhite.putObject(cTID('Clr '), cTID('Grsc'), __mcp_grayColor(100.0));\n stopWhite.putEnumerated(cTID('Type'), cTID('Clry'), cTID('UsrS'));\n colorList.putObject(cTID('Clrt'), stopWhite);\n var stopBlack = __mcp_gradientStop(4096, 50);\n stopBlack.putObject(cTID('Clr '), cTID('Grsc'), __mcp_grayColor(0.0));\n stopBlack.putEnumerated(cTID('Type'), cTID('Clry'), cTID('UsrS'));\n colorList.putObject(cTID('Clrt'), stopBlack);\n gradDesc.putList(cTID('Clrs'), colorList);\n\n var xferList = new ActionList();\n var xferA = __mcp_gradientStop(0, 50);\n xferA.putUnitDouble(cTID('Opct'), cTID('#Prc'), 100.0);\n xferList.putObject(cTID('TrnS'), xferA);\n var xferB = __mcp_gradientStop(4096, 50);\n xferB.putUnitDouble(cTID('Opct'), cTID('#Prc'), 100.0);\n xferList.putObject(cTID('TrnS'), xferB);\n gradDesc.putList(cTID('Trns'), xferList);\n\n args.putObject(cTID('Grad'), cTID('Grdn'), gradDesc);\n executeAction(cTID('Grdn'), args, DialogModes.NO);\n}\n";
|
|
19
|
+
/**
|
|
20
|
+
* Clipping mask helpers — groupEvent AM create; grouped DOM release.
|
|
21
|
+
* @see https://stackoverflow.com/questions/13842581/photoshop-js-script-to-create-and-apply-a-layer-mask
|
|
22
|
+
* @see https://community.adobe.com/t5/photoshop-ecosystem-discussions/clipping-mask-script-issues-in-ps-2025-on-mac/td-p/1178313
|
|
23
|
+
* @see https://www.ps-scripts.com/viewtopic.php?t=10955 (layer.grouped property)
|
|
24
|
+
*/
|
|
25
|
+
export declare const MCP_CLIPPING_MASK_HELPERS = "\nfunction __mcp_getLayerBelow(layer) {\n var container = layer.parent;\n var stack = container.layers;\n for (var i = 0; i < stack.length; i++) {\n if (stack[i] === layer) {\n if (i >= stack.length - 1) return null;\n return stack[i + 1];\n }\n }\n return null;\n}\n\nfunction __mcp_createClippingMaskAM() {\n var desc = new ActionDescriptor();\n var ref = new ActionReference();\n ref.putEnumerated(sTID('layer'), sTID('ordinal'), sTID('targetEnum'));\n desc.putReference(sTID('null'), ref);\n executeAction(sTID('groupEvent'), desc, DialogModes.NO);\n}\n";
|
|
13
26
|
export type CurvesPreset = 'auto_tone' | 'neutral';
|
|
14
27
|
export type GradientMaskDirection = 'top_to_bottom' | 'bottom_to_top' | 'left_to_right' | 'right_to_left';
|
|
15
28
|
/**
|
|
@@ -28,6 +41,20 @@ export declare const ExtendScriptSnippets: {
|
|
|
28
41
|
* Get active document info
|
|
29
42
|
*/
|
|
30
43
|
getDocumentInfo: () => string;
|
|
44
|
+
/**
|
|
45
|
+
* List all open documents (read-only).
|
|
46
|
+
* @see https://developer.adobe.com/photoshop/uxp/ps_reference/classes/documents/
|
|
47
|
+
*/
|
|
48
|
+
listDocuments: () => string;
|
|
49
|
+
/**
|
|
50
|
+
* Activate an open document by id, tab index, or name.
|
|
51
|
+
* @see https://stackoverflow.com/questions/4537506/how-to-switch-between-open-documents-in-photoshop-using-javascript
|
|
52
|
+
*/
|
|
53
|
+
setActiveDocument: (params: {
|
|
54
|
+
documentId?: number;
|
|
55
|
+
documentName?: string;
|
|
56
|
+
index?: number;
|
|
57
|
+
}) => string;
|
|
31
58
|
/**
|
|
32
59
|
* Create a text layer
|
|
33
60
|
*/
|
|
@@ -154,6 +181,17 @@ export declare const ExtendScriptSnippets: {
|
|
|
154
181
|
* Apply Motion Blur filter
|
|
155
182
|
*/
|
|
156
183
|
applyMotionBlur: (angle: number, radius: number) => string;
|
|
184
|
+
/**
|
|
185
|
+
* Apply High Pass filter via Action Manager.
|
|
186
|
+
* @see https://community.adobe.com/t5/photoshop-ecosystem-discussions/high-pass-filter-using-javascript/td-p/1144836
|
|
187
|
+
* @see https://theiviaxx.github.io/photoshop-docs/Photoshop/ArtLayer/applyHighPass.html
|
|
188
|
+
*/
|
|
189
|
+
applyHighPass: (radius: number) => string;
|
|
190
|
+
/**
|
|
191
|
+
* Apply Smart Blur filter.
|
|
192
|
+
* @see https://theiviaxx.github.io/photoshop-docs/Photoshop/ArtLayer/applySmartBlur.html
|
|
193
|
+
*/
|
|
194
|
+
applySmartBlur: (radius: number, threshold: number, mode: string, quality: string) => string;
|
|
157
195
|
/**
|
|
158
196
|
* Adjust brightness and contrast
|
|
159
197
|
*/
|
|
@@ -211,6 +249,40 @@ export declare const ExtendScriptSnippets: {
|
|
|
211
249
|
* Update text content
|
|
212
250
|
*/
|
|
213
251
|
updateTextContent: (newText: string) => string;
|
|
252
|
+
/**
|
|
253
|
+
* Read active pixel selection bounds (read-only).
|
|
254
|
+
* Uses executeActionGet hasSelection (c.pfaffenbichler) then bounds[].as('px').
|
|
255
|
+
* @see https://stackoverflow.com/questions/41552883/determine-if-selection-is-present
|
|
256
|
+
* @see https://community.adobe.com/t5/photoshop-ecosystem-discussions/can-the-presence-of-a-selection-be-set-to-a-boolean/td-p/1144178
|
|
257
|
+
* @see https://community.adobe.com/t5/photoshop-ecosystem-discussions/selection-bounds-operation/td-p/1101762
|
|
258
|
+
*/
|
|
259
|
+
getSelectionBounds: () => string;
|
|
260
|
+
/**
|
|
261
|
+
* Create elliptical marquee selection via Action Manager (setd + Elps).
|
|
262
|
+
* @see https://stackoverflow.com/questions/37082583/elliptical-marquee-selection-then-fill-with-color-in-photoshop-using-javascript
|
|
263
|
+
* @see https://stackoverflow.com/questions/35235191/how-do-i-create-a-circular-or-elliptical-selections-in-javascript-for-use-in-pho
|
|
264
|
+
*/
|
|
265
|
+
selectEllipse: (left: number, top: number, right: number, bottom: number) => string;
|
|
266
|
+
/**
|
|
267
|
+
* Expand the active selection by pixels.
|
|
268
|
+
* @see https://theiviaxx.github.io/photoshop-docs/Photoshop/Selection/expand.html
|
|
269
|
+
*/
|
|
270
|
+
expandSelection: (pixels: number) => string;
|
|
271
|
+
/**
|
|
272
|
+
* Contract the active selection by pixels.
|
|
273
|
+
* @see https://theiviaxx.github.io/photoshop-docs/Photoshop/Selection/contract.html
|
|
274
|
+
*/
|
|
275
|
+
contractSelection: (pixels: number) => string;
|
|
276
|
+
/**
|
|
277
|
+
* Feather the active selection edges by pixels.
|
|
278
|
+
* @see https://www.indesignjs.de/extendscriptAPI/photoshop-latest/Selection.html
|
|
279
|
+
*/
|
|
280
|
+
featherSelection: (pixels: number) => string;
|
|
281
|
+
/**
|
|
282
|
+
* Save the active selection to a new alpha channel.
|
|
283
|
+
* @see https://theiviaxx.github.io/photoshop-docs/Photoshop/Selection/store.html
|
|
284
|
+
*/
|
|
285
|
+
saveSelection: (channelName?: string) => string;
|
|
214
286
|
/**
|
|
215
287
|
* Create rectangular selection
|
|
216
288
|
*/
|
|
@@ -247,6 +319,15 @@ export declare const ExtendScriptSnippets: {
|
|
|
247
319
|
* Delete layer mask
|
|
248
320
|
*/
|
|
249
321
|
deleteLayerMask: () => string;
|
|
322
|
+
/**
|
|
323
|
+
* Create a clipping mask on the active or named layer (groupEvent AM).
|
|
324
|
+
* Active layer must sit directly above the layer to clip into.
|
|
325
|
+
*/
|
|
326
|
+
createClippingMask: (layerName?: string) => string;
|
|
327
|
+
/**
|
|
328
|
+
* Release clipping mask on the active or named layer (layer.grouped = false).
|
|
329
|
+
*/
|
|
330
|
+
releaseClippingMask: (layerName?: string) => string;
|
|
250
331
|
/**
|
|
251
332
|
* Apply layer mask
|
|
252
333
|
*/
|
|
@@ -359,6 +440,23 @@ export declare const ExtendScriptSnippets: {
|
|
|
359
440
|
* Batch-export one file per data set: applies each data set then saves a copy.
|
|
360
441
|
*/
|
|
361
442
|
applyDataSetsExport: (outputDir: string, format: "JPEG" | "PNG" | "PSD", datasetNames: string[]) => string;
|
|
443
|
+
/**
|
|
444
|
+
* Convert the active or named layer to an embedded Smart Object (newPlacedLayer).
|
|
445
|
+
*/
|
|
446
|
+
convertToSmartObject: (layerName?: string) => string;
|
|
447
|
+
/**
|
|
448
|
+
* Replace Smart Object contents from a file (placedLayerReplaceContents + PgNm).
|
|
449
|
+
*/
|
|
450
|
+
replaceSmartObjectContents: (filePath: string, layerName?: string) => string;
|
|
451
|
+
/**
|
|
452
|
+
* Open Smart Object embedded contents for editing (placedLayerEditContents).
|
|
453
|
+
* Active document becomes the embedded .psb until saved and closed.
|
|
454
|
+
*/
|
|
455
|
+
editSmartObjectContents: (layerName?: string) => string;
|
|
456
|
+
/**
|
|
457
|
+
* Create an independent Smart Object copy (placedLayerMakeCopy).
|
|
458
|
+
*/
|
|
459
|
+
createSmartObjectViaCopy: (layerName?: string) => string;
|
|
362
460
|
/**
|
|
363
461
|
* Load image files into one document, convert to a smart object and apply a stack mode.
|
|
364
462
|
* Classic "remove tourists with median stack" without any generative AI.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"extendscript.d.ts","sourceRoot":"","sources":["../../src/api/extendscript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgLH,mGAAmG;AACnG,eAAO,MAAM,4BAA4B,8rDAsCxC,CAAC;AAOF;;;;GAIG;AACH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,6zDA0DpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,wlHA6FlC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,4kBAoBrC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,eAAe,GACf,eAAe,GACf,eAAe,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;OAEG;;IASH;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAW3C;;OAEG;;IAYH;;;OAGG;;IAqCH;;;OAGG;gCACyB;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IA8ED;;OAEG;4BACqB,MAAM,wDAA8C,MAAM;IAiClF;;OAEG;2BACoB,MAAM;IA6C7B;;OAEG;0BACmB,MAAM;IAe5B;;OAEG;sBACe,MAAM;IAYxB;;OAEG;uBACgB,MAAM;IAazB;;OAEG;sBACe,MAAM;IAYxB;;OAEG;;IAUH;;OAEG;sBACe,MAAM;IAkBxB;;OAEG;;IAaH;;;;;;;OAOG;qBACc,MAAM,SAAS,MAAM,QAAQ,MAAM;IAyCpD;;OAEG;yBACkB,MAAM,UAAU,MAAM;IAiB3C;;OAEG;;IAwCH;;OAEG;8BACuB,MAAM;IA6ChC;;OAEG;;IA8DH;;OAEG;+BACwB,MAAM;IAoBjC;;OAEG;wBACiB,MAAM,UAAU,MAAM;IAoB1C;;OAEG;2BACoB,MAAM;IAmB7B;;OAEG;+BACwB,MAAM;IAqBjC;;OAEG;mCAC4B,MAAM;IAqBrC;;OAEG;kCAC2B,OAAO;IAerC;;OAEG;6BACsB,OAAO;IAehC;;OAEG;2BACoB,MAAM;IAgB7B;;;;;;;OAOG;+BACwB,MAAM;IAoBjC;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;gCACyB,MAAM;IA+BlC;;OAEG;+BACwB,MAAM,UAAU,MAAM,aAAa,MAAM;IAyBpE;;OAEG;4BACqB,MAAM,gBAAgB,MAAM,iBAAiB,OAAO;IA0B5E;;OAEG;6BACsB,MAAM,UAAU,MAAM;IAwB/C;;;;OAIG;4BACqB,MAAM;IAkC9B;;;OAGG;6BACsB,MAAM,aAAa,MAAM,QAAQ,MAAM,WAAW,MAAM;IAkCjF;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAoB/D;;;;;;;OAOG;+BACwB,MAAM,cAAc,MAAM,aAAa,MAAM;IA2DxE;;OAEG;;IAmBH;;OAEG;;IAmBH;;OAEG;4BACoB,YAAY;IAmBnC;;OAEG;;IA+CH;;OAEG;;IAmBH;;OAEG;yBACkB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAgBvE;;OAEG;4BACqB,MAAM,aAAa,MAAM;IAwBjD;;OAEG;wBACiB,MAAM;IAuC1B;;OAEG;wBACiB,MAAM,SAAS,MAAM,QAAQ,MAAM;IAqBvD;;OAEG;kCAC2B,MAAM;IAiBpC;;OAEG;iCAC0B,MAAM;IAiBnC;;;;;;OAMG;;IAiCH;;;;OAIG;0BACmB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAkCxE;;;OAGG;8BACuB,MAAM;IA2BhC;;;OAGG;gCACyB,MAAM;IA2BlC;;;OAGG;+BACwB,MAAM;IA2BjC;;;OAGG;kCAC2B,MAAM;IA8BpC;;OAEG;4BACqB,MAAM,OAAO,MAAM,SAAS,MAAM,UAAU,MAAM;IAe1E;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IAaH;;OAEG;;IA0CH;;OAEG;;IA2BH;;OAEG;;IA6BH;;OAEG;oCAEU,qBAAqB,iDAGrB,MAAM;IA0DnB;;OAEG;;IAwBH;;;OAGG;qCAC8B,MAAM;IA4DvC;;OAEG;sCAC+B,MAAM;IAmDxC;;OAEG;;IA4BH;;OAEG;6BACsB,MAAM,iBAAiB,MAAM;IAStD;;OAEG;gCACyB,MAAM;IAIlC;;OAEG;;IAgDH;;OAEG;;IAwCH;;OAEG;;IAwCH;;OAEG;;IAoCH;;OAEG;2CACoC,MAAM,YAAY,MAAM;IAiD/D;;OAEG;;IAuBH;;OAEG;;IA4BH;;OAEG;;IAuCH;;OAEG;;IAuCH;;OAEG;;IAMH;;OAEG;;IA4CH;;;OAGG;;6BAyCsB,MAAM;kCA8CD,MAAM,qBAAqB,OAAO;kCAkDlC,MAAM,UAAU,MAAM;qCAqCnB,MAAM;mCAgCR,MAAM;4BAuCb,MAAM,SAAS,MAAM,UAAU,MAAM;IAgD7D;;OAEG;+BACwB;QACzB,KAAK,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;QAChE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf;IAiGD;;OAEG;oBACa,MAAM;IAqCtB;;OAEG;+BACwB,MAAM,cAAc,MAAM;IA4BrD;;OAEG;+BACwB,MAAM,UAAU,MAAM,SAAS,MAAM;IA+BhE;;OAEG;4BACqB,MAAM,SAAS,MAAM,QAAQ,MAAM,WAAW,MAAM,sBAAsB,OAAO;IAmCzG;;OAEG;gCACyB,OAAO;IAyDnC;;OAEG;;IAqBH;;OAEG;8BACuB,MAAM;IA2BhC;;OAEG;qCAC8B,MAAM,UAAU,MAAM,GAAG,KAAK,GAAG,KAAK,gBAAgB,MAAM,EAAE;IAsD/F;;OAEG;uCACgC,MAAM;IAkDzC;;OAEG;2CACoC,MAAM,cAAc,MAAM;IAyBjE;;;OAGG;0CACmC,MAAM;IA+C5C;;OAEG;2CACoC,MAAM;IA4C7C;;;OAGG;4BACqB,MAAM,EAAE,QAAQ,MAAM;IA0D9C;;OAEG;yBACkB,MAAM,UAAU,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,WAAW,MAAM;CAgEvF,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUzD"}
|