n8n-nodes-digisac 1.0.1 → 1.0.3
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/README.md +61 -81
- package/dist/credentials/DigisacApi.credentials.d.ts +2 -2
- package/dist/credentials/DigisacApi.credentials.js +1 -1
- package/dist/credentials/digisac.dark.png +0 -0
- package/dist/credentials/digisac.png +0 -0
- package/dist/nodes/Digisac/Digisac.node.js +8 -4
- package/dist/nodes/Digisac/Digisac.node.js.map +1 -1
- package/dist/nodes/Digisac/actions/index.js +615 -65
- package/dist/nodes/Digisac/actions/index.js.map +1 -1
- package/dist/nodes/Digisac/digisac.dark.png +0 -0
- package/dist/nodes/Digisac/digisac.png +0 -0
- package/dist/nodes/Digisac/helpers/format.d.ts +3 -0
- package/dist/nodes/Digisac/helpers/format.js +26 -3
- package/dist/nodes/Digisac/helpers/format.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,9 +9,9 @@ O projeto segue o mesmo padrão usado no `n8n-nodes-clinicorp`: um node de açã
|
|
|
9
9
|
## Funcionalidades
|
|
10
10
|
|
|
11
11
|
- **Cobertura completa da documentação**: 298 chamadas da coleção pública Postman da Digisac, organizadas em 51 recursos no n8n.
|
|
12
|
-
- **Node único e intuitivo**: selecione **Resource -> Operation**, preencha
|
|
12
|
+
- **Node único e intuitivo**: selecione **Resource -> Operation**, preencha campos simples de path, query e body, e execute.
|
|
13
13
|
- **Credencial centralizada**: Base URL e Bearer Token ficam salvos uma única vez na credencial `Digisac API`.
|
|
14
|
-
- **Pronto para AI Agent**: o node tem `usableAsTool
|
|
14
|
+
- **Pronto para AI Agent**: o node tem `usableAsTool` com descrição específica de ferramenta e textos pensados para LLMs entenderem método, caminho, efeito da operação, parâmetros, regra de IDs, filtros, campos de body e quando usar JSON avançado.
|
|
15
15
|
- **Sem dependências runtime**: usa `httpRequestWithAuthentication` do próprio n8n.
|
|
16
16
|
- **Catálogo rastreável**: `nodes/Digisac/generated/endpoints.ts` é gerado da documentação Postman; `docs/api-calls.md` lista todas as chamadas em português.
|
|
17
17
|
- **Publicação segura**: GitHub Actions publica no npm com provenance.
|
|
@@ -54,9 +54,15 @@ GET /api/v1/me
|
|
|
54
54
|
2. Escolha o **Resource**. O resource corresponde a uma pasta da documentação, como `Contatos`, `Mensagens`, `Chamados`, `Campanhas`, `Tags`, `Usuários`, `Webhooks`.
|
|
55
55
|
3. Escolha a **Operation**. Cada operation corresponde a uma chamada real da API.
|
|
56
56
|
4. Preencha os campos obrigatórios de path, como `contactId`, `ticketId`, `serviceId`, `messageId`, `userId`, `campaignId`.
|
|
57
|
-
5.
|
|
58
|
-
6.
|
|
59
|
-
7.
|
|
57
|
+
5. Preencha os campos de query que aparecerem, como `Per Page`, `Number`, `Service Id`, `Start Period`, `End Period`, `Status`.
|
|
58
|
+
6. Em chamadas `POST`, `PUT` e `PATCH`, use **Campos do Body**. O node gera esses campos a partir do body documentado pela Digisac.
|
|
59
|
+
7. Use **Body JSON Avançado** somente quando a operação exigir array, objeto livre ou uma estrutura que não coube nos campos gerados.
|
|
60
|
+
8. Use **Options -> Query Avançada JSON** somente para filtros muito específicos não representados por campos.
|
|
61
|
+
9. Em exports CSV/TXT/PDF, se a resposta não vier como JSON, use **Options -> Response Format -> Text**.
|
|
62
|
+
|
|
63
|
+
Resources marcados como **Popular** são atalhos herdados da coleção Postman para operações frequentes. Resources **General** contêm o catálogo mais completo. Se a mesma chamada existir nos dois, use **Popular** para fluxos comuns e **General** quando precisar de uma operação que não aparece em Popular.
|
|
64
|
+
|
|
65
|
+
Regra para AI Tools e automações: qualquer campo terminado em `Id` ou `Ids` deve vir de busca/listagem anterior, entrada confirmada do usuário ou valor sentinela documentado, como `all`. Nunca copie placeholders como `{{contactId}}`, `{{serviceId}}` ou `{{all/open/close}}`.
|
|
60
66
|
|
|
61
67
|
## Campos principais do node
|
|
62
68
|
|
|
@@ -65,10 +71,11 @@ GET /api/v1/me
|
|
|
65
71
|
| **Resource** | Área funcional da API Digisac, gerada a partir das pastas Postman. |
|
|
66
72
|
| **Operation** | Chamada exata da API. A descrição mostra método, endpoint, origem na documentação e placeholders. |
|
|
67
73
|
| **Path Parameters** | Campos obrigatórios extraídos de placeholders como `{{contactId}}`. |
|
|
68
|
-
| **
|
|
69
|
-
| **
|
|
70
|
-
| **
|
|
71
|
-
| **Options** |
|
|
74
|
+
| **Campos de query** | Campos simples gerados a partir da URL documentada. Exemplos: `Per Page`, `Number`, `Service Id`, `From`, `To`, `Type`. |
|
|
75
|
+
| **Campos do Body** | Coleção de campos gerada a partir do body documentado para operações de escrita. Use antes de qualquer JSON manual. |
|
|
76
|
+
| **Use Body JSON Avançado** | Toggle para liberar um editor JSON quando a chamada precisa de array, objeto livre ou payload muito específico. |
|
|
77
|
+
| **Options -> Query Avançada JSON** | Objeto JSON livre mesclado na query string. Chaves iguais substituem campos gerados; use apenas quando a chamada precisar de filtro não representado por campo. |
|
|
78
|
+
| **Options -> Response Format** | Use `Text` para exportações CSV/TXT/PDF ou respostas que não retornam JSON. |
|
|
72
79
|
|
|
73
80
|
## Exemplos práticos
|
|
74
81
|
|
|
@@ -77,11 +84,9 @@ GET /api/v1/me
|
|
|
77
84
|
Resource: **Contatos (General)**
|
|
78
85
|
Operation: **Listar todos os contatos**
|
|
79
86
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
```
|
|
87
|
+
Preencha:
|
|
88
|
+
|
|
89
|
+
- `Per Page`: `40`
|
|
85
90
|
|
|
86
91
|
### Buscar contato por número em uma conexão
|
|
87
92
|
|
|
@@ -90,50 +95,34 @@ Operation: **Buscar contato por numero de uma conexao especifica**
|
|
|
90
95
|
|
|
91
96
|
Preencha:
|
|
92
97
|
|
|
93
|
-
- `
|
|
94
|
-
- `
|
|
95
|
-
|
|
96
|
-
Também é possível passar manualmente:
|
|
97
|
-
|
|
98
|
-
```json
|
|
99
|
-
{
|
|
100
|
-
"where[data.number][$iLike]": "%5511999999999%",
|
|
101
|
-
"where[serviceId]": "SERVICE_ID"
|
|
102
|
-
}
|
|
103
|
-
```
|
|
98
|
+
- `Number`: número ou parte do número
|
|
99
|
+
- `Service Id`: ID da conexão
|
|
104
100
|
|
|
105
101
|
### Enviar mensagem
|
|
106
102
|
|
|
107
103
|
Resource: **Mensagens (General)**
|
|
108
104
|
Operation: **Enviar mensagem**
|
|
109
105
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
```
|
|
106
|
+
Em **Campos do Body**, preencha:
|
|
107
|
+
|
|
108
|
+
- `Text`: `Olá, tudo bem?`
|
|
109
|
+
- `Type`: `chat`
|
|
110
|
+
- `Contact Id`: `CONTACT_ID`
|
|
111
|
+
- `User Id`: `USER_ID`
|
|
112
|
+
- `Origin`: `bot`
|
|
119
113
|
|
|
120
114
|
### Enviar arquivo por mensagem
|
|
121
115
|
|
|
122
116
|
Resource: **Mensagens (General)**
|
|
123
117
|
Operation: **Enviar imagem**, **Enviar PDF** ou **Enviar áudio**
|
|
124
118
|
|
|
125
|
-
|
|
119
|
+
Use **Campos do Body** para `Text`, `Number` e `Service Id`. No campo `File`, informe somente o objeto do arquivo, não o body inteiro:
|
|
126
120
|
|
|
127
121
|
```json
|
|
128
122
|
{
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"file": {
|
|
133
|
-
"base64": "BASE64_DO_ARQUIVO",
|
|
134
|
-
"mimetype": "application/pdf",
|
|
135
|
-
"name": "documento.pdf"
|
|
136
|
-
}
|
|
123
|
+
"base64": "BASE64_DO_ARQUIVO",
|
|
124
|
+
"mimetype": "application/pdf",
|
|
125
|
+
"name": "documento.pdf"
|
|
137
126
|
}
|
|
138
127
|
```
|
|
139
128
|
|
|
@@ -142,12 +131,9 @@ Exemplo de body:
|
|
|
142
131
|
Resource: **Chamados (General)**
|
|
143
132
|
Operation: **Buscar chamados do contato**
|
|
144
133
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
"perPage": 40
|
|
149
|
-
}
|
|
150
|
-
```
|
|
134
|
+
Preencha:
|
|
135
|
+
|
|
136
|
+
- `Contact Id`: `CONTACT_ID`
|
|
151
137
|
|
|
152
138
|
### Transferir chamado
|
|
153
139
|
|
|
@@ -160,24 +146,19 @@ Path:
|
|
|
160
146
|
|
|
161
147
|
Body:
|
|
162
148
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"userId": "USER_ID",
|
|
167
|
-
"comments": "Transferido pelo fluxo do n8n"
|
|
168
|
-
}
|
|
169
|
-
```
|
|
149
|
+
- `Department Id`: `DEPARTMENT_ID`
|
|
150
|
+
- `User Id`: `USER_ID`
|
|
151
|
+
- `Comments`: `Transferido pelo fluxo do n8n`
|
|
170
152
|
|
|
171
153
|
### Fechar chamado com assunto
|
|
172
154
|
|
|
173
155
|
Resource: **Chamados (General)**
|
|
174
156
|
Operation: **Fechar um chamado com assunto**
|
|
175
157
|
|
|
158
|
+
Em **Campos do Body**, preencha `Ticket Topic Ids` com:
|
|
159
|
+
|
|
176
160
|
```json
|
|
177
|
-
|
|
178
|
-
"ticketTopicIds": ["TICKET_TOPIC_ID"],
|
|
179
|
-
"comments": "Atendimento finalizado pelo fluxo"
|
|
180
|
-
}
|
|
161
|
+
["TICKET_TOPIC_ID"]
|
|
181
162
|
```
|
|
182
163
|
|
|
183
164
|
### Buscar estatísticas de atendimento
|
|
@@ -185,30 +166,24 @@ Operation: **Fechar um chamado com assunto**
|
|
|
185
166
|
Resource: **Estatísticas de atendimento (General)**
|
|
186
167
|
Operation: **Buscar estatísticas com todos os filtros ativos**
|
|
187
168
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
```
|
|
169
|
+
Preencha os campos de query:
|
|
170
|
+
|
|
171
|
+
- `Start Period`: `2026-07-01T00:00:00.000Z`
|
|
172
|
+
- `End Period`: `2026-07-31T23:59:59.999Z`
|
|
173
|
+
- `Department Id`: `all`
|
|
174
|
+
- `User Id`: `all`
|
|
175
|
+
- `Period Type`: `open` ou `close`
|
|
176
|
+
- `Status`: `all`, `open` ou `close`
|
|
198
177
|
|
|
199
178
|
### Criar webhook
|
|
200
179
|
|
|
201
180
|
Resource: **Webhooks (General)**
|
|
202
181
|
Operation: **Criar webhook**
|
|
203
182
|
|
|
183
|
+
Em **Campos do Body**, preencha `Active`, `Name`, `Url`, `Events` e `Type`. Para `Events`, use array JSON:
|
|
184
|
+
|
|
204
185
|
```json
|
|
205
|
-
|
|
206
|
-
"active": true,
|
|
207
|
-
"name": "Webhook n8n",
|
|
208
|
-
"url": "https://seu-n8n/webhook/digisac",
|
|
209
|
-
"events": ["message.created", "ticket.closed"],
|
|
210
|
-
"type": "http"
|
|
211
|
-
}
|
|
186
|
+
["message.created", "ticket.closed"]
|
|
212
187
|
```
|
|
213
188
|
|
|
214
189
|
## Todas as chamadas da API
|
|
@@ -285,8 +260,11 @@ O node pode ser conectado ao **AI Agent** do n8n como uma tool. A prática recom
|
|
|
285
260
|
|
|
286
261
|
```text
|
|
287
262
|
Você pode usar as tools Digisac somente quando o usuário pedir para consultar, criar ou alterar dados na Digisac.
|
|
288
|
-
Nunca invente IDs.
|
|
263
|
+
Nunca invente IDs. Qualquer campo terminado em Id ou Ids deve vir de busca/listagem anterior, entrada confirmada do usuário ou valor sentinela documentado como all.
|
|
264
|
+
Não copie placeholders da documentação, como {{contactId}}, {{serviceId}} ou {{all/open/close}}. Substitua por valor real ou escolha uma opção válida.
|
|
289
265
|
Para operações POST, PUT e PATCH, envie um body JSON mínimo, somente com os campos necessários.
|
|
266
|
+
Quando a tool expuser Campos do Body, preencha os campos dedicados em vez de gerar um JSON manual.
|
|
267
|
+
Use Body JSON Avançado ou Query Avançada JSON apenas quando não existir campo dedicado suficiente para a chamada.
|
|
290
268
|
Para filtros de data/hora, use ISO-8601 quando o endpoint esperar timestamp.
|
|
291
269
|
Para exportações CSV, TXT ou PDF, use Response Format = Text se a resposta não for JSON.
|
|
292
270
|
Antes de criar, editar, excluir, arquivar, bloquear, fechar chamado ou enviar mensagem, confirme que a intenção do usuário está clara.
|
|
@@ -312,10 +290,10 @@ Filtro de período:
|
|
|
312
290
|
{{ $fromAI('startPeriod', 'Início do período em ISO-8601, por exemplo 2026-07-01T00:00:00.000Z.', 'string') }}
|
|
313
291
|
```
|
|
314
292
|
|
|
315
|
-
|
|
293
|
+
Campo de body estruturado:
|
|
316
294
|
|
|
317
295
|
```javascript
|
|
318
|
-
{{ $fromAI('
|
|
296
|
+
{{ $fromAI('file', 'Objeto JSON do arquivo com base64, mimetype e name quando a operação Digisac enviar mídia.', 'json') }}
|
|
319
297
|
```
|
|
320
298
|
|
|
321
299
|
### Boas práticas para LLMs
|
|
@@ -326,7 +304,7 @@ Body JSON:
|
|
|
326
304
|
- Use credenciais dedicadas por ambiente/cliente.
|
|
327
305
|
- Para operações destrutivas (`DELETE`, arquivar, bloquear, fechar chamado), coloque etapa humana de confirmação quando o fluxo for sensível.
|
|
328
306
|
- Em mensagens enviadas ao cliente, gere o texto em etapa anterior e passe o texto final para a tool.
|
|
329
|
-
- Para bodies grandes, use JSON explícito e valide campos obrigatórios no workflow antes da chamada.
|
|
307
|
+
- Use campos dedicados sempre que existirem. Para bodies grandes ou arrays de múltiplos itens, use JSON explícito e valide campos obrigatórios no workflow antes da chamada.
|
|
330
308
|
|
|
331
309
|
## Desenvolvimento
|
|
332
310
|
|
|
@@ -401,6 +379,8 @@ npm publish --provenance --access public
|
|
|
401
379
|
|
|
402
380
|
## Versões
|
|
403
381
|
|
|
382
|
+
- **1.0.3** — Descrições de AI Tool reforçadas: regra genérica para campos `Id/Ids`, alertas para placeholders, orientação Popular vs General, avisos por tipo de campo de body/query e exemplo de arquivo corrigido.
|
|
383
|
+
- **1.0.2** — Interface simplificada: query e body agora usam campos dedicados gerados da documentação. JSON fica escondido em opções avançadas ou aparece apenas nas chamadas em que não há forma segura de gerar campos. Ícone atualizado a partir de `icon.webp`.
|
|
404
384
|
- **1.0.1** — Documentação reescrita em PT-BR, com exemplos práticos, instruções de AI Tool e catálogo completo de chamadas em `docs/api-calls.md`.
|
|
405
385
|
- **1.0.0** — Primeira versão publicada. Node único `Digisac`, credencial Bearer, catálogo com 298 chamadas da documentação Postman, suporte a AI Agent e publicação npm via GitHub Actions.
|
|
406
386
|
|
|
@@ -3,8 +3,8 @@ export declare class DigisacApi implements ICredentialType {
|
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
5
|
icon: {
|
|
6
|
-
readonly light: "file:digisac.
|
|
7
|
-
readonly dark: "file:digisac.dark.
|
|
6
|
+
readonly light: "file:digisac.png";
|
|
7
|
+
readonly dark: "file:digisac.dark.png";
|
|
8
8
|
};
|
|
9
9
|
documentationUrl: string;
|
|
10
10
|
properties: INodeProperties[];
|
|
@@ -5,7 +5,7 @@ class DigisacApi {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.name = 'digisacApi';
|
|
7
7
|
this.displayName = 'Digisac API';
|
|
8
|
-
this.icon = { light: 'file:digisac.
|
|
8
|
+
this.icon = { light: 'file:digisac.png', dark: 'file:digisac.dark.png' };
|
|
9
9
|
this.documentationUrl = 'https://documenter.getpostman.com/view/53282970/2sBXihpXmF';
|
|
10
10
|
this.properties = [
|
|
11
11
|
{
|
|
Binary file
|
|
Binary file
|
|
@@ -8,17 +8,21 @@ class Digisac {
|
|
|
8
8
|
this.description = {
|
|
9
9
|
displayName: 'Digisac',
|
|
10
10
|
name: 'digisac',
|
|
11
|
-
icon: { light: 'file:digisac.
|
|
11
|
+
icon: { light: 'file:digisac.png', dark: 'file:digisac.dark.png' },
|
|
12
12
|
group: ['transform'],
|
|
13
13
|
version: 1,
|
|
14
14
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
15
|
-
description: 'Use every documented Digisac API request from the public Postman documentation. Choose a resource folder and operation, fill required path parameters
|
|
15
|
+
description: 'Use every documented Digisac API request from the public Postman documentation. Choose a resource folder and operation, fill required path parameters and use the generated query/body fields first. Advanced JSON fields are available only when an operation needs a custom payload or unsupported filter. Built for AI Agents: operation descriptions include method, path, source folder, required path variables, query guidance, body fields and explicit reminders to use IDs returned by Digisac instead of inventing values.',
|
|
16
16
|
defaults: {
|
|
17
17
|
name: 'Digisac',
|
|
18
18
|
},
|
|
19
19
|
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
20
|
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
-
usableAsTool:
|
|
21
|
+
usableAsTool: {
|
|
22
|
+
replacements: {
|
|
23
|
+
description: 'Ferramenta para executar chamadas documentadas da API Digisac dentro do n8n. Use somente para tarefas de Digisac, como consultar, criar ou alterar contatos, chamados, mensagens, campanhas, conexoes, departamentos, usuarios, tags, templates, webhooks, relatorios e estatisticas. Primeiro escolha Resource e Operation; a Operation informa metodo HTTP, endpoint, origem na documentacao, parametros obrigatorios, query e body. Nunca invente IDs: qualquer campo terminado em Id ou Ids deve vir de busca/listagem anterior, entrada confirmada do usuario ou valor sentinela documentado como all. Preencha campos dedicados de path, query e Campos do Body; deixe campos vazios quando nao souber. Nao copie placeholders da documentacao como {{contactId}} ou {{all/open/close}}; substitua por valor real ou escolha uma opcao valida. Use Query Avancada JSON ou Body JSON Avancado apenas quando nao existir campo dedicado suficiente. Antes de enviar mensagem, excluir, arquivar, bloquear, fechar chamado, transferir chamado ou alterar dados, confirme que a intencao do usuario esta explicita.',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
22
26
|
credentials: [
|
|
23
27
|
{
|
|
24
28
|
name: 'digisacApi',
|
|
@@ -33,7 +37,7 @@ class Digisac {
|
|
|
33
37
|
noDataExpression: true,
|
|
34
38
|
options: actions_1.resourceOptions,
|
|
35
39
|
default: actions_1.resourceOptions[0]?.value ?? '',
|
|
36
|
-
description: '
|
|
40
|
+
description: 'Area da API Digisac agrupada pela documentacao Postman. Resources Popular sao atalhos para operacoes frequentes; resources General contem o catalogo mais completo. Se a mesma chamada existir em Popular e General, prefira Popular para fluxos comuns e General quando precisar de uma chamada que nao existe no Popular.',
|
|
37
41
|
},
|
|
38
42
|
...actions_1.resourceProperties,
|
|
39
43
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Digisac.node.js","sourceRoot":"","sources":["../../../nodes/Digisac/Digisac.node.ts"],"names":[],"mappings":";;;AAOA,+CAAuE;AAEvE,uCAAiF;AAEjF,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClE,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EACV
|
|
1
|
+
{"version":3,"file":"Digisac.node.js","sourceRoot":"","sources":["../../../nodes/Digisac/Digisac.node.ts"],"names":[],"mappings":";;;AAOA,+CAAuE;AAEvE,uCAAiF;AAEjF,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClE,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EACV,ugBAAugB;YACxgB,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE;gBACb,YAAY,EAAE;oBACb,WAAW,EACV,wjCAAwjC;iBACzjC;aACD;YACD,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE,yBAAe;oBACxB,OAAO,EAAE,yBAAe,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;oBACxC,WAAW,EACV,6TAA6T;iBAC9T;gBACD,GAAG,4BAAkB;aACrB;SACD,CAAC;IA+BH,CAAC;IA7BA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAClE,MAAM,YAAY,GAAG,MAAM,yBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE5E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAC5D,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAwB,CAAC,EACtD,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CACzB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;wBACzC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AAvED,0BAuEC"}
|