@senior-agronegocio/angular-components 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/COMMON_LLM_INSTRUCTIONS.md +334 -0
- package/LLM_LIBRARY_GUIDES.md +8 -0
- package/components/index.d.ts +1 -0
- package/components/modal-invoice-pj/for-contracts/modal-contracts-options.interface.d.ts +4 -0
- package/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.component.d.ts +32 -0
- package/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.module.d.ts +26 -0
- package/components/modal-invoice-pj/index.d.ts +3 -0
- package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +2 -2
- package/components/modal-invoice-pj/modal-shared-imports.d.ts +2 -2
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.d.ts +1 -2
- package/components/producer-list-modal/index.d.ts +3 -0
- package/components/producer-list-modal/producer-list-modal-data.interface.d.ts +9 -0
- package/components/producer-list-modal/producer-list-modal.component.d.ts +14 -0
- package/components/producer-list-modal/producer-list-modal.module.d.ts +9 -0
- package/esm2022/components/cancel-event-dialog/cancel-event-dialog.component.mjs +3 -3
- package/esm2022/components/event-control-board/event-control-board.component.mjs +1 -1
- package/esm2022/components/event-steps/event-steps.component.mjs +3 -3
- package/esm2022/components/financial-title-table/financial-title-table.component.mjs +1 -1
- package/esm2022/components/index.mjs +2 -1
- package/esm2022/components/modal-invoice-pj/for-contracts/modal-contracts-options.interface.mjs +2 -0
- package/esm2022/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.component.mjs +67 -0
- package/esm2022/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.module.mjs +38 -0
- package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/index.mjs +3 -1
- package/esm2022/components/modal-invoice-pj/modal-invoice-pj-base.class.mjs +1 -1
- package/esm2022/components/modal-invoice-pj/modal-shared-imports.mjs +2 -2
- package/esm2022/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.mjs +3 -19
- package/esm2022/components/producer-list-modal/index.mjs +3 -0
- package/esm2022/components/producer-list-modal/producer-list-modal-data.interface.mjs +2 -0
- package/esm2022/components/producer-list-modal/producer-list-modal.component.mjs +48 -0
- package/esm2022/components/producer-list-modal/producer-list-modal.module.mjs +19 -0
- package/fesm2022/senior-agronegocio-angular-components.mjs +138 -31
- package/fesm2022/senior-agronegocio-angular-components.mjs.map +1 -1
- package/package.json +21 -7
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
# Instrucoes Para LLMs - Modulo common
|
|
2
|
+
|
|
3
|
+
Este documento orienta o uso das classes utilitarias exportadas por `@senior-agronegocio/angular-components/common`.
|
|
4
|
+
|
|
5
|
+
## Como importar
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import {
|
|
9
|
+
AgroArrayUtils,
|
|
10
|
+
AgroCookieUtils,
|
|
11
|
+
AgroDateUtils,
|
|
12
|
+
AgroLogics,
|
|
13
|
+
AgroNameUtils,
|
|
14
|
+
AgroNumberUtils,
|
|
15
|
+
AgroObjectStringifier,
|
|
16
|
+
AgroObjectUtils,
|
|
17
|
+
AgroPlatformUtils,
|
|
18
|
+
AgroStringUtils,
|
|
19
|
+
AgroUnitConverter,
|
|
20
|
+
AGRO_REGEX,
|
|
21
|
+
Colors,
|
|
22
|
+
EDLQueryBuilder,
|
|
23
|
+
} from '@senior-agronegocio/angular-components/common';
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Diretrizes gerais para LLM
|
|
27
|
+
|
|
28
|
+
- Prefira chamadas estaticas nas classes utilitarias.
|
|
29
|
+
- Em fluxos de navegador, `AgroCookieUtils` e `AgroPlatformUtils` dependem de `document.cookie`.
|
|
30
|
+
- Sempre trate erros esperados (ex.: divisao por zero, unidade invalida, cookie ausente).
|
|
31
|
+
- Para comparacoes profundas de objetos e arrays, use `AgroObjectUtils.isEqual`.
|
|
32
|
+
- Para validacao textual, combine `AgroStringUtils` e `AGRO_REGEX`.
|
|
33
|
+
|
|
34
|
+
## AgroArrayUtils
|
|
35
|
+
|
|
36
|
+
Principais recursos:
|
|
37
|
+
- Verificacao de array (`isArray`, `isEmpty`, `isNotEmpty`)
|
|
38
|
+
- Remocao de itens (`removeItem`, `removeItemByIndex`, `removeAllItems`)
|
|
39
|
+
- Busca por propriedade (`findItemByProperty`)
|
|
40
|
+
- Comparacao estrutural (`arraysAreEqual`)
|
|
41
|
+
|
|
42
|
+
Exemplo:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
const users = [{ id: 1, nome: 'Ana' }, { id: 2, nome: 'Bruno' }];
|
|
46
|
+
|
|
47
|
+
const target = AgroArrayUtils.findItemByProperty(users, 'id', 2);
|
|
48
|
+
// { id: 2, nome: 'Bruno' }
|
|
49
|
+
|
|
50
|
+
AgroArrayUtils.removeItem(users, target);
|
|
51
|
+
// users => [{ id: 1, nome: 'Ana' }]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Dica para LLM:
|
|
55
|
+
- Se a ordem dos elementos importa, `arraysAreEqual` e apropriado.
|
|
56
|
+
|
|
57
|
+
## AgroCookieUtils
|
|
58
|
+
|
|
59
|
+
Principais recursos:
|
|
60
|
+
- Leitura de cookie (`getCookie`)
|
|
61
|
+
- Conversao para objeto (`parseCookieToObject`)
|
|
62
|
+
- Gravacao de cookie com expiracao em dias (`setCookie`)
|
|
63
|
+
|
|
64
|
+
Exemplo:
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
AgroCookieUtils.setCookie('idioma', 'pt-BR', 7);
|
|
68
|
+
|
|
69
|
+
const idioma = AgroCookieUtils.getCookie('idioma');
|
|
70
|
+
// 'pt-BR'
|
|
71
|
+
|
|
72
|
+
const payload = AgroCookieUtils.parseCookieToObject('a=1; b=2');
|
|
73
|
+
// { a: '1', b: '2' }
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Dica para LLM:
|
|
77
|
+
- Ao consumir cookie JSON serializado, use `parseCookieToObject(cookie, true)` para aplicar `decodeURIComponent`.
|
|
78
|
+
|
|
79
|
+
## AgroDateUtils
|
|
80
|
+
|
|
81
|
+
Principais recursos:
|
|
82
|
+
- Checks de nulidade e validade de data
|
|
83
|
+
- Comparacoes (`isBefore`, `isAfter`, `isEqual`, etc.)
|
|
84
|
+
- Formatacao com `moment` (`formatDate`)
|
|
85
|
+
- Preenchimento com zero (`padZero`)
|
|
86
|
+
|
|
87
|
+
Exemplo:
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const hoje = new Date('2026-04-23');
|
|
91
|
+
const vencimento = new Date('2026-04-30');
|
|
92
|
+
|
|
93
|
+
const atrasado = AgroDateUtils.isAfter(hoje, vencimento);
|
|
94
|
+
const exibicao = AgroDateUtils.formatDate(vencimento, 'DD/MM/YYYY');
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Dica para LLM:
|
|
98
|
+
- Para comparacao exata de instante use `isEqual` (timestamp), nao comparacao textual.
|
|
99
|
+
|
|
100
|
+
## AgroLogics
|
|
101
|
+
|
|
102
|
+
Principais recursos:
|
|
103
|
+
- Estatistica de distribuicao por chaves (`entityDistributionStats`)
|
|
104
|
+
- Suporte a caminho aninhado (ex.: `propriedade.subpropriedade`)
|
|
105
|
+
|
|
106
|
+
Exemplo:
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
type Item = { cultura: string; fazenda: { uf: string } };
|
|
110
|
+
|
|
111
|
+
const dados: Item[] = [
|
|
112
|
+
{ cultura: 'Soja', fazenda: { uf: 'PR' } },
|
|
113
|
+
{ cultura: 'Milho', fazenda: { uf: 'PR' } },
|
|
114
|
+
{ cultura: 'Soja', fazenda: { uf: 'PR' } },
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
const stats = AgroLogics.entityDistributionStats(dados, ['cultura', 'fazenda.uf']);
|
|
118
|
+
// [{ data: { cultura: 'Soja', fazenda: 'PR' }, samplingQuantity: 2, samplingSuccess: 67 }, ...]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Dica para LLM:
|
|
122
|
+
- Entregue o resultado ordenado por `samplingSuccess` (a API ja retorna assim).
|
|
123
|
+
|
|
124
|
+
## AgroNameUtils
|
|
125
|
+
|
|
126
|
+
Principais recursos:
|
|
127
|
+
- Abreviar ultimo sobrenome
|
|
128
|
+
- Abreviar todos os sobrenomes
|
|
129
|
+
- Obter iniciais
|
|
130
|
+
|
|
131
|
+
Exemplo:
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
AgroNameUtils.abbreviateName('Tiago Batista Correa');
|
|
135
|
+
// 'Tiago C.'
|
|
136
|
+
|
|
137
|
+
AgroNameUtils.abbreviateAllLastNames('Tiago Batista Correa');
|
|
138
|
+
// 'Tiago B. C.'
|
|
139
|
+
|
|
140
|
+
AgroNameUtils.getInitials('Tiago Batista Correa');
|
|
141
|
+
// 'TBC'
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Dica para LLM:
|
|
145
|
+
- Em entradas invalidas (vazio/null), os metodos retornam `null`.
|
|
146
|
+
|
|
147
|
+
## AgroNumberUtils
|
|
148
|
+
|
|
149
|
+
Principais recursos:
|
|
150
|
+
- Paridade (`isEven`, `isOdd`)
|
|
151
|
+
- Porcentagem (`percentage`)
|
|
152
|
+
- Formatacao monetaria (`toCurrency`)
|
|
153
|
+
- Numero aleatorio em faixa (`randomInRange`)
|
|
154
|
+
- Primo (`isPrime`)
|
|
155
|
+
- Arredondamento (`roundTo`)
|
|
156
|
+
- Extracao de inteiro mais proximo em strings (`getNearInteger`)
|
|
157
|
+
|
|
158
|
+
Exemplo:
|
|
159
|
+
|
|
160
|
+
```ts
|
|
161
|
+
const taxa = AgroNumberUtils.percentage(25, 200); // 12.5
|
|
162
|
+
const valor = AgroNumberUtils.toCurrency(1234.56, 'BRL', 'pt-BR');
|
|
163
|
+
const inteiro = AgroNumberUtils.getNearInteger('safra 2026 lote 12'); // 2026
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Dica para LLM:
|
|
167
|
+
- Trate `percentage(partial, 0)` como erro de regra de negocio.
|
|
168
|
+
|
|
169
|
+
## AgroObjectStringifier
|
|
170
|
+
|
|
171
|
+
Principais recursos:
|
|
172
|
+
- Montar string a partir de campos de objeto
|
|
173
|
+
- Suporte a caminho aninhado
|
|
174
|
+
- Suporte a pipes customizados (`PipeTransform` ou string fixa)
|
|
175
|
+
|
|
176
|
+
Exemplo:
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
const obj = { pessoa: { nome: 'Ana' }, status: 'ATIVO' };
|
|
180
|
+
|
|
181
|
+
const texto = AgroObjectStringifier.formatObject('-', ['pessoa.nome', 'status'], obj);
|
|
182
|
+
// 'Ana - ATIVO'
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Dica para LLM:
|
|
186
|
+
- Use esse utilitario para labels compostas de tabela/lista sem repetir logica manual de concatenacao.
|
|
187
|
+
|
|
188
|
+
## AgroObjectUtils
|
|
189
|
+
|
|
190
|
+
Principais recursos:
|
|
191
|
+
- Checks de tipo (`isString`, `isNumber`, `isArray`, etc.)
|
|
192
|
+
- Igualdade profunda (`isEqual`)
|
|
193
|
+
- Empty/null checks
|
|
194
|
+
- Busca de propriedade (`findProperty`)
|
|
195
|
+
- Serializacao (`toJSON`, `fromString`)
|
|
196
|
+
- Selecao de campos (`pick`)
|
|
197
|
+
- Leitura formatada por tipo (`getPropAndFormatValue`)
|
|
198
|
+
|
|
199
|
+
Exemplo:
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
const a = { id: 1, dados: { nome: 'Lote A' } };
|
|
203
|
+
const b = { id: 1, dados: { nome: 'Lote A' } };
|
|
204
|
+
|
|
205
|
+
const igual = AgroObjectUtils.isEqual(a, b); // true
|
|
206
|
+
const nome = AgroObjectUtils.findProperty(a, 'nome'); // 'Lote A'
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Dica para LLM:
|
|
210
|
+
- `findProperty` pode buscar em profundidade; desative `deepSearch` quando quiser performance e escopo controlado.
|
|
211
|
+
|
|
212
|
+
## AgroPlatformUtils
|
|
213
|
+
|
|
214
|
+
Principais recursos:
|
|
215
|
+
- Dados do tenant atual via cookie de token
|
|
216
|
+
- Dados do usuario atual (nome, username, email)
|
|
217
|
+
- Base URL e Services URL da plataforma
|
|
218
|
+
- Token de acesso atual
|
|
219
|
+
|
|
220
|
+
Exemplo:
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
const tenant = AgroPlatformUtils.getCurrentTenant();
|
|
224
|
+
const locale = AgroPlatformUtils.getCurrentTenantLocale();
|
|
225
|
+
const accessToken = AgroPlatformUtils.getCurrentAccessToken();
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Dica para LLM:
|
|
229
|
+
- Esses metodos assumem ambiente autenticado com cookies da plataforma Senior; em testes unitarios, faça mock de `document.cookie`.
|
|
230
|
+
|
|
231
|
+
## AgroStringUtils
|
|
232
|
+
|
|
233
|
+
Principais recursos:
|
|
234
|
+
- Validacoes gerais de string
|
|
235
|
+
- Validacao de e-mail, UUID, numero
|
|
236
|
+
- Validacao de CPF e CNPJ (inclui CNPJ alfanumerico)
|
|
237
|
+
- Comparacoes e transformacoes (`capitalize`, `swapCase`, `reverse`)
|
|
238
|
+
- Aplicacao de mascara (`applyMask`)
|
|
239
|
+
- Validacao ISO (`isISODate`, `isISOTime`, `isISODatetime`)
|
|
240
|
+
|
|
241
|
+
Exemplo:
|
|
242
|
+
|
|
243
|
+
```ts
|
|
244
|
+
AgroStringUtils.isEmail('time@empresa.com'); // true
|
|
245
|
+
AgroStringUtils.validateCPF('11144477735'); // true/false
|
|
246
|
+
AgroStringUtils.applyMask('11987654321', '(99) 99999-9999'); // '(11) 98765-4321'
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Dica para LLM:
|
|
250
|
+
- Para entradas opcionais em forms, use `isBlank` e `trimToNull` antes de validar formato.
|
|
251
|
+
|
|
252
|
+
## AgroUnitConverter
|
|
253
|
+
|
|
254
|
+
Principais recursos:
|
|
255
|
+
- Conversoes escalaveis (comprimento, massa, area, volume, tempo, energia, dados)
|
|
256
|
+
- Conversao de temperatura
|
|
257
|
+
- Conversao por area (L/area, Kg/area)
|
|
258
|
+
- Conversao bushel <-> kg
|
|
259
|
+
- Conversao de grandezas eletricas com tensao de referencia
|
|
260
|
+
|
|
261
|
+
Exemplo:
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
import { UnitOfMeasurement } from '@senior-agronegocio/angular-components/enums';
|
|
265
|
+
|
|
266
|
+
const converter = new AgroUnitConverter();
|
|
267
|
+
const hectares = converter.convertScalableUnits(10000, UnitOfMeasurement.METRO_QUADRADO, UnitOfMeasurement.HECTARE);
|
|
268
|
+
const fahrenheit = converter.convertTemperatureUnit(25, UnitOfMeasurement.CELSIUS, UnitOfMeasurement.FAHRENHEIT);
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Dica para LLM:
|
|
272
|
+
- Antes de converter, confirme se as unidades pertencem a mesma categoria (quando aplicavel).
|
|
273
|
+
|
|
274
|
+
## AGRO_REGEX
|
|
275
|
+
|
|
276
|
+
Colecao de regex prontas para validacao comum.
|
|
277
|
+
|
|
278
|
+
Exemplos uteis:
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
AGRO_REGEX.isEmail.test('contato@empresa.com');
|
|
282
|
+
AGRO_REGEX.isMercosulLicensePlate.test('ABC1D23');
|
|
283
|
+
AGRO_REGEX.isStrongPassword.test('Senha@123');
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Dica para LLM:
|
|
287
|
+
- Prefira `AgroStringUtils` quando houver metodo dedicado; use `AGRO_REGEX` para cenarios customizados.
|
|
288
|
+
|
|
289
|
+
## Colors
|
|
290
|
+
|
|
291
|
+
Paleta de cores reutilizavel com grupos:
|
|
292
|
+
- `BASE`
|
|
293
|
+
- `GRAY_SCALE`
|
|
294
|
+
- `CRITICAL`
|
|
295
|
+
- `HIPPIE_BLUE`
|
|
296
|
+
- `TEAL`
|
|
297
|
+
|
|
298
|
+
Exemplo:
|
|
299
|
+
|
|
300
|
+
```ts
|
|
301
|
+
const bg = Colors.BASE.TEAL;
|
|
302
|
+
const text = Colors.GRAY_SCALE.WHITE;
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Dica para LLM:
|
|
306
|
+
- Para estilo inline/CSS-in-JS, os campos `*_RGB` ajudam em opacidade (`rgba(...)`).
|
|
307
|
+
|
|
308
|
+
## EDLQueryBuilder
|
|
309
|
+
|
|
310
|
+
Builder para filtros EDL com operadores de comparacao, logicos e agrupamento.
|
|
311
|
+
|
|
312
|
+
Exemplo:
|
|
313
|
+
|
|
314
|
+
```ts
|
|
315
|
+
const query = new EDLQueryBuilder()
|
|
316
|
+
.eq('status', 'ATIVO')
|
|
317
|
+
.and()
|
|
318
|
+
.ge('createdAt', '2026-01-01')
|
|
319
|
+
.and()
|
|
320
|
+
.containing('nome', 'soja')
|
|
321
|
+
.build();
|
|
322
|
+
|
|
323
|
+
// status eq upper('ATIVO') AND createdAt ge '2026-01-01' AND containing(upper(trim(nome)), upper(trim(upper('soja'))))
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Dica para LLM:
|
|
327
|
+
- Use `group(...)` para controle explicito de precedencia logica em filtros complexos.
|
|
328
|
+
|
|
329
|
+
## Boas praticas de geracao por LLM
|
|
330
|
+
|
|
331
|
+
- Evite duplicar validacoes existentes; reaproveite utilitarios.
|
|
332
|
+
- Em exemplos de dominio agro, priorize unidades e formatacoes brasileiras (`pt-BR`).
|
|
333
|
+
- Ao gerar codigo, prefira metodos pequenos com combinacao de utilitarios ao inves de reimplementar algoritmos.
|
|
334
|
+
- Em PRs, inclua testes para casos de borda (nulo, vazio, unidade invalida, string malformada).
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Guias Da Biblioteca
|
|
2
|
+
|
|
3
|
+
- Guia do componente de lista de produtores em modal:
|
|
4
|
+
- [components/producer-list-modal/README.md](./components/producer-list-modal/README.md)
|
|
5
|
+
- Instrucoes gerais para utilitarios de `common`:
|
|
6
|
+
- [common/COMMON_LLM_INSTRUCTIONS.md](./common/COMMON_LLM_INSTRUCTIONS.md)
|
|
7
|
+
- Guia dos componentes modais de notas fiscais PJ (`ModalInvoicePj`):
|
|
8
|
+
- [components/modal-invoice-pj/README.md](./components/modal-invoice-pj/README.md)
|
package/components/index.d.ts
CHANGED
package/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.component.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DatePipe } from '@angular/common';
|
|
2
|
+
import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
3
|
+
import { LocaleService } from '@seniorsistemas/angular-components/locale';
|
|
4
|
+
import { Column } from '@seniorsistemas/angular-components/table';
|
|
5
|
+
import { MessageService } from 'primeng/api';
|
|
6
|
+
import { KilogramPipe } from '../../../pipe/kilogram';
|
|
7
|
+
import { LibTranslationService } from '../../../services/lib-translation.service';
|
|
8
|
+
import { ModalInvoicePjBase } from '../modal-invoice-pj-base.class';
|
|
9
|
+
import { AgroInvoiceService } from '../services/agro-invoice';
|
|
10
|
+
import { IInvoiceLookupResponse } from '../services/agro-invoice/interfaces';
|
|
11
|
+
import { ModalInvoicePjForContractsOptions } from './modal-contracts-options.interface';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export declare class ModalInvoicePjForContractsComponent extends ModalInvoicePjBase implements OnInit, OnDestroy {
|
|
14
|
+
translate: LibTranslationService;
|
|
15
|
+
invoiceService: AgroInvoiceService;
|
|
16
|
+
localeService: LocaleService;
|
|
17
|
+
kilogramPipe: KilogramPipe;
|
|
18
|
+
messageService: MessageService;
|
|
19
|
+
datePipe: DatePipe;
|
|
20
|
+
options: ModalInvoicePjForContractsOptions;
|
|
21
|
+
whenSelectInvoices: EventEmitter<any[]>;
|
|
22
|
+
gridColumns: Partial<Column & {
|
|
23
|
+
sortable?: boolean;
|
|
24
|
+
}>[];
|
|
25
|
+
constructor(translate: LibTranslationService, invoiceService: AgroInvoiceService, localeService: LocaleService, kilogramPipe: KilogramPipe, messageService: MessageService, datePipe: DatePipe);
|
|
26
|
+
ngOnInit(): void;
|
|
27
|
+
defineGridColumns(): void;
|
|
28
|
+
adaptResult(result: IInvoiceLookupResponse): Promise<any>;
|
|
29
|
+
beforeAdd(selectedInvoices: any): Promise<any>;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ModalInvoicePjForContractsComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ModalInvoicePjForContractsComponent, "s-modal-invoice-pj-for-contracts", never, { "options": { "alias": "options"; "required": false; }; }, { "whenSelectInvoices": "whenSelectInvoices"; }, never, never, false, never>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./modal-invoice-pj-for-contracts.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
import * as i3 from "../../../lib-translation.module";
|
|
5
|
+
import * as i4 from "@seniorsistemas/angular-components/button";
|
|
6
|
+
import * as i5 from "primeng/api";
|
|
7
|
+
import * as i6 from "primeng/table";
|
|
8
|
+
import * as i7 from "../../../pipe/kilogram/kilogram.module";
|
|
9
|
+
import * as i8 from "@seniorsistemas/angular-components/empty-state";
|
|
10
|
+
import * as i9 from "@seniorsistemas/angular-components/bignumber-input";
|
|
11
|
+
import * as i10 from "primeng/inputtext";
|
|
12
|
+
import * as i11 from "@angular/forms";
|
|
13
|
+
import * as i12 from "../services/agro-invoice/agro-invoice.module";
|
|
14
|
+
import * as i13 from "primeng/dialog";
|
|
15
|
+
import * as i14 from "@seniorsistemas/angular-components/table";
|
|
16
|
+
import * as i15 from "@seniorsistemas/angular-components/loading-state";
|
|
17
|
+
import * as i16 from "primeng/messages";
|
|
18
|
+
import * as i17 from "@angular/common/http";
|
|
19
|
+
import * as i18 from "primeng/confirmdialog";
|
|
20
|
+
import * as i19 from "@seniorsistemas/angular-components/table-header";
|
|
21
|
+
import * as i20 from "@seniorsistemas/angular-components/locale";
|
|
22
|
+
export declare class ModalInvoicePjForContractsModule {
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ModalInvoicePjForContractsModule, never>;
|
|
24
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ModalInvoicePjForContractsModule, [typeof i1.ModalInvoicePjForContractsComponent], [typeof i2.CommonModule, typeof i3.LibTranslationModule, typeof i4.ButtonModule, typeof i5.SharedModule, typeof i6.TableModule, typeof i7.KilogramModule, typeof i8.EmptyStateModule, typeof i9.BignumberInputModule, typeof i10.InputTextModule, typeof i11.ReactiveFormsModule, typeof i12.AgroInvoiceModule, typeof i13.DialogModule, typeof i14.TableModule, typeof i15.LoadingStateModule, typeof i16.MessagesModule, typeof i17.HttpClientModule, typeof i18.ConfirmDialogModule, typeof i19.TableHeaderCheckboxModule, typeof i20.LocaleModule], [typeof i1.ModalInvoicePjForContractsComponent]>;
|
|
25
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ModalInvoicePjForContractsModule>;
|
|
26
|
+
}
|
|
@@ -4,6 +4,9 @@ export { ModalInvoicePjForTransferComponent } from './for-transfer/modal-invoice
|
|
|
4
4
|
export { ModalInvoicePjForTransferModule } from './for-transfer/modal-invoice-pj-for-transfer.module';
|
|
5
5
|
export { ModalInvoicePjForFixationComponent } from './for-fixation/modal-invoice-pj-for-fixation.component';
|
|
6
6
|
export { ModalInvoicePjForFixationModule } from './for-fixation/modal-invoice-pj-for-fixation.module';
|
|
7
|
+
export { ModalInvoicePjForContractsComponent } from './for-contracts/modal-invoice-pj-for-contracts.component';
|
|
8
|
+
export { ModalInvoicePjForContractsModule } from './for-contracts/modal-invoice-pj-for-contracts.module';
|
|
7
9
|
export type { ModalInvoicePjOptions } from './modal-invoice-pj-options.interface';
|
|
10
|
+
export type { ModalInvoicePjForContractsOptions } from './for-contracts/modal-contracts-options.interface';
|
|
8
11
|
export type { ModalInvoicePjForFixationOptions } from './for-fixation/modal-fixation-options.interface';
|
|
9
12
|
export { AgroInvoiceModule, AgroInvoiceService } from './services/agro-invoice/index';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
|
|
3
3
|
import { FormControl } from '@angular/forms';
|
|
4
4
|
import { LocaleService } from '@seniorsistemas/angular-components/locale';
|
|
5
5
|
import { Column } from '@seniorsistemas/angular-components/table';
|
|
@@ -13,7 +13,7 @@ import { ModalInvoicePjOptions } from './modal-invoice-pj-options.interface';
|
|
|
13
13
|
import { AgroInvoiceService } from './services/agro-invoice/agro-invoice.service';
|
|
14
14
|
import { IInvoiceLookupResponse } from './services/agro-invoice/interfaces';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
|
-
export declare abstract class ModalInvoicePjBase {
|
|
16
|
+
export declare abstract class ModalInvoicePjBase implements OnInit, OnDestroy {
|
|
17
17
|
protected readonly translate: LibTranslationService;
|
|
18
18
|
protected readonly invoiceService: AgroInvoiceService;
|
|
19
19
|
protected readonly localeService: LocaleService;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
|
|
2
|
-
import {
|
|
2
|
+
import { LocalizedDatePipe } from '@seniorsistemas/angular-components/locale';
|
|
3
3
|
import { MessageService } from 'primeng/api';
|
|
4
4
|
import { LibTranslationModule } from '../../lib-translation.module';
|
|
5
5
|
import { KilogramPipe } from '../../pipe/kilogram';
|
|
6
|
-
export declare const imports: (typeof LibTranslationModule
|
|
6
|
+
export declare const imports: (typeof LibTranslationModule)[];
|
|
7
7
|
export declare const providers: (typeof DecimalPipe | typeof CurrencyPipe | typeof DatePipe | typeof LocalizedDatePipe | typeof KilogramPipe | typeof MessageService)[];
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "@angular/common/http";
|
|
3
|
-
import * as i2 from "@seniorsistemas/platform-components";
|
|
4
3
|
export declare class AgroInvoiceModule {
|
|
5
4
|
static ɵfac: i0.ɵɵFactoryDeclaration<AgroInvoiceModule, never>;
|
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<AgroInvoiceModule, never, [typeof i1.HttpClientModule
|
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AgroInvoiceModule, never, [typeof i1.HttpClientModule], never>;
|
|
7
6
|
static ɵinj: i0.ɵɵInjectorDeclaration<AgroInvoiceModule>;
|
|
8
7
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { ProducerListItem, ProducerListModalData } from "./producer-list-modal-data.interface";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ProducerListModalComponent {
|
|
5
|
+
visible: boolean;
|
|
6
|
+
data: ProducerListModalData;
|
|
7
|
+
visibleChange: EventEmitter<boolean>;
|
|
8
|
+
closed: EventEmitter<void>;
|
|
9
|
+
getDisplayName(name: string): string;
|
|
10
|
+
trackByProducerId(_index: number, producer: ProducerListItem): string;
|
|
11
|
+
handleClose(): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProducerListModalComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProducerListModalComponent, "s-producer-list-modal", never, { "visible": { "alias": "visible"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "visibleChange": "visibleChange"; "closed": "closed"; }, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./producer-list-modal.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
import * as i3 from "primeng/dialog";
|
|
5
|
+
export declare class ProducerListModalModule {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProducerListModalModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ProducerListModalModule, [typeof i1.ProducerListModalComponent], [typeof i2.CommonModule, typeof i3.DialogModule], [typeof i1.ProducerListModalComponent]>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ProducerListModalModule>;
|
|
9
|
+
}
|
|
@@ -106,12 +106,12 @@ export class CancelEventDialogComponent {
|
|
|
106
106
|
this.ref.close();
|
|
107
107
|
}
|
|
108
108
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CancelEventDialogComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DynamicDialogConfig }, { token: i2.DynamicDialogRef }, { token: i3.LibTranslationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CancelEventDialogComponent, selector: "s-cancel-event-dialog", inputs: { cancelEventDialogConfig: "cancelEventDialogConfig" }, ngImport: i0, template: "<div\r\n class=\"content\"\r\n *sLoadingState=\"loading\"\r\n>\r\n <div class=\"top\">\r\n <div\r\n *ngIf=\"cancelEventDialogConfig
|
|
109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CancelEventDialogComponent, selector: "s-cancel-event-dialog", inputs: { cancelEventDialogConfig: "cancelEventDialogConfig" }, ngImport: i0, template: "<div\r\n class=\"content\"\r\n *sLoadingState=\"loading\"\r\n>\r\n <div class=\"top\">\r\n <div\r\n *ngIf=\"cancelEventDialogConfig.message\"\r\n class=\"message-container\"\r\n >\r\n <span>{{ cancelEventDialogConfig.message }}</span>\r\n </div>\r\n <div\r\n class=\"form-container\"\r\n *ngIf=\"cancelEventDialogConfig.withReason\"\r\n >\r\n <s-dynamic-form\r\n [fields]=\"formFields\"\r\n [form]=\"formGroup\"\r\n [errorMessages]=\"translations\"\r\n >\r\n </s-dynamic-form>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <s-button\r\n [priority]=\"'secondary'\"\r\n (keydown.enter)=\"handleCancelClick()\"\r\n label=\"{{ 'agro.angular_components.no' | libTranslate }}\"\r\n (click)=\"handleCancelClick()\"\r\n ></s-button>\r\n <s-button\r\n [priority]=\"'primary'\"\r\n (keydown.enter)=\"handleConfirmClick()\"\r\n label=\"{{ 'agro.angular_components.yes' | libTranslate }}\"\r\n (click)=\"handleConfirmClick()\"\r\n ></s-button>\r\n </div>\r\n</div>\r\n", styles: [".message-container{padding:.5rem}.footer{display:flex;width:100%;flex-direction:row;justify-content:flex-end;padding:.5rem}.content{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.content.loading{min-height:150px;display:flex;width:100%}.content .top{display:flex;flex-direction:column;justify-content:space-between}@media screen and (max-width: 760px){.content{justify-content:space-between}.content .top{display:flex;flex-direction:column;justify-content:space-between}}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }, { kind: "component", type: i6.DynamicFormComponent, selector: "s-dynamic-form", inputs: ["id", "configs", "fields", "form", "errorMessages"] }, { kind: "directive", type: i7.LoadingStateDirective, selector: "[sLoadingState]", inputs: ["sLoadingState"] }, { kind: "pipe", type: i8.LibTranslatePipe, name: "libTranslate" }] });
|
|
110
110
|
}
|
|
111
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CancelEventDialogComponent, decorators: [{
|
|
112
112
|
type: Component,
|
|
113
|
-
args: [{ selector: "s-cancel-event-dialog", template: "<div\r\n class=\"content\"\r\n *sLoadingState=\"loading\"\r\n>\r\n <div class=\"top\">\r\n <div\r\n *ngIf=\"cancelEventDialogConfig
|
|
113
|
+
args: [{ selector: "s-cancel-event-dialog", template: "<div\r\n class=\"content\"\r\n *sLoadingState=\"loading\"\r\n>\r\n <div class=\"top\">\r\n <div\r\n *ngIf=\"cancelEventDialogConfig.message\"\r\n class=\"message-container\"\r\n >\r\n <span>{{ cancelEventDialogConfig.message }}</span>\r\n </div>\r\n <div\r\n class=\"form-container\"\r\n *ngIf=\"cancelEventDialogConfig.withReason\"\r\n >\r\n <s-dynamic-form\r\n [fields]=\"formFields\"\r\n [form]=\"formGroup\"\r\n [errorMessages]=\"translations\"\r\n >\r\n </s-dynamic-form>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <s-button\r\n [priority]=\"'secondary'\"\r\n (keydown.enter)=\"handleCancelClick()\"\r\n label=\"{{ 'agro.angular_components.no' | libTranslate }}\"\r\n (click)=\"handleCancelClick()\"\r\n ></s-button>\r\n <s-button\r\n [priority]=\"'primary'\"\r\n (keydown.enter)=\"handleConfirmClick()\"\r\n label=\"{{ 'agro.angular_components.yes' | libTranslate }}\"\r\n (click)=\"handleConfirmClick()\"\r\n ></s-button>\r\n </div>\r\n</div>\r\n", styles: [".message-container{padding:.5rem}.footer{display:flex;width:100%;flex-direction:row;justify-content:flex-end;padding:.5rem}.content{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.content.loading{min-height:150px;display:flex;width:100%}.content .top{display:flex;flex-direction:column;justify-content:space-between}@media screen and (max-width: 760px){.content{justify-content:space-between}.content .top{display:flex;flex-direction:column;justify-content:space-between}}\n"] }]
|
|
114
114
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DynamicDialogConfig }, { type: i2.DynamicDialogRef }, { type: i3.LibTranslationService }], propDecorators: { cancelEventDialogConfig: [{
|
|
115
115
|
type: Input
|
|
116
116
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLWV2ZW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvY2FuY2VsLWV2ZW50LWRpYWxvZy9jYW5jZWwtZXZlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQWUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8sMEJBQTBCO0lBdUJkO0lBQ1Y7SUFDQTtJQUNVO0lBdEJkLHVCQUF1QixDQUEyQjtJQUNsRCxTQUFTLENBQWE7SUFDdEIsVUFBVSxDQUFTO0lBQ25CLFVBQVUsQ0FBVTtJQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGVBQWUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLFlBQVksQ0FBTTtJQUVSLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzlCLE1BQU0sR0FBRztRQUN0QixFQUFFLEVBQUUsRUFBRTtRQUNOLEVBQUUsRUFBRSxZQUFZLENBQUMsTUFBTTtRQUN2QixFQUFFLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDdkIsRUFBRSxFQUFFLFlBQVksQ0FBQyxNQUFNO0tBQzFCLENBQUM7SUFJRixZQUNx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Qix1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ2FuY2VsRXZlbnREaWFsb2dDb25maWcgfSBmcm9tIFwiLi9jYW5jZWwtZXZlbnQtZGlhbG9nLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBR1JPX05VTUJFUlMgfSBmcm9tIFwiLi4vLi4vZW51bXMvYWdyby1udW1iZXJzLmVudW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwicy1jYW5jZWwtZXZlbnQtZGlhbG9nXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2NhbmNlbC1ldmVudC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9jYW5jZWwtZXZlbnQtZGlhbG9nLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FuY2VsRXZlbnREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FuY2VsRXZlbnREaWFsb2dDb25maWchOiBDYW5jZWxFdmVudERpYWxvZ0NvbmZpZztcclxuICAgIHB1YmxpYyBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgZm9ybUZpZWxkcyE6IGFueVtdO1xyXG4gICAgcHVibGljIHRyYW5zZmVySWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlYXNvbk1pbkxlbmd0aCA9IEFHUk9fTlVNQkVSUy5GSUZURUVOO1xyXG4gICAgcHVibGljIHRyYW5zbGF0aW9uczogYW55O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNwU2l6ZSA9IHtcclxuICAgICAgICBzbTogMTIsXHJcbiAgICAgICAgbWQ6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICAgICAgbGc6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICAgICAgeGw6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgICAgICBwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUdyb3VwKCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ29uZmlnRGlhbG9nKCk7XHJcbiAgICAgICAgdGhpcy5zZXRUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dChudWxsKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEZvcm1Hcm91cCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICByZWFzb246IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLnJlYXNvbk1pbkxlbmd0aCldKV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRGb3JtRmllbGRzKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUZpZWxkcyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJyZWFzb25cIixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsX3JlYXNvblwiKSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuY3BTaXplLFxyXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiBBR1JPX05VTUJFUlMuT05FX0hVTkRSRUQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERhdGFDb25maWdEaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZyA9IHRoaXMuY29uZmlnLmRhdGE/LmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnID8/IHt9IGFzIENhbmNlbEV2ZW50RGlhbG9nQ29uZmlnO1xyXG4gICAgICAgIHRoaXMucmVhc29uTWluTGVuZ3RoID0gdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZz8ucmVhc29uTWluTGVuZ3RoID8/IEFHUk9fTlVNQkVSUy5GSUZURUVOO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VHJhbnNsYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgICAgICBtaW46IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9taW5fdmFsdWVcIiksXHJcbiAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX21heF92YWx1ZVwiKSxcclxuICAgICAgICAgICAgbWlubGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbWluX2xlbmd0aFwiLCB7IHZhbG9yOiB0aGlzLnJlYXNvbk1pbkxlbmd0aCB9KSxcclxuICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbWF4X2xlbmd0aF90cmFuc2Zlcl9jb2RlXCIpLFxyXG4gICAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfaW52YWxpZFwiKSxcclxuICAgICAgICAgICAgRm9ybURhdGVFcnJvcl9kYXRhMTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmluaXRpYWxfaW52YWxpZF9kYXRlXCIpLFxyXG4gICAgICAgICAgICBGb3JtRGF0ZUVycm9yX2RhdGEyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZW5kX2ludmFsaWRfZGF0ZVwiKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUNvbmZpcm1DbGljaygpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCAmJiB0aGlzLmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy53aXRoUmVhc29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZWFzb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoXCJyZWFzb25cIik/LnZhbHVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZy5jYW5jZWxGdW5jdGlvbihyZWFzb24pO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLmNsb3NlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoY29udHJvbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FuY2VsQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcclxuICAgIH1cclxufSIsIjxkaXZcclxuICAgIGNsYXNzPVwiY29udGVudFwiXHJcbiAgICAqc0xvYWRpbmdTdGF0ZT1cImxvYWRpbmdcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9wXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy5tZXNzYWdlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjYW5jZWxFdmVudERpYWxvZ0NvbmZpZz8ubWVzc2FnZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy53aXRoUmVhc29uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgICAgICAgICAgW2ZpZWxkc109XCJmb3JtRmllbGRzXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlc109XCJ0cmFuc2xhdGlvbnNcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvcy1keW5hbWljLWZvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlQ2FuY2VsQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDYW5jZWxDbGljaygpXCJcclxuICAgICAgICA+PC9zLWJ1dHRvbj5cclxuICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZUNvbmZpcm1DbGljaygpXCJcclxuICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMueWVzJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDb25maXJtQ2xpY2soKVwiXHJcbiAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLWV2ZW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29tcG9uZW50cy9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbXBvbmVudHMvY2FuY2VsLWV2ZW50LWRpYWxvZy9jYW5jZWwtZXZlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQWUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8sMEJBQTBCO0lBdUJkO0lBQ1Y7SUFDQTtJQUNVO0lBdEJkLHVCQUF1QixDQUEyQjtJQUNsRCxTQUFTLENBQWE7SUFDdEIsVUFBVSxDQUFTO0lBQ25CLFVBQVUsQ0FBVTtJQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGVBQWUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLFlBQVksQ0FBTTtJQUVSLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzlCLE1BQU0sR0FBRztRQUN0QixFQUFFLEVBQUUsRUFBRTtRQUNOLEVBQUUsRUFBRSxZQUFZLENBQUMsTUFBTTtRQUN2QixFQUFFLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDdkIsRUFBRSxFQUFFLFlBQVksQ0FBQyxNQUFNO0tBQzFCLENBQUM7SUFJRixZQUNx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Qix1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tIFwicHJpbWVuZy9keW5hbWljZGlhbG9nXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbGliLXRyYW5zbGF0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ2FuY2VsRXZlbnREaWFsb2dDb25maWcgfSBmcm9tIFwiLi9jYW5jZWwtZXZlbnQtZGlhbG9nLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBR1JPX05VTUJFUlMgfSBmcm9tIFwiLi4vLi4vZW51bXMvYWdyby1udW1iZXJzLmVudW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwicy1jYW5jZWwtZXZlbnQtZGlhbG9nXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2NhbmNlbC1ldmVudC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9jYW5jZWwtZXZlbnQtZGlhbG9nLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FuY2VsRXZlbnREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FuY2VsRXZlbnREaWFsb2dDb25maWchOiBDYW5jZWxFdmVudERpYWxvZ0NvbmZpZztcclxuICAgIHB1YmxpYyBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgZm9ybUZpZWxkcyE6IGFueVtdO1xyXG4gICAgcHVibGljIHRyYW5zZmVySWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlYXNvbk1pbkxlbmd0aCA9IEFHUk9fTlVNQkVSUy5GSUZURUVOO1xyXG4gICAgcHVibGljIHRyYW5zbGF0aW9uczogYW55O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNwU2l6ZSA9IHtcclxuICAgICAgICBzbTogMTIsXHJcbiAgICAgICAgbWQ6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICAgICAgbGc6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICAgICAgeGw6IEFHUk9fTlVNQkVSUy5UV0VMVkUsXHJcbiAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcclxuICAgICAgICBwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUdyb3VwKCk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ29uZmlnRGlhbG9nKCk7XHJcbiAgICAgICAgdGhpcy5zZXRUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dChudWxsKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEZvcm1Hcm91cCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICByZWFzb246IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLnJlYXNvbk1pbkxlbmd0aCldKV0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRGb3JtRmllbGRzKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybUZpZWxkcyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJyZWFzb25cIixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsX3JlYXNvblwiKSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuY3BTaXplLFxyXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiBBR1JPX05VTUJFUlMuT05FX0hVTkRSRUQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERhdGFDb25maWdEaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZyA9IHRoaXMuY29uZmlnLmRhdGE/LmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnID8/IHt9IGFzIENhbmNlbEV2ZW50RGlhbG9nQ29uZmlnO1xyXG4gICAgICAgIHRoaXMucmVhc29uTWluTGVuZ3RoID0gdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZz8ucmVhc29uTWluTGVuZ3RoID8/IEFHUk9fTlVNQkVSUy5GSUZURUVOO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VHJhbnNsYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcXVpcmVkXCIpLFxyXG4gICAgICAgICAgICBtaW46IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9taW5fdmFsdWVcIiksXHJcbiAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX21heF92YWx1ZVwiKSxcclxuICAgICAgICAgICAgbWlubGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbWluX2xlbmd0aFwiLCB7IHZhbG9yOiB0aGlzLnJlYXNvbk1pbkxlbmd0aCB9KSxcclxuICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfbWF4X2xlbmd0aF90cmFuc2Zlcl9jb2RlXCIpLFxyXG4gICAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXJyb3JfaW52YWxpZFwiKSxcclxuICAgICAgICAgICAgRm9ybURhdGVFcnJvcl9kYXRhMTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmluaXRpYWxfaW52YWxpZF9kYXRlXCIpLFxyXG4gICAgICAgICAgICBGb3JtRGF0ZUVycm9yX2RhdGEyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZW5kX2ludmFsaWRfZGF0ZVwiKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUNvbmZpcm1DbGljaygpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCAmJiB0aGlzLmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy53aXRoUmVhc29uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZWFzb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoXCJyZWFzb25cIik/LnZhbHVlO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZy5jYW5jZWxGdW5jdGlvbihyZWFzb24pO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLmNsb3NlKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVBbGxGb3JtRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoY29udHJvbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FuY2VsQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcclxuICAgIH1cclxufSIsIjxkaXZcclxuICAgIGNsYXNzPVwiY29udGVudFwiXHJcbiAgICAqc0xvYWRpbmdTdGF0ZT1cImxvYWRpbmdcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9wXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnLm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lc3NhZ2UtY29udGFpbmVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnLm1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjYW5jZWxFdmVudERpYWxvZ0NvbmZpZy53aXRoUmVhc29uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzLWR5bmFtaWMtZm9ybVxyXG4gICAgICAgICAgICAgICAgW2ZpZWxkc109XCJmb3JtRmllbGRzXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlc109XCJ0cmFuc2xhdGlvbnNcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvcy1keW5hbWljLWZvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlQ2FuY2VsQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIGxhYmVsPVwie3sgJ2Fncm8uYW5ndWxhcl9jb21wb25lbnRzLm5vJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDYW5jZWxDbGljaygpXCJcclxuICAgICAgICA+PC9zLWJ1dHRvbj5cclxuICAgICAgICA8cy1idXR0b25cclxuICAgICAgICAgICAgW3ByaW9yaXR5XT1cIidwcmltYXJ5J1wiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZUNvbmZpcm1DbGljaygpXCJcclxuICAgICAgICAgICAgbGFiZWw9XCJ7eyAnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMueWVzJyB8IGxpYlRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDb25maXJtQ2xpY2soKVwiXHJcbiAgICAgICAgPjwvcy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|